Build, chạy nhân Linux trong QEMU ARM

Chạy một bản Linux tối giản trên Qemu ARM

Bài này sẽ làm một ví dụ để chỉ ra sự liên quan giữa
các thành phần của một hệ thống Linux thông qua
việc build, chạy Kernel trên board vexpress-a9 mô phỏng bằng Qemu.

Đó là Kernel, Root file system, Busybox, Init.


1. “Chém” chút về quá trình khởi động của Linux

  • Về cơ bản, quá trình khởi động Linux có 2 giai đoạn.
    Giai đoạn đầu là load kernel lên RAM và chạy
    Giai đoạn thứ hai là kernle sẽ tự động mount hệ thống file
    rồi các ứng dụng trên hệ thống file được mount.
    Bất cứ bản Linux nào, dù lớn, dù bé đều thì tối thiểu phải có 2 giai đoạn ở trên.
    Tiếp tục đọc
Advertisements

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

Phím tắt cho bash

Mặc định, bash sử dụng emacs mode, có thể chuyển sang vi mode được.
Nếu sử dụng ở chế độ mặc định, thì dưới đây là một số shortcut hữu ích khi sử dụng.

Chiều ngang : Di chuyển cơ bản

Ctrl + b : (Backward) Di chuyển con trỏ sang trái về trước 1 kí tự
Ctrl + f : (Fordware) Di chuyển con trỏ sang phải một kí tự.
Ctrl + d : (Delete) Xóa kí tự ở vị trí con trỏ

Tiếp tục đọc

Một số điều rút ra từ việc phải sử dụng command

Do yêu cầu bắt buộc nên gần đây phải làm việc với VIM.

Thực ra vẫn dùng máy tính Windows để chạy các ứng dụng SSH Client, SCP, rồi thì Excel. Tuy nhiên, các thao tác chủ yếu với source, text file, là trên command.

Mà trên command của Unix, hay Linux. Dù có trả qua bao nhiêu năm nữa, thì có vẻ chỉ có 2 trường phái là VIM và Emacs thôi. Nhiều người thích Emacs, cũng nhiều người thích VIM.

Tiếp tục đọc

Chuyển sang dùng VI(M)

Chuyển sang dùng Vi

Vi – Editor khá nhiều tuổi, có lẽ còn nhiều tuổi hơn của mình.
Là editor phổ biến nhất trên hệ thống dòng lệnh Linux, Unix hoặc tương tự.
Có Linux, bạn gần như sẽ có thể dùng Vi. Mà Linux thì có ở rất rất nhiều nơi.
Có phải vì nó mặc định nên nó phổ biến???
Mình từng nghĩ vậy hoặc nghĩ chắc nó nhẹ nên người ta cài sẵn nó thôi
chứ chức năng hoặc độ tiện dụng chắc tệ lắm.
Vì thực ra, ở trường mình từng dùng 1, 2 lần thôi. Vì khi mới bắt đầu biết đến
Linux, thì nó cũng có giao diện đồ họa khá tiện rồi. Thầy giáo lại là một
emacs-fan nữa nên ít khi phải dùng Vi.
Tiếp tục đọc

Giới thiệu về lập trình Assembly trên Linux (AT&T Style không phải Intel Style)

Tham khảo
– Sách : AT&T Assembly Language, Richard Blum

1. Ngôn ngữ Assembly là gì?

  • Ở mức thấp nhất, Process chỉ hiểu instruction code
  • Instruction Code là các mã nhị phân chứa các thành phần: Instruction prefix, Opcode, ModR/M, SIB, Displacement, Data Element.
  • Người ta hoàn toàn có thể viết chương trình bằng instruction code, nhưng nó sẽ cực kì khó nhọc, bởi ta chỉ thấy không gì khác ngoài các byte nối tiếp nhau.
  • Việc sử dụng các ngôn ngữ bậc cao giúp việc viết chương trình dễ dàng hơn rất nhiều, vì trình biên dịch hoặc thông dịch đảm nhiệm việc chuyển mã ngôn ngữ bậc cao trực tiếp hoặc gián tiếp sang instruction code để chạy.
  • Tuy nhiên, việc sinh instruction code của trình biên dịch/thông dịch không phải luôn luôn hiệu quả. Tiếp tục đọc

So sánh giữa Buildroot và Yocto Project

Bài này sẽ dịch lại Slide thảo luận giữa 2 diễn giả là Alexandre Belloni, Thomas Petazzoni
từ Free Electrons tại Embedded Linux Conference 2016.

So sánh giữa Buildroot và OpenEmbedded/Yocto Project

1. Điểm chung

  • Đều là build-system cho Embedded Linux.
    Mục tiêu là có thể customize, build hoàn chỉnh một Embedded Linux System.
    Bao gồm: filesystem, toolchain, kernel, bootloaders
  • Đều được build từ source
  • Sử dụng cross-compilation
  • Rất actively trong cả dự án đang maintained và phát triển.
  • Được sử dụng rộng dãi trong công nghiệp.
  • Tài liệu tốt, nhiều khóa đào tạo.
  • Sử dụng Free Software (phần mềm tự do)
    Tiếp tục đọc

Thực hiện 4 Stage khi Compile bằng tay (Manual)

Ta đã có bài giới thiệu về 4 Stage khi Compiling rồi. Đầu ra của Stage trước sẽ là đầu vào của Stage sau.

Trong compile thông thường dạng

$gcc -o HelloWorld HelloWorld.c

Với câu lệnh trên,ta sẽ không thấy kết quả của 3 Stage đầu tiên.

Để hiểu rõ hơn, chúng ta hãy thử thực hiện các Stage bằng tay xem liệu ta có thể tạo ra file chạy như câu lệnh compile trên hay không.

Tiếp tục đọc