Bắt đầu embedded linux

Lộ trình học tập cho người mới bắt đầu.

Thời gian qua có nhiều bạn hỏi mình về cách tiếp cận lĩnh vực embedded Linux cho người mới, đặc biệt là các bạn sinh viên năm cuối.

Do đó mình làm video này, trong đó giới thiệu một cách tổng quan nhất về embedded Linux là gì, ứng dụng của nó và những kiến thức bạn cần học để có thể đi xin việc được.

Các nguồn tài liệu để học tập:

3 cuốn sách hay nhất là:

Các kenh training theo video:

Trang web vimentor khá dễ học với người mới:

Nguồn: //www.facebook.com/groups/259967441230713

Cùng nhau học Linux kernel

Giới Thiệu Về Embedded Linux

13/04/2020

Như tên gọi của nó, Embedded Linux gồm có 2 phần embedded và Linux. Điều kiện cần và đủ để tìm hiểu về chủ đề này là phải có kiến thức nền tảng về embedded và biết cách sử dụng Linux cơ bản.

Ngày nay, các thiết bị nhúng Linux hiện diện ở khắp mọi nơi từ chiếc smartwatch nhỏ bé đến Tivi hay chiếc điện thoại di động phức tạp, đến siêu máy tính, xe ô tô và cả tàu vũ trụ,… Những điều này làm cho embedded Linux trở thành một miền đất đầy hứa hẹn cho những ai đam mê và chinh phục nó.

Vậy điều gì làm các thiết bị nhúng Linux trở nên phổ biến như vậy:

  • Linux có những chức năng thiết yếu. Nó có scheduler tốt, hỗ trợ networh, USB, Wi-fi, Bluetooth, cùng nhiều thiết bị khác. Bạn có tự muốn viết lại các driver này không trong khi nó đã có sẵn và hoạt động rất tốt.
  • Linux được port vào nhiều kiến trúc vi xử lý, bao gồm các bộ vi xử lý phổ biến như ARM, MIPS, x86, PowerPC.
  • Linux là hệ điều hành mã nguồn mở, nghĩa là bạn có thể tự do lấy source code và chỉnh sửa cho phù hợp với yêu cầu của bạn. Bạn cũng có thể thêm bớt cách tính năng, những kỹ thuật mới rồi đóng góp cho cộng đồng cùng phát triển.
  • Linux có cộng đồng hoạt động rất sôi nổi. Kernel Linux phát hành mới mỗi 10-12 tuần, các bản phát hành được đóng góp từ các lập trình viên từ khắp nơi trên thế giới. Một cồng đồng hoạt động sôi nổi nghĩa là bạn cũng được hỗ trợ về hardware, protocol,…
  • Giấy phép mã nguồn mở, một điều tuyệt với cho các sản phẩm việc tự do phát triển.

Bốn thành phần quan trọng của embedded Linux:

  • Toolchain: chứa trình biên dịch và các công cụ cần thiết để tạo code cho thiết bị. Những thứ khác đều phụ thuộc vào toolchain.
  • Bootloader: Nó cần thiết cho quá trình khởi tạo và tải, boo Linux kernel.
  • Kernel: trái tim của hệ thống, có nhiệm vụ quản lý tài nguyên và giao tiếp với hardware.
  • Root filesystem: chứa các thư viện và chương trình được chạy sau khi quá trình khởi tạo kernel hoàn thành.

Ngoài ra, còn có các thành phần khác góp phần tạo nên embedded Linux, nhưng chúng ta chỉ đề cập đến các thành phần thiết yếu.

Linux giải quyết tốt các vấn đề về viễn thông, robustness và các giao tiếp phức tạp khác. Tuy nhiên không phải vấn đề nào nó cũng giải quyết được và  phần cứng nào nó cũng hoạt động được.

“Đọc sách nhiều là tốt, nhưng sẽ tốt hơn nếu bạn đọc đúng sách, vào đúng thời điểm, tại đúng nơi và theo đúng cách.” Bạn nên tìm một tài liệu để có thể đồng hành cùng quá trình học tập. Nếu bạn chưa tìm ra tài liệu nào thì quyển sách “Mastering Embedded Linux Programming” sẽ là một người thầy tuyệt vời giúp bạn chinh phục thế giới Linux rộng lớn. Hiện tại, quyển sách đã được tái bản lần hai với nội dung cập nhật theo phiên bản Linux mới, hứa hẹn sẽ cung cấp nhiều kiến thức bổ ích.

Học tập là một quá trình suốt đời chứ không phải ngày một ngày hai, học embedded Linux cũng vậy, đó là một hành trình đầy vất vả và gian nan.

Linux không dành cho những ai thiếu kiên nhẫn, không phải lúc nào việc học tập cũng xuôi chèo mát máy, sẽ có lúc bạn gặp phải những vần đề nan giải thử thách lòng kiên nhẫn của bạn. Những lúc như thế, bạn sẽ càng chứng tỏ năng lực của mình với khả năng tìm tòi, giải quyết các vấn đề. Hãy nhờ đến sự trợ giúp từ thầy cô, bạn bè và cả cộng đồng mạng rộng lớn.

Linux thay đổi không ngừng. Linux liên tục, liên tục được cập nhật để fix bug tồn tại, cải thiện hiệu năng hoạt động,… Vì thế, bạn cũng cần cập nhật các kiến thức liên tục để có thể làm việc một cách hiệu quả.

Không có con đường tắt nào để học embedded Linux cả. Hãy bắt đầu từ nền tảng, mọi thứ sẽ trở nên dễ dàng. Một ngôi nhà to cao, cần một nền móng vững chắc, bạn cũng vậy, đừng đốt cháy giai đoạn mà phá hỏng một “ngôi nhà”.

Chủ đề hôm nay của chúng là sẽ là về lộ trình học tập như thế nào để có thể dấn thân vào lĩnh vực Linux embedded. [Hoặc chúng ta hay gọi trong group là Linux kernel].

Công việc chính của mình ở công ty là tìm hiểu các vấn đề mới của Linux kernel, tạo sự tin tưởng cho khách hàng về khả năng của đội bên mình, training cổ vũ tinh thần học hành cho anh em. Do đặc thù công việc cũng như sở thích cá nhân là việc đi dạy học nên mình có nhiều cơ hội học hỏi từ các bạn học viên. Mình quan sát các bạn học viên mà tìm hiểu xem lộ trình học tập như thế nào là hợp lý nếu 1 người mong muốn được làm về Linux kernel.

Đến thời điểm hiện tại thì mình thấy có 2 hướng tiếp cận về Linux kernel đó là từ trên xuống hoặc từ dưới lên.

1. Hướng tiếp cận từ dưới lên: Hướng này phù hợp với các bạn học điện tử viên thông. Với background tốt về hardware, thường mình sẽ định hướng các bạn điện tử nên học như sau: Ngôn ngữ C -> Lập trình vi điều khiển -> Học cách sử dụng Linux cho việc development -> Học các nguyên lý cơ bản của hệ điều hành -> Học lập trình device driver -> Nghiên cứu sâu về lý thuyết hệ điều hành.
Thường thì 1 bạn học điện tử viễn thông sau khi xong bước device driver là đã có thể đáp ứng tốt được công việc. Bước nghiên cứu sâu về hệ điều hành dành cho những người muốn gắn bó cả đời với Linux kernel mà định hướng trở thành chuyên gia. Tiếc là trong số học viên của mình chưa có bạn nào đam mê đến mức đó 

:[ và mình cũng thế 
:v

2. Hướng tiếp cận từ trên xuống: Hướng này phù hợp với các bạn học về công nghệ phần mềm hoặc khoa học máy tính. Các bạn này chưa có kiến thức về hardware khi ở trường đại học. Thường thì mình sẽ định hướng lộ trình học như sau: Ngôn ngữ C -> Sử dụng Linux cho development -> Linux kernel cơ bản -> Học lập trình device driver -> Nghiên cứu sâu về lý thuyết hệ điều hành.

Mình là người học công nghệ phần mềm ở trường đại học và học theo hướng 2, tuy nhiên hiện tại do học sinh của mình chủ yếu là điện tử nên mình dạy theo hướng 1. Cá nhân mình thấy các bạn ý học nhanh hơn mình ngày xưa. Bộ Linux kernel training mà mình up lên group cũng được làm theo hướng 1. Hiện tại thì chúng ta đang thiếu 2 bộ, 1 là hướng dẫn sử dụng Linux OS cho development, 2 là các nguyên lý cơ bản cho hệ điều hành. Cả 2 bộ này bọn mình sẽ huy động cộng đồng viết trong tháng này, mình và một số bạn senior sẽ là người reivew. Bọn mình dự đoán sẽ hoàn thành trong khoảng 1 - 2 tháng. Vậy là đến lúc đó chúng ta sẽ có 1 bộ tài liệu hoàn chỉnh cho một người mới bắt đầu.

Cảm ơn các bạn đã đọc bài, chúc mọi người có một cuối tuần vui vẻ!

Bài Viết Liên Quan

Chủ Đề