thảo luận [Tâm sự] Nghề dev Linux kernel ở Việt Nam

Adaptive Autosar có khác gì linux thường không bạn?
Mình đọc overview thì chỉ thấy nó là distro dành cho automotive.
Nhưng có những điểm khác thì mình không biết. Với cả tại sao phải sinh ra nó.
Mình trước chỉ làm classic Autosar cho ECU chạy MCU, chưa thực sự làm adaptive, cũng bỏ mấy năm rồi. Hồi đó có từng ngâm cứu Adaptive Autosar chút, nó define kiến trúc cho POSIX operating system - không giới hạn chỉ Linux nhé. Mục đích chính của nó là follow trend càng ngày càng có nhiều ECU chạy linux - https://www.automotivelinux.org/ là một ví dụ, hay https://www.genivi.org/. Nên cần define Adaptive Autosar để đảm bảo một quy trình phát triển thống nhất đã với Classic Autosar - chứ không thể 1 số ECU phát triển kiểu classic Autosar, một số ECU còn lại lại theo quy trình phát triển khác. Ở view system engineer thì họ define là các SWCs.
Mỗi SWC sẽ đại diện cho 1 chức năng, và sau đó thì tuỳ vào implementation thì các SWC sẽ được map xuống các physical ECUs, khi đó interface giữa các SWCs sẽ được convert thành internal IPC - nếu hai SWC trên cùng ECU, hoặc map xuống bus vật lý (CAN/LIN/FlexRAY/Ethernet) - nếu khác ECU.

Ở mức system engineer họ chỉ quan tâm interface giữa các SWC, nó như kiểu contract - thống nhất rồi thì mỗi ông handle ECU nào đảm bảo implement đúng cái contract đó. Với Autosar thì khi define SWC này thì tuỳ vào layout xuống ECU, thì nó generate luôn cho mình cái boilerplate code là dạng các API interface, developer giờ chỉ cần code cái flow bên trong, giảm chi phí phải tạo các code lặp lại.
Cũng như kiểu dùng protobuf, mình define service bằng protobuf, rồi tuỳ vào ngôn ngữ mình muốn implementation mình dùng protobuf gen ra phần client/service code, mình chỉ cần implement logic thôi, còn phần RPC call nó generate sẵn rồi.
Đây chỉ là 1 ví dụ simple với COM thôi. Bạn làm với Autosar mức SWC rồi thì chắc cũng rõ cái mình nói.
Expectation là khi có SWC definition rồi thì:
  • Với classic Autosar thì nó gen code cho RTOS là Osek-based.
  • Với adaptive Autosar thì nó gen code cho Posix OS-based.
Tất nhiên sẽ có những thứ khác giữa 2 thằng như RTOS thì cần map runnable xuống task, còn với Posix OS thì thường là Process hoặc Thread. IPC giữa 2 thằng cũng sẽ khác nhau.
Thằng Posix OS tài nguyên mạnh hơn rất nhiều nên có thể resource là dynamically được, còn như RTOS - OSEK chẳng hạn thì về cơ bản lương task của nó là phải fix cứng lúc config - chứ ko phải là dynamically created lúc runtime.
Lý do của Adaptive Autosar là cũng gần như vậy theo mình hiểu. Nhưng hồi đó chưa có cơ hội thực chiến với nó. Hồi đó làm với Classic Autosar là do mình may mắn lắm - mình làm full từ MCAL tới BSW/CDD tới SWC luôn - chứ hồi đó gần như ở VN có FPT làm MCAL layer thôi.
 
Last edited:
Các dự án về Linux kernel ở Việt Nam

Do có 1 số bạn hỏi mình về các dự án develop Linux kernel ở VN họ đang làm gì, nên mình viết ra post này. Tuy nhiên để tránh các tranh luận không cần thiết do sự nhập nhằng về embedded Linux và Linux kernel development. Mình xin đưa ra định nghĩa cho 2 thằng như sau.

Nếu như chúng ta coi Linux kernel là một bộ thư viện có 25 triệu dòng code. Thì embedded Linux chính là việc chúng ta phát triển các application sử dụng API mà bộ thư viện cung cấp. Còn Linux kernel development là việc chúng ta tham phát triển, chỉnh sửa source code của bộ thư viện đó. Từ quy ước này mình sẽ đưa ra 2 khái niệm:
1. Các dự án embedded Linux. Có develop driver chạy ở tầng kernel, nhưng thực chất kernel cũng cung cấp sẵn các API có sẵn để tương tác với nó. Việc phát triển driver không thay đổi source code của nhân. Dự án embedded Linux cũng thay đổi hệ thống cây thư mục của Linux nhưng ở mức độ thêm hoặc bớt các app hoặc chỉnh sửa file config.
2. Các dự án development về kernel. Những dự án này có thay đổi source code bên trong nhân.

Trong post này thì mình chỉ mô tả về các dự án thuộc loại số 2. Còn loại số 1 embedded Linux nếu mọi người quan tâm thì mình sẽ viết trong 1 post khác.

Điều đầu tiên, việc thay đổi source code của nhân kernel họ làm như thế nào. Thực tế chúng ta không cần sửa code kernel rồi build lại và cài đặt trên máy người dùng. Thay vào đó kernel hỗ trợ 1 số cơ chế liên quan đến runtime patching. Tức là cho phép chúng ta chèn những đoạn mã máy mà chúng ta phát triển vào giữa những đoạn mã của nó. Một số sản phẩm như anti virus, virtualization đang sử dụng cơ chế này để can thiệp vào nhân kernel trên máy người dùng.

Ở Việt Nam có nhu cầu cho những dự án kiểu như này không? So với các công nghệ phổ thông khác thì nhu cầu này rất ít, nhưng nó quan trọng. Đơn giản là công nghệ về OS kernel được coi là công nghệ lõi, nó nằm trong hầu hết các sản phẩm khác. Cái này nó đặc biệt quan trọng trong mục đích quân sự hoặc làm các sản phẩm liên quan đến nhà nước. Nói chung là chúng ta thực sự có nhu cầu, tất nhiên số lượng dự án sẽ ít chứ không nhiều.

Các dự án về Linux kernel development ở VN họ đang làm những gì? Số lượng job nhiều nhất là về security. Do các server thường chạy Linux, virus hoặc hacker khi tấn công vào hệ thống cũng căn cứ theo các tính chất của hệ điều hành. Ví dụ như cách chèn mã để virus được chạy cùng hệ thống khi bật nguồn... Các sản phẩm về security khi chạy trên nền Linux có thể sẽ có module chạy dưới kernel để phát hiện hoặc chống tấn công. Các module có thể sử dụng kỹ thuật runtime patching mà mình nói ở trên để thay đổi mã nguồn của kernel. Ngoài ra thì có 1 dòng sản phẩm nữa mà mình biết là chỉnh sửa lại hệ điều hành cho các thiết bị chạy Linux. Ví dụ Qualcomm cung cấp phôi chip chạy Android cho nhiều hãng điện thoại. Nhưng chất lượng phần mềm của các hãng điện thoại khi cung cấp đến người dùng lại khác nhau. Mặc dù bộ phần mềm mà Qualcomm cung cấp ban đầu đã đủ các chức năng cơ bản. Nhưng có hãng làm tốt thì pin dùng được 2 ngày, có hãng làm kém thì pin 1 ngày, rồi app chập chờn, nhiều lỗi... Mặc dù bộ hardware và software ban đầu có thể coi là giống nhau.

Như ở HN thì mình cũng chỉ thấy có 2 dự án làm sâu về kernel ở mức đó. Ngoài ra không có dự án nào khác, vì thông tin về các dự án loại này ở HN mình đều biết hết. Xác định làm thuần về Linux kernel thì gần như không có cơ hội nhảy việc. Còn nếu làm về embedded Linux thì lại khác, số lượng job sẽ nhiều hơn rất nhiều.
 
Thím đã tìm hiểu về ebpf chưa, thím có project mẫu nào về phần này ko :*
Mình đang code mà thấy tài liệu ít quá, search mãi mới đi đc một chút
 
Chịu, đọc xong chả hiểu gì cả. Nhưng mà nói chung e đều nể các thánh chuyên làm backend. Chắc phải đam mê lắm mới theo bộ môn hardcore thế này :LOL:
Chúc a có sức khoẻ và có đệ tử để theo con đường mòn này!
 
:( khâm phục thím. Sinh viên điện tử cũng từng in cuốn buiding embedded linux sýtems về đọc mà cuối cũng cũng bỏ chạy theo code app.
 
:( khâm phục thím. Sinh viên điện tử cũng từng in cuốn buiding embedded linux sýtems về đọc mà cuối cũng cũng bỏ chạy theo code app.

Hồi trước tôi cũng thần tượng mấy cuốn CLRS, TAOCP lắm. Giờ có nhiều sách chất lượng cao hơn nhiều.
 
người a cả của embedded, mong a làm khoá học onl để ae tiếp bước theo, e đang học của mấy a ấn địu hơi tốn thời gian vì hơi khó nghe, khoá học của mấy trung tâm vịt thì toàn phần ngọn qua thư viện, driver tây lông build sẵn, học xong chỉ làm thợ
 
em là thằng sinh viên mới tập tễnh dấn thân vào embedded linux, mà em thấy kiểu bên embedded linux này nó không sôi động nhộn nhịp như là bên web hay mobile. các anh có thể cho em lời khuyên gì về tương lai sự nghiệp được không ạ?
 
Chủ thớt thật tâm huyết. E là sinh viên phần cứng luôn, hoc thuând và sâu về phần cứng lẫn embeded nhưng đời đưa đẩy làm hẳn phần mềm. Lâu lâu vẫn có lưu tâm về phần cứng. Trong sự hiểu biết của e thì linux kernel nó thật sự là ngành hẹp và khó theo đúng nghĩa đen lẫn bóng. Đa số ae học xong thì đi hẳn về vi mạch, lm layout, design. Một số ae k thì đi hẵn về phần mềm. Lm linux nó như một khoảng giữa, cần hiểu biết về cả 2 nhưng lại là dạng kiến thức k. Nó cũng khá ít việc nếu đem so với vi mạch hoặc phần mềm
 
người a cả của embedded, mong a làm khoá học onl để ae tiếp bước theo, e đang học của mấy a ấn địu hơi tốn thời gian vì hơi khó nghe, khoá học của mấy trung tâm vịt thì toàn phần ngọn qua thư viện, driver tây lông build sẵn, học xong chỉ làm thợ
Có video anh up lên Youtube em xem thử chưa
 
em là thằng sinh viên mới tập tễnh dấn thân vào embedded linux, mà em thấy kiểu bên embedded linux này nó không sôi động nhộn nhịp như là bên web hay mobile. các anh có thể cho em lời khuyên gì về tương lai sự nghiệp được không ạ?
Nếu em đam mê về embedded Linux thì hẵng theo, còn nếu chỉ có nhu cầu cơ bản là một công việc ổn định, mức lương tốt thì anh khuyên là nên theo mảng app.
Vì lương của 2 mảng là ngang nhau nếu level từ senior đổ xuống, còn level expert thì mảng embedded ở VN lương thấp hơn bên app do ít công ty.
 
Nếu em đam mê về embedded Linux thì hẵng theo, còn nếu chỉ có nhu cầu cơ bản là một công việc ổn định, mức lương tốt thì anh khuyên là nên theo mảng app.
Vì lương của 2 mảng là ngang nhau nếu level từ senior đổ xuống, còn level expert thì mảng embedded ở VN lương thấp hơn bên app do ít công ty.
em cảm ơn anh nhiều ạ
 
Back
Top