4 thành phần của Embedded Linux

4 thành phần của Embedded Linux

Ta biết rằng Linux chạy ở khắp nơi từ siêu máy tính, máy chủ, máy để bàn (máy xách tay), điện thoại (android)…cho đến các thiết bị gia dụng, gia đình.

Khi sử dụng máy tính cá nhân, server ta dễ dàng “sờ” thấy được các thành phần của Linux như các tiến trình, shell..etc.
Hầu hết các bản phân phối phổ biến làm hết những thứ liên quan đến phần cứng, nhân hệ điều hành, driver cho ta rồi. Ta thường chỉ quan tâm đến ứng dụng chạy trên đó thôi.

Nhưng ở một mảng ứng dụng khác của Linux, nơi mà trên đó ta thường chỉ chạy 1 ứng dụng, rất khó thấy các thành phần bên trong, hầu như không thay đổi được…thì Linux như thế nào, nó giống với các bản phân phối ta vẫn gặp không. Tiếp tục đọc

Advertisements

Một chút về Driver cho USB Device trong Linux

Trong loại bài dịch trước đây nói về USB, tôi có nhắc một chút đến việc load đúng driver thì phía Host làm thế nào?

Như ta đã biết, khi một thiết bị USB được cắm vào máy (Host), phía Host sẽ thực hiện một loạt thao tác từ xác định nguồn (bus, hay self), lấy thông tin tốc độ, các thông tin về descriptor (thiết bị, giao diện, các Endpoint). Cuối cùng để sử dụng các tính năng chính mà thiết bị cung cấp, thì hệ điều hành phía Host, dù là Windows, hay Linux, hay MacOS sẽ phải load driver tương ứng với thiết bị. Tiếp tục đọc

Cài thêm driver usb-wifi adapter cho bản build Raspbery PI sử dụng Yocto Project

Như ta đã làm trong bài trước, sau khi thực hiện việc setup các biến môi trường bằng lệnh source, ta thực hiện build tạo image có có tên là rpi-basic-image thông qua lệnh:

$bitbake rpi-basic-image

Thực ra còn 2 image khác ta có thể build đó là rpi-hwup-image rpi-test-image. Ta có thể thấy 2 file bb cho 2 image ở thư mục meta-raspberrypi/recipes-core/images/.

rpi-hwup-image : là image nhỏ nhất (có dịp sẽ thử)
rpi-basic-image: là image ta vấn dùng đến bây giờ.
rpi-test-image : là image dùng cho việc test. (có dịp sẽ thử) Tiếp tục đọc

Thiết lập IP mặc định của bản build Linux cho Raspberry PI bằng Yocto Project

Để tiếp tục customize bản OS được build trong bài trước.
Hôm nay ta sẽ thực hiện một nhiệm nhỏ. Đó là thiết lập một IP cho bản build.
Tức là ta sẽ thiết lập 1 IP mặc định được gán cho Raspberry PI khi nó được khởi động bằng bản build của chúng ta.

Như thường lệ ta cần thiết lập các biến môi trường trước khi định thực hiện bất cứ thay đổi nào trên bản build.

$source poky/oe-init-build-env build

Tiếp tục đọc

Thêm samba server vào bản build Linux cho Raspberry PI bằng Yocto Project

Ta đã nói đến việc build một bản phân phối Linux cho Raspberry PI ở bài Tạo một bản phân phối Linux cho Raspberry PI bằng Yocto Project.

Một trong những giao thức truy cập file phổ biến nhất hiên nay là SMB, vốn ban đầu được hỗ trợ trên các máy Windows, dùng cho giao thức chia sẻ file trong mạng nội bộ. Trên Linux, để tạo một server như thế, người ta dùng Samba (cái tên cũng na ná nhỉ).

Trong bài này, sẽ trình bày cách đưa Samba vào bản phân phối Linux đã được build ở bài trước.

Tiếp tục đọc

Tạo một bản build Linux cho Raspberry PI bằng Yocto Project

Ban đầu, dự định sẽ tạo một NAS server theo link tham khảo bên dưới.
Nhưng thấy ta nên tách riêng phần tạo bản phân phối Linux thành 1 bài riêng, rồi viết các nội dung liên quan đến customize thành các bài khác sẽ dễ hiểu hơn.
Hơn nữa, phần tạo bản build basic sẽ cần được thảo luận kĩ hơn do có thể phát sinh nhiều vấn đề. Mà nếu không giải quyết được các vấn đề đó thì nội dung các bài khác sẽ không thể thực hiện được.
Do vậy, bài này sẽ tập trung vào tạo bản basic rpi-basic-image thôi.

Link tham khảo:
http://mickey-happygolucky.hatenablog.com/entry/2015/02/14/002035

Tiếp tục đọc

[OE] Build một bản Linux cho Raspberry PI B+ sử dụng OpenEmbedded

Bài này đã cũ, xin hãy xem bài cập nhật chi tiết hơn tại: Tạo một bản build Linux cho Raspberry PI bằng Yocto Project

Chúng ta đã có bài tìm hiểu về BitBake ở link

Đây là bài thứ 2 trong loại bài phát triển ứng dụng trên Raspberry PI sử dụng OpenEmbedded

http://www.cnx-software.com/2013/07/05/12mb-minimal-image-for-raspberry-pi-using-the-yocto-project/

Trước hết ta nói qua một chút về một bản Linux là gì?

Nhân Linux là mã nguồn mở, hầu hết các phần mềm chạy trên nhân đó cũng là mã nguồn mở. Tiếp tục đọc

[OE]Bitbake – Từ Hello World đến một Distro

user-configuration

Bitbake là một công cụ cốt lõi của Yocto Project. Nó bao gồm 1 bộ thông dịch các script được viết trong các file recipe (công thức tạo phần mềm), và thực hiện các lệnh trong đó. Nó mô tả lại và tự động hóa qúa trình người ta đưa một phần mềm vào một distro.

Về việc đưa một phần mềm vào distro, ta có thể thấy nó bao gồm vài step chính. Từ việc tải source code (ở đây là tải source code chứ không phải các gói đã được build sẵn đâu nhé, nó gần giống với ArchLinux, Gentoo và hoàn toàn khác với Ubuntu) , thực hiện các bản patch (sửa source hoặc kịch bản build đề phù hợp mục đích sử dụng), biên dịch, cuối cùng là tích hợp vào distro (kèm theo các thông số cấu hình).

Mục đích của bitbake là tạo ra một quy trình tự động mà đầu vào là các file kịch bản, bitbake sẽ tự làm các công việc còn lại. Ý tưởng của bitbake thực sự rất hay, dù rằng để áp dụng thực tế một cách nuột nà thì cần khá nhiều công sức để hiểu cách nó làm việc với các công cụ truyền thống.

(Link gốc của bài)

OpenEmbedded (OE) và Yocto Project (YP) sử dụng Bitbake là công cụ chính.

Sẽ rất có ích cho việc hiểu về OE nếu ta hiểu BitBake ở mức độ nào đó thông qua các task (task ở đây xoanh quanh các xử lý của source code như tải, patch, build như đã nỏi ở trên), các class được định nghĩa trong OE.

Tài liệu này với mong muốn đưa ra một bức tranh mô tả việc tạo ra một Image (ảnh của một Distro) sử dụng OE và YP. Nó sẽ bắt đầu từ một project rất đơn giản sử dụng bitbake. Thông qua project đó sẽ giải thích các khái niệm quan trọng từ các OE class, cuối cùng là chỉ ra quá trình tạo một Image.

  1. Về Bitbake
  2. Tải Bitbake
1. BITBAKE là cái gì?

Tiếp tục đọc

OpenEmbedded là gì?

Cái gì liên quan đến Linux, Embedded thì mình tìm hiểu kĩ nhất có thể. Trừ những chỗ không thể sờ vào hoặc cực kì mất thời gian để tìm hiểu nó thì mình sẽ bỏ quá.

Đại khái sẽ trả lời mấy câu hỏi sau

1. OpenEmbedded là cái L gì?

2. Tại sao người ta dùng nó?

3. Những cách tiếp cận với em nó ở mức độ SW