Các thành phần trong file iso của Linux.

File iso của Linux có thể được hiểu là file ảnh của toàn bộ hệ điều hành. Loại file này nếu dùng để burn ra đĩa cd thì sẽ có đuôi là iso, còn nếu dùng để flash vào sdcard thì thường sẽ có đuôi là .img. Sau khi flash file image của Linux vào thẻ sdcard thì thẻ nhớ đó có thể sử dụng để boot hệ điều hành lên trên các board nhúng.

 Vậy bên trong file ảnh đấy sẽ có những thành phần gì?

  • Uboot.
    Đây là thành phần đầu tiên của hệ thống. Uboot sẽ được build ra file uboot.img từ source code của Uboot. Về cơ bản thì uboot.img là 1 chương trình vi điều khiển, được boot rom (Chương trình bên trong chip, được nạp vào trong quá trình sản xuất và không thể ghi lại được) load lên trong quá trình khởi động. Thông thường, uboot sẽ được flash vào sector đầu tiên của sdcard – địa chỉ 0.
  • Linux kernel.
    Đây là thành phần được chạy thứ 2 của hệ thống. Linux kernel image được build ra từ source code của Linux Kernel và thường có tên là Image hoặc uImage. Uboot sẽ load file Linux kernel image dựa vào biến môi trường chứa đường dẫn đến file kernel image nằm ở trên thẻ nhớ.
  • Ramdisk – mini root file system.
    Ramdisk sẽ bao gồm 1 hệ thống cây thư mục chứa những application cần thiết để kernel khởi tạo môi trường cho tiến trình Init. Thông thường ramdisk cho Linux có thích thước nhỏ hơn <10Mb và được build ra từ code Linux kernel, nó cũng nằm trong file uImage của Kernel luôn.
  • Root file system.
    Đây là toàn bộ cây thư mục của Linux. Nơi chứa các application như google chrome, các package .deb, các câu lệnh command line, thư viện… Cây thư mục này cũng được build ra từ code. Thông thường, có 2 tool hỗ trợ chúng ta build ra cây thư mục này đó là build-root tool và Yocto framework.

Làm thế nào để thêm hoặc chỉnh sửa các package trong file image của Linux?

Cách chuẩn chỉ nhất là các bạn add code của package cần thêm vào trong build root hoặc tạo file recipe chứa đường link tải package đó vào trong Yocto và dùng 2 tool trên để build lại rootfs. Thông thường, trong bộ BSP của nhà cung cấp SoC đã có đường link để tải bộ Yocto hoặc buildroot dùng để build ra cây thư mục cho board đó rồi. Tuy nhiên, cách này cần 1 chút kiến thức về build, có thể sẽ hơi khó đối với người mới. Có 1 cách đơn giản hơn là: ghi image mặc định vào thẻ sdcard, sau khi boot lên thì cắm dây Ethernet vào board. Tiếp theo, dùng APT command để install package mình mong muốn từ internet hoặc install offline từ file .deb. Sau khi chiếc thẻ nhớ đấy đã có thêm package cần thiết, bạn có thể dùng câu lệnh “dd” command để tạo lại file ảnh từ thẻ sdcard và ghi nó vào những chiếc thẻ khác. Cách này tuy đơn giản đối với người mới nhưng mình không khuyến khích.

Trong trường hợp muốn thêm driver mới thì sao?

Thêm driver thì sẽ đơn giản hơn. Đầu tiên, cross compile kernel module ở trên máy PC. Sau đó, copy file .ko sang thư mục /lib/modules/… ở trên cây thư mục của board. Để cấu hình cho board tự động load driver khi khởi động, thêm 1 file cấu hình vào trong folder /etc/module-load.d .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top