Trong bài viết này, chúng tôi tập trung vào việc tạo ra một bản phân phối Linux tối giản bằng cách sử dụng dự án Yocto trên nền tảng Ubuntu. Dự án Yocto rất nổi tiếng trong thế giới Linux nhúng vì tính linh hoạt và dễ sử dụng của nó. Mục đích của dự án Yocto là tạo ra một bản phân phối Linux cho các nhà sản xuất phần cứng và phần mềm nhúng. Một bản phân phối Linux tối thiểu mới sẽ được tạo cho qemuas (qemu là trình giả lập phần mềm cơ bản) là máy mục tiêu và chúng tôi sẽ chạy nó trong qemu.
Trong hướng dẫn này, bản phát hành ổn định "morty" của poky được sao chép trên hệ thống.
Vào thư mục "poky" và chạy lệnh sau để thiết lập/xuất một số biến cho quá trình phát triển yocto.
Như được hiển thị bên dưới, sau khi chạy tập lệnh môi trường xây dựng nhúng mở (oe), vị trí đường dẫn trong thiết bị đầu cuối sẽ được thay đổi thành thư mục "build" để cấu hình và biên dịch bản phân phối mới thêm.
Ảnh chụp màn hình ở trên cho thấy tệp "local.conf" được tạo bên trong thư mục "conf". Đây là tệp cấu hình cho yocto, tệp này chỉ định chi tiết về máy mục tiêu và SDK cho kiến trúc mong muốn, v.v.
Như được hiển thị bên dưới, hãy đặt máy mục tiêu "qemux86-64".
Bỏ chú thích các tham số sau trong tệp "local.conf" như được hiển thị trong ảnh chụp màn hình.
Như được hiển thị bên dưới, hãy đặt mật khẩu trống cho Yocto dựa trên Linux và bao gồm các tham số sau trong tệp local.conf. Nếu không, người dùng sẽ không thể đăng nhập vào bản phân phối mới.
Chúng tôi không sử dụng bất kỳ công cụ GUI nào như toaster (hob không còn được hỗ trợ nữa) để tạo HĐH Linux.
Điều quan trọng là phải chạy lệnh trên với tư cách là người dùng Linux bình thường chứ không phải người dùng root. Như được hiển thị trong ảnh chụp màn hình sau, một lỗi được tạo ra khi bạn chạy lệnh bitbake với tư cách là người dùng root.
Một lần nữa, hãy chạy tập lệnh xuất biến môi trường (oe-init-build-env) và chạy lại lệnh tương tự để bắt đầu quá trình tải xuống và biên dịch.
Như được hiển thị bên dưới, bước đầu tiên của tiện ích tập lệnh xây dựng là phân tích cú pháp công thức.
Ảnh chụp màn hình sau đây cho thấy bước phân tích cú pháp của tập lệnh xây dựng đã hoàn tất. Nó cũng hiển thị thông tin chi tiết về hệ thống xây dựng mà bản phân phối dựa trên yocto mới sẽ được tạo.
Sau khi tải xuống SDK và các thư viện cần thiết, bước tiếp theo là tải xuống và biên dịch các gói. Ảnh chụp màn hình sau đây cho thấy nhiệm vụ cho bản phân phối mới. Bước này sẽ mất 2-3 giờ vì trước tiên, nó tải xuống các gói cần thiết rồi biên dịch cho bản phân phối Linux mới.
Ảnh chụp màn hình sau đây cho thấy danh sách tác vụ đã hoàn tất.
Các hình ảnh mới đã biên dịch cho loại máy đích "qemux86-64" nằm trong đường dẫn "build/tmp/deploy/images/qemux86-64" như hiển thị bên dưới.
Như hiển thị bên dưới, lệnh trên sẽ tạo ra lỗi nếu chạy trong Putty.
Lệnh trên lại được chạy bên trong thiết bị đầu cuối thông qua rdp trên nền tảng Ubuntu.
Một màn hình khác được mở cho trình giả lập qemu cho bản phân phối Linux mới dựa trên yocto.
Màn hình đăng nhập của bản phân phối mới được hiển thị bên dưới, màn hình này cũng hiển thị phiên bản tham chiếu của dự án theyocto. Tên người dùng mặc định là root và mật khẩu để trống.
Cuối cùng, hãy đăng nhập vào bản phân phối mới bằng tên người dùng root và mật khẩu để trống. Như được hiển thị trong ảnh chụp màn hình sau, các lệnh cơ bản (date, ifconfig và uname) được chạy trong phiên bản Linux tối thiểu.
Mục đích của bài viết này là để hiểu quy trình tạo bản phân phối Linux mới bằng dự án yocto.
Điều kiện tiên quyết cho máy phát triển
- Ít nhất 4 - 6 GB RAM.
- Hệ điều hành Ubuntu mới nhất (16.04 LTS trong trường hợp này).
- Ít nhất 60-80 GB dung lượng trống trên đĩa.
- Cài đặt các gói sau trước khi tạo bản phân phối Linux mới.
- Tải xuống nhánh ổn định Yocto mới nhất (Poky là môi trường phát triển tối thiểu).
Mã:
apt-get update
Mã:
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
Như được hiển thị bên dưới, cần có kích thước gần 1 GB để cài đặt các gói phát triển cần thiết.Trong hướng dẫn này, bản phát hành ổn định "morty" của poky được sao chép trên hệ thống.
Mã:
git clone -b morty git://git.yoctoproject.org/poky.git
Vào thư mục "poky" và chạy lệnh sau để thiết lập/xuất một số biến cho quá trình phát triển yocto.
Mã:
source oe-init-build-env
Ảnh chụp màn hình ở trên cho thấy tệp "local.conf" được tạo bên trong thư mục "conf". Đây là tệp cấu hình cho yocto, tệp này chỉ định chi tiết về máy mục tiêu và SDK cho kiến trúc mong muốn, v.v.
Như được hiển thị bên dưới, hãy đặt máy mục tiêu "qemux86-64".
Bỏ chú thích các tham số sau trong tệp "local.conf" như được hiển thị trong ảnh chụp màn hình.
Mã:
DL_DIR ?= "${TOPDIR}/downloads"
Mã:
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
Mã:
TMPDIR ?= "${TOPDIR}/tmp"
Mã:
PACKAGE_CLASSES ?= "package_rpm"
Mã:
SDKMACHINE ?= "i686"
Như được hiển thị bên dưới, hãy đặt mật khẩu trống cho Yocto dựa trên Linux và bao gồm các tham số sau trong tệp local.conf. Nếu không, người dùng sẽ không thể đăng nhập vào bản phân phối mới.
Mã:
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
Chúng tôi không sử dụng bất kỳ công cụ GUI nào như toaster (hob không còn được hỗ trợ nữa) để tạo HĐH Linux.
Quy trình biên dịch và xây dựng Yocto
Bây giờ hãy chạy lệnh sau của tiện ích bitbake để bắt đầu tải xuống và biên dịch các gói cho máy mục tiêu đã chọn.
Mã:
bitbake core-image-minimal
Điều quan trọng là phải chạy lệnh trên với tư cách là người dùng Linux bình thường chứ không phải người dùng root. Như được hiển thị trong ảnh chụp màn hình sau, một lỗi được tạo ra khi bạn chạy lệnh bitbake với tư cách là người dùng root.
Một lần nữa, hãy chạy tập lệnh xuất biến môi trường (oe-init-build-env) và chạy lại lệnh tương tự để bắt đầu quá trình tải xuống và biên dịch.
Như được hiển thị bên dưới, bước đầu tiên của tiện ích tập lệnh xây dựng là phân tích cú pháp công thức.
Ảnh chụp màn hình sau đây cho thấy bước phân tích cú pháp của tập lệnh xây dựng đã hoàn tất. Nó cũng hiển thị thông tin chi tiết về hệ thống xây dựng mà bản phân phối dựa trên yocto mới sẽ được tạo.
Sau khi tải xuống SDK và các thư viện cần thiết, bước tiếp theo là tải xuống và biên dịch các gói. Ảnh chụp màn hình sau đây cho thấy nhiệm vụ cho bản phân phối mới. Bước này sẽ mất 2-3 giờ vì trước tiên, nó tải xuống các gói cần thiết rồi biên dịch cho bản phân phối Linux mới.
Ảnh chụp màn hình sau đây cho thấy danh sách tác vụ đã hoàn tất.
Các hình ảnh mới đã biên dịch cho loại máy đích "qemux86-64" nằm trong đường dẫn "build/tmp/deploy/images/qemux86-64" như hiển thị bên dưới.
Như hiển thị bên dưới, lệnh trên sẽ tạo ra lỗi nếu chạy trong Putty.
Lệnh trên lại được chạy bên trong thiết bị đầu cuối thông qua rdp trên nền tảng Ubuntu.
Một màn hình khác được mở cho trình giả lập qemu cho bản phân phối Linux mới dựa trên yocto.
Màn hình đăng nhập của bản phân phối mới được hiển thị bên dưới, màn hình này cũng hiển thị phiên bản tham chiếu của dự án theyocto. Tên người dùng mặc định là root và mật khẩu để trống.
Cuối cùng, hãy đăng nhập vào bản phân phối mới bằng tên người dùng root và mật khẩu để trống. Như được hiển thị trong ảnh chụp màn hình sau, các lệnh cơ bản (date, ifconfig và uname) được chạy trong phiên bản Linux tối thiểu.
Mục đích của bài viết này là để hiểu quy trình tạo bản phân phối Linux mới bằng dự án yocto.