Khoang động cơ tàu ngầm Kursk của Nga. Động cơ vầy có phức tạp quá hem? có dư thừa chỗ nào hem? Nhìn zậy ai mà muốn chế tạo ra làm gì, hèn gì chỉ có vài nước muốn chế tàu ngầm, các nước khác chê hổng thèm chế là phải lắm, hehe.
4 ống chứa ngư lôi bên trong 1 tàu ngầm.
Tàu ngầm sau khi phóng ngư lôi sẽ nhẹ hơn, cách gì để giữ nguyên độ nặng của tàu vì nhẹ hơn sẽ nổi lên à nha, hé hé.
Khi phóng ngư lôi nước biển tràn vào, cách gì để nước biển hổng vào được nơi khác của tàu, có cần đổ bỏ nước biển ra hem? nước biển tràn vào có nặng bằng quả ngư lôi được giải thoát hem?
Các câu hỏi trên dành cho ai muốn học thực chiến, học thực tế chứ hổng cần phải tìm tài liệu, sách vở STEM nào hết á, hí hí.
Bài này chúng tôi sẽ thường xuyên thêm nội dung để ai muốn học công nghệ thông tin chuyên sâu sẽ có cái nhìn tổng thể trước sau đó chọn từng cái để học. Các bạn nhớ vào đọc thường xuyên coi có gì mới hông.
Đầu tiên cần xác định rõ các vấn đề sau để không bị nhầm lẫn khi phân tích, mổ xẻ công nghệ lõi Linux gồm những gì.
Hệ điều hành Linux hay các bản phân phát Linux tới tay người sử dụng, Tây gọi là Linux dsitribution hay Linux distro là sự kết hợp của 1 đống các phần mềm, công cụ được nấu nướng theo nhiều cách khác nhau.
Linux kernel chỉ là phần nhân, lõi của hệ điều hành Linux và nếu chỉ có nó thì không thể nào đưa tới tay người ta để sử dụng được.
Linux kernel cũng giống như bánh ít trần, nó được để trên lá chuối hay cái dĩa trước khi đưa tới miệng cho người ta ăn.
Bánh ít trần món ăn quen thuộc của người Việt Nam.
Nên nói công nghệ lõi Linux chỉ có Linux kernel là hổng có chính xác đâu.
Các thành phần khác khác phải có của hệ điều hành Linux chủ yếu đến từ dự án mã nguồn mở, miễn phí có logo là hình đầu con trâu là GNU.
GCC thuộc dự án GNU á.
Các lệnh grep, sed, awk trên Linux cũng thuộc dự án GNU.
Sau khi thừa nhận với nhau các vấn đề kĩ thuật ở trên thì phần dưới mới có ý nghĩa.
Công nghệ lõi Linux gồm những thành phần sau:
1. Ngôn ngữ lập trình C, Assembly, Rust để viết ra Linux kernel.
Tháng 12/2022 ngôn ngữ lập trình Rust được Linux kernel hỗ trợ để viết các Linux kernel module sau đó biên dịch chạy ngon lành cành đào.
Ngôn ngữ lập trình Rust được hỗ trợ khi biên dịch Linux kernel
Ngôn ngữ lập trình Rust trong Linux kernel có tốt hơn ngôn ngữ lập trình C ?
Mặc dù ngôn ngữ lập trình Rust có nhiều ưu điểm hơn so với C nhưng thực tế Rust trong Linux kernel vẫn chưa đâu vào đâu, chủ yếu vẫn là C.
Linux kernel là sân chơi của các hãng phần cứng Intel, AMD, ARM, Google, Samsung, Huawei…
Hình 20 công ty tham gia viết Linux kernel nhiều nhất từ 2017 đến 2019.
Các hãng phần mềm sống nhờ Linux kernel bằng cách đóng gói Linux kernel và các thành phần khác để đem bán lấy tiền như Red Hat, SUSE, Ubuntu, Oracle…
Hình dưới là các công ty tham gia viết Linux kernel 5.7 RC1, tính theo số lượng commit từ 5000 trở lên dựa vào domain của email của người viết code để xác định tên công ty.
Chú ý quan quan trọng là hệ điều hành Linux không phải mã nguồn mở 100% như nhiều người vẫn nghĩ. Thực tế hệ điều hành Linux có phần mã nguồn đóng là firmware của các hãng phần cứng gọi là binary blob.
Linux firmware và câu hỏi hệ điều hành Linux có phải là mã nguồn mở 100% không?
Microcode là gì và được biên dịch trong Linux kernel như thế nào?
2. GCC là chương trình biên dịch chính của Linux kernel từ thuở hồng hoang tới giờ do Linux kernel chủ yếu viết bằng C và Assembly.
Tháng 04/2014 Clang của dự án LLVM có thể biên dịch Linux kernel từ dạng mã nguồn thành các file nhị phân chạy được trên máy tính.
Công nghệ lõi của Linux kernel là các phần trên – Cắt – Tiếng đạo diễn Hiếu khìn la lên, các diễn viên nghỉ diễn – Hết tập 1 của bộ phim Linux kernel.
Mời các bạn coi tiếp tập 2 của bộ phim tên là hệ điều hành Linux – 123 diễn, đạo diễn Hiếu râu la lớn.
Hệ điều hành Linux có 4 thành phần cốt lỗi để có thể chạy được là:
1. GRUB2 là chương trình bốc vác khi khởi động, thường dịch là bộ tải khởi động hay bộ nạp khởi động hay chương trình nạp khởi động, Tây gọi là boot loader. GRUB2 viết bằng C và Assembly.
GRUB2 bốc cái gì, vác cái gì và quăng đi đâu?
Nó bốc vmlinuz chính là Linux kernel thường được nén lại sau khi biên dịch từ mã nguồn viết bằng C, Rust và quăng lên RAM.
Sau đó nó bốc tiếp initramfs và cũng quăng lên RAM luôn.
initramfs là cơm thêm của vmlinuz vì không nên nhồi nhét mọi thứ vào vmlinuz. Initramfs là gia vị phụ (phụ gia) như mắm, muối, bột ngọt (mì chính) để bữa ăn thêm đậm đà, thường bữa ăn nào cũng có thêm mấy cái này.
Initramfs thường viết bằng Bash script.
2. Bash shell là lớp vỏ chạy ở không gian người dùng để có môi trường móc vào Linux kernel ở trên. Không có lớp vỏ Bash shell thì hổng có cái để mình gõ lệnh Linux lóc cóc đâu. Bash shell viết bằng C.
3. systemd là phần mềm quản lí không gian người dùng (userspace, user space) của hệ điều hành Linux. Không có systemd thì không có cái cho chúng ta stop, start dịch vụ mạng trên Linux đâu. Systemd viết bằng ngôn ngữ lập trình C.
Các hệ thống nhúng chạy Linux và Alpine Linux không xài systemd mà xài busybox và ash shell cho nhẹ.
4. RPM, DEB, APK, Portage… để đóng gói Linux kernel, Bash shell, systemd… đã nói ở trên trển
RPM trên dòng Red Hat và các bản ăn theo như Amazon Linux, Oracle Linux, AlmaLinux, Rocky Linux…
RPM Package Manager được hệ điều hành Linux nào xài?
Túm lại công nghệ lõi Linux có 7 cái chính là
Ngôn ngữ lập trình C, Assembly, Rust.
Chương trình biên dịch GCC, Clang/LLVM.
Anh cửu vạn GRUB2 thường ngày uống sâm bổ lượng nên khỏe như trâu đi cày.
Initramfs thường viết bằng Bash script.
Bash shell là lớp vỏ của hệ điều hành Linux.
systemd là ông chủ mới ở không gian người dùng (userspace, user space).
RPM, DEB, APK, Portage… để đóng gói phần mềm.