Sweet & Simple Linux — Hệ điều hành Linux ngọt ngào cho người Việt
Caram = Carambola = Trái khế — 5 cánh như ngôi sao trên quốc kỳ, gắn liền với tuổi thơ người Việt
Tải CaramOS 1.3.9 · Website · English · VNLF
Phát triển bởi: VNLF · MRD · Kỳ Nguyễn
CaramOS là bản phân phối Linux dựa trên Linux Mint 22.3 Cinnamon (nền Ubuntu 24.04 LTS), làm riêng cho người dùng Việt Nam. Mục tiêu của CaramOS là phổ thông hoá Linux: người đang dùng Windows chuyển sang mà không phải mày mò, có sẵn tiếng Việt, bộ gõ, giao diện thân thiện, và mọi thứ khác chỉ cần vài cú bấm.
Important
CaramOS 1.3.9 là bản mới nhất của dòng phát hành chính thức (Official Release) bắt đầu từ 1.3.0, sau chuỗi bản Open Beta 1.0.x.
- Cài mới: tải ISO 1.3.9 (2,8 GB) · SHA256SUMS · ghi chú phát hành
- Đang dùng CaramOS 1.0.2 trở lên: không cần cài lại. Trung tâm cập nhật tự báo bản 1.3.9, bấm Cập nhật ngay là xong. Xem Nâng cấp từ bản cũ.
- Cài driver máy in Canon chính hãng ngay trong Kiểm tra driver, cho các máy Canon dùng CAPT mà captdriver chưa
chạy được, như LBP6300dn, LBP3300, LBP5000, LBP6200, LBP7200C…
- Máy cắm USB: cắm vào là có thông báo "Máy in chưa có driver". Bấm Cài driver của Canon, đồng ý điều khoản của Canon và nhập mật khẩu: khoảng một phút sau máy in đã sẵn sàng. Kiểm tra driver nhận ra 22 dòng máy.
- Máy in qua mạng LAN (13 dòng có cổng mạng): trong Kiểm tra driver bấm Thêm máy in…, chọn mẫu máy và nhập địa chỉ IP của máy in.
- Driver được tải thẳng từ máy chủ của Canon (khoảng 120 MB) và kiểm tra trước khi cài; gói của Canon được cài nguyên bản. CaramOS lo phần còn lại: hàng đợi in, dịch vụ in tự chạy khi bật máy, rút ra cắm lại vẫn in được, và chặn máy khác trong mạng kết nối vào dịch vụ in của Canon.
- Điều khoản của Canon cho phép dùng driver cho mục đích cá nhân, phi thương mại.
- Chưa có ai thử in trên máy LBP6300dn thật: nếu bạn có máy, hãy thử và báo lại qua dấu ? trên thanh tác vụ.
- Bấm PrtSc hoặc Win+Shift+S để chụp màn hình. Trước đây hai phím này không có tác dụng. Kéo chuột chọn vùng cần chụp (Ctrl+A để chọn cả màn hình), rồi Ctrl+C để chép ảnh, dán thẳng vào Zalo hay Messenger, hoặc Ctrl+S để lưu vào thư mục Ảnh. Ai đã tự gán phím tắt riêng cho hai phím này thì vẫn giữ phím của mình.
- Phóng to, thu nhỏ icon trong Start Menu bằng Ctrl + lăn chuột, như trên Windows. Mở Start Menu, giữ Ctrl
rồi lăn chuột trên danh sách ứng dụng: lăn lên thì icon to dần, lăn xuống thì nhỏ dần, mỗi nấc một chút.
- Icon nhỏ thì mỗi hàng xếp được nhiều ứng dụng hơn (tới 7), icon to thì ít hơn. Cỡ mặc định trông như cũ.
- Start Menu vẫn mở, giữ nguyên mục hay kết quả tìm kiếm đang xem, và nhớ cỡ đã chọn cho lần sau.
- Máy in Canon LBP2900 cài được bằng một nút. Cắm máy in vào là có thông báo "Máy in chưa có driver". Bấm
Xem chi tiết rồi Cài driver máy in, máy in sẽ tự được thiết lập. Trước đây hệ thống gán cho các máy in
Canon dùng CAPT một driver PostScript không hợp: lệnh in báo xong mà máy không ra giấy.
- Driver là captdriver, mã nguồn mở. Theo captdriver, LBP2900/LBP2900B và LBP3010/LBP3018/LBP3050 chạy được, còn LBP3000, LBP3100/LBP3108/LBP3150 và LBP6000/LBP6018 mới ở mức thử nghiệm.
- Các máy CAPT khác (LBP3300, LBP6020…) chỉ chạy với driver của Canon. Với các máy đó, Kiểm tra driver có nút Nhờ giúp đỡ.
- Gửi lỗi về VNLF dễ hơn.
- Cài driver không được thì màn hình báo lỗi có nút Nhờ giúp đỡ, kèm nhật ký cài đặt.
- Máy có máy in thì mọi yêu cầu giúp đỡ tự kèm nhật ký máy in, đã bỏ số serial và tên tài liệu. In chưa đúng thì bấm dấu ? trên thanh tác vụ để gửi.
- Rút máy in hay USB Wi-Fi ra không còn bị báo nhầm "Đã xử lý xong vấn đề phần cứng" ở lần đăng nhập sau.
- Trung tâm cập nhật không còn đứng hình khi bản cập nhật in ra rất nhiều dòng. Lần cập nhật hoàn tất một driver NVIDIA bị cài dở in ra khoảng 49.000 dòng, và cửa sổ từng đứng hơn 15 phút; giờ chừng đó dòng hiện ra trong chưa tới một giây. Khung nhật ký luôn cuộn tới dòng mới nhất, trang kết quả vẫn có đủ nhật ký.
- Lần cập nhật lên 1.3.6 vẫn chạy trong cửa sổ của bản đang dùng. Máy có driver NVIDIA cài dở (xem 1.3.5) nên
chạy
sudo dpkg --configure -atrước khi cập nhật; nếu cửa sổ đứng thì cứ để nó chạy xong, đừng tắt máy.
- Cài driver NVIDIA bằng Kiểm tra driver chạy được trở lại: từ 1.3.0, lần cài dừng giữa chừng nên sau khi
khởi động lại máy không có driver đồ hoạ và màn hình chỉ còn 1024×768. Máy đã bị như vậy: mở Terminal chạy
sudo dpkg --configure -arồi khởi động lại (bản cập nhật 1.3.5 cũng tự sửa lỗi này). - Kiểm tra driver xem ổ đĩa còn đủ chỗ trước khi cài, và nói rõ cần dọn bao nhiêu, ở đâu. Driver NVIDIA có thể kéo theo nhân Linux mới, khi đó phải tải về tới khoảng 1 GB.
- Bộ gõ giữ cài đặt của bạn và bật sẵn tiếng Việt: cài đặt Lotus bạn chọn (Telex hay VNI, chế độ, kiểm tra chính tả, phím tắt) không còn bị đặt lại mỗi lần đăng nhập. Mỗi phiên bắt đầu ở tiếng Việt (chữ V ở khay hệ thống); bấm Ctrl+Shift để chuyển sang tiếng Anh.
- Start Menu tìm được khi đang gõ tiếng Việt (trước đây phải gõ dấu cách mới ra kết quả), và không còn làm đơ máy khi tìm tệp, kể cả trên ổ cứng HDD hay khi có Google Drive gắn trong thư mục Home.
- Trung tâm cập nhật không còn bị chặn bởi một nguồn phần mềm hỏng do chương trình khác thêm vào, hay một gói cài dở như Lotus 3.5.6 lỗi hoặc driver NVIDIA 470.
- Kiểm tra driver không còn đề xuất driver NVIDIA 470 (không chạy được trên nhân Linux 6.14 trở lên) mà đề
xuất bản 580, và nói rõ khi driver đồ hoạ bị tắt bởi
nomodesethay blacklist. Nhật ký gửi kèm yêu cầu hỗ trợ có thêm thông tin khởi động và ổ đĩa. - App Center 0.2.3: cài được ứng dụng khi máy còn gói cài dở; trên USB chạy thử thì chờ trình cài CaramOS thay vì báo lỗi; tải WPS Office tiếp được khi máy chủ ngắt giữa chừng.
- Gõ được tiếng Việt ngay khi đăng nhập: trên một số máy mới cài CaramOS 1.3 và khi chạy thử từ USB, bộ gõ Lotus không tự chạy nên gõ chỉ ra chữ không dấu. Giờ bộ gõ tự chạy mỗi lần đăng nhập; máy đang bị lỗi chỉ cần bấm Cập nhật ngay trong Trung tâm cập nhật là gõ được liền, không cần đăng nhập lại.
- Cài được Zalo trở lại: Zalo cho Linux bản mới gọi thoại, gọi video ngay trên Linux, không cần Wine nên mở nhanh hơn. App Center cài bản này; máy đã có Zalo được Trung tâm cập nhật đổi sang bản mới, tải ngầm và tự thử lại mỗi ngày nếu mạng chập chờn.
- Biểu tượng giữa thanh tác vụ nằm gọn trong khung sau bản cập nhật Cinnamon 6.6.9; từ nay CaramOS tự sửa lại mỗi khi Cinnamon được cập nhật.
- Kiểm tra driver không còn làm đứng máy cũ khi chạy thử từ USB, và nói rõ vì sao loa, micro, camera chưa chạy trên máy tính bảng chip Intel Atom như Lenovo Yoga Book.
- Nhờ giúp đỡ kèm nhật ký: App Center hay Trung tâm cập nhật cài không được thì nút Nhờ giúp đỡ gửi yêu cầu kèm nhật ký lỗi; Kiểm tra driver và Góp ý & hỗ trợ kèm nhật ký hệ thống. Chỉ đội VNLF xem được nhật ký, thông tin cá nhân đã được xoá trước khi gửi.
- Trình cài đặt không còn dừng ngay khi mở (lỗi
_on_got_unit_proxy) và không còn khoá việc cài phần mềm khác trong phiên chạy thử.
- Start Menu tiếng Việt trọn vẹn: "Tất cả ứng dụng", "Biểu tượng cảm xúc" thay cho chữ tiếng Anh; applet thời tiết và các tiện ích mở rộng đi kèm cũng theo ngôn ngữ của máy.
- Trung tâm cập nhật toàn tiếng Việt: dòng dung lượng của bản cập nhật không còn lẫn chữ tiếng Anh.
- App Center ghi rõ nguồn cài: Zalo cho Linux hiện nhãn Gói cộng đồng, vì do cộng đồng đóng gói chứ không phải của Zalo.
- App Center: lần đăng nhập đầu tiên chọn bộ văn phòng, trình duyệt, ứng dụng liên lạc và tiện ích; CaramOS tải và cài giúp. Gỡ ứng dụng ngay trên thẻ của nó.
- Kiểm tra driver: tự kiểm tra phần cứng ở lần đăng nhập đầu tiên và khi chạy thử từ USB, cài driver NVIDIA và Wi-Fi Broadcom bằng một nút.
- Góp ý & hỗ trợ: dấu hỏi ở góc phải thanh tác vụ, gửi câu hỏi, báo lỗi, góp ý kèm ảnh hoặc video tới cộng đồng Vietnam Linux Family, và được báo khi có người trả lời.
- Trung tâm cập nhật mới: giao diện màu VNLF, ghi rõ từng thay đổi, nút Cập nhật ngay luôn ở đáy cửa sổ.
- Nhẹ hơn Linux Mint gốc: ít dịch vụ nền hơn, ít RAM hơn, và tự xử lý khi RAM sắp đầy thay vì để máy đơ. ISO 2,8 GB, nhỏ hơn ISO Linux Mint 22.3 (3,1 GB).
- Không cài sẵn những thứ bạn không chọn: WPS Office, Chrome và Zalo giờ nằm trong App Center, CopyQ không còn tự chạy, 14 màu biểu tượng thừa (khoảng 1,1 GB) được dọn khỏi máy.
Lần đăng nhập đầu tiên, App Center mở ra với một trang duy nhất chia theo nhóm. Bộ đề xuất đã được chọn sẵn: chỉ cần bấm Cài ở cuối trang, rồi dùng máy bình thường trong lúc CaramOS tải và cài.
- Bộ văn phòng: ONLYOFFICE, WPS Office, LibreOffice.
- Trình duyệt: Google Chrome, Cốc Cốc, Microsoft Edge, Brave, Firefox.
- Liên lạc và họp trực tuyến: Zalo (gọi thoại, gọi video được), Telegram, Zoom, Teams for Linux, Discord.
- Tiện ích: font Microsoft (Times New Roman, Arial...), VLC, OBS Studio, RustDesk, GIMP, Thunderbird.
![]() |
![]() |
Mỗi ứng dụng ghi rõ ưu và nhược điểm, dung lượng, và nguồn cài: Flathub, kho Ubuntu hay gói tải về. Ứng dụng đã cài có nút Gỡ cài đặt ngay trên thẻ. Mở lại App Center bất cứ lúc nào từ biểu tượng trên Desktop hoặc menu; cần thêm ứng dụng khác thì nút Xem thêm dẫn tới apps.vietnamlinuxfamily.net.
Ngay khi chạy thử CaramOS từ USB, Kiểm tra driver cho bạn biết máy có hợp với CaramOS không, trước khi cài. Sau khi cài, nó chạy lại ở lần đăng nhập đầu tiên, rồi chỉ lên tiếng khi có vấn đề mới. Cắm vào một máy in cần driver thì nó báo ngay.
- Kiểm tra Wi-Fi, mạng dây, card đồ họa, âm thanh, Bluetooth, webcam, đầu đọc vân tay và máy in Canon dùng CAPT (LBP2900, LBP6300dn…).
- Cài driver NVIDIA và Wi-Fi Broadcom bằng một nút, đúng bản Ubuntu khuyên dùng cho máy. Máy in Canon LBP2900 cũng cài bằng một nút, với driver mã nguồn mở captdriver; các máy Canon CAPT khác (LBP6300dn, LBP3300, LBP5000…) dùng driver chính hãng của Canon, tải từ Canon sau khi bạn đồng ý điều khoản của Canon, kể cả máy in qua mạng LAN (Thêm máy in…).
- Thiếu driver mạng nên máy chưa vào được Internet? Nó chỉ cách vào mạng bằng dây LAN, điện thoại qua USB, hoặc cài driver Broadcom ngay từ USB cài CaramOS.
- Giải thích từng trường hợp: chưa có driver trong kernel, driver chờ khởi động lại, driver bị chặn (blacklist, Secure Boot), thiếu firmware.
- Không tự xử lý được? Nút Nhờ giúp đỡ gửi lời nhắn kèm hồ sơ phần cứng
hw-probetới cộng đồng VNLF.
CaramOS cập nhật qua OTA: máy cài từ bản nào cũng lên được bản mới nhất mà không phải cài lại hay mất dữ liệu.
- Mỗi ngày CaramOS kiểm tra một lần. Có bản mới thì Trung tâm cập nhật báo phiên bản hiện tại, phiên bản mới và từng thay đổi sẽ được áp dụng.
- Không có gì tự cài khi bạn chưa đồng ý: bấm Cập nhật ngay khi tiện, hoặc Để sau.
- Thứ bạn đã tự chỉnh được giữ nguyên: hình nền bạn tự chọn, bộ màu biểu tượng bạn đang dùng, applet bạn đã gỡ khỏi thanh tác vụ.
![]() |
![]() |
Bấm vào góc phải thanh tác vụ để mở Control Center, thay cho các applet mạng, âm thanh và pin rời rạc của Cinnamon:
- Âm lượng loa và micro, chọn thiết bị phát và thu.
- Mạng dây, Wi-Fi, VPN và Bluetooth, mỗi ô có danh sách riêng để chọn nhanh.
- Chế độ tối cho cả hệ thống, Ánh sáng đêm, và Chế độ nguồn (Hiệu năng, Cân bằng, Tiết kiệm pin).
- Độ sáng màn hình và pin trên laptop, nút chụp màn hình, mở Cài đặt, khoá máy và tắt máy.
![]() |
![]() |
Dấu hỏi ở góc phải thanh tác vụ là đường tắt tới cộng đồng Vietnam Linux Family:
- Nhờ giúp đỡ khi có gì đó không chạy, Báo lỗi khi CaramOS hoặc một ứng dụng chạy sai, Góp ý khi bạn có ý tưởng cho CaramOS.
- Kèm ảnh chụp màn hình (làm mờ được chỗ riêng tư), video quay màn hình tối đa 1 phút, hoặc ảnh và video có sẵn trong máy. Ảnh và video được nén nhỏ và bỏ thông tin vị trí trước khi gửi.
- Kèm hồ sơ phần cứng và kết quả Kiểm tra driver nếu bạn đồng ý, để người giúp thấy đúng máy của bạn. Hồ sơ phần cứng không có tên người dùng, tên máy và địa chỉ IP.
- Yêu cầu được chia sẻ để cộng đồng cùng giúp (bỏ tick được); VNLF duyệt trước khi đăng, thông tin liên hệ không công khai.
![]() |
![]() |
Menu và cửa sổ Yêu cầu của bạn cho biết VNLF đang xem, đã trả lời hay đã xử lý xong, và cộng đồng đã có bao nhiêu câu trả lời. Có câu trả lời mới, CaramOS gửi thông báo; bấm vào là mở đúng trang của yêu cầu.
Thanh tác vụ của CaramOS tách thành ba "đảo" nổi, bo tròn, cách đều nhau:
- Bên trái: nút Start Menu CaramOS.
- Ở giữa: ứng dụng ghim và ứng dụng đang chạy, có chấm nhỏ dưới ứng dụng đang mở.
- Bên phải: khay hệ thống, bộ gõ, đồng hồ, Control Center và Góp ý & hỗ trợ.
- Theme Cinnamon Delight, biểu tượng Tela Circle, con trỏ Bibata, font Be Vietnam Pro.
- Chế độ tối một chạm trong Control Center; hình nền tự đổi theo (Sage Mist khi sáng, Indigo Night khi tối). Bộ 5 hình nền CaramOS 2048×1152.
- Menu khởi động, màn hình chờ, trình cài đặt và cả menu GRUB trên máy cài song song nhiều hệ điều hành đều mang giao diện CaramOS.
- Giao diện tiếng Việt, múi giờ Asia/Ho_Chi_Minh, định dạng ngày giờ Việt Nam. Chọn ngôn ngữ khác trong Cài đặt > Ngôn ngữ thì cả hệ thống theo.
- Bộ gõ Fcitx5 + Lotus bật sẵn: mặc định Telex, có VNI và các kiểu gõ phổ biến khác. Ctrl+Shift chuyển tiếng Anh/tiếng Việt, phím ` (dưới Esc) mở menu đổi kiểu gõ.
- Ứng dụng cài từ Flathub vẫn gõ tiếng Việt và dùng font của hệ thống bình thường.
- Nền Linux Mint 22.3 / Ubuntu 24.04 LTS, được cập nhật bảo mật đến năm 2029.
- Ít RAM hơn: máy rảnh dùng 865 MiB RAM, Linux Mint 22.3 gốc dùng 941 MiB (cùng máy ảo 4 nhân, 6 GB RAM, đo 5 phút sau khi khởi động).
- Ít dịch vụ nền hơn Linux Mint gốc: không nạp OpenGL vô ích cho các dịch vụ của Cinnamon, bộ gõ không khởi động portal thừa, dịch vụ nhắc lịch chỉ chạy khi bạn có lịch, bỏ dịch vụ báo lỗi kernel cho Ubuntu.
- earlyoom: khi RAM và swap gần hết, CaramOS đóng ứng dụng tốn RAM nhất thay vì để cả máy treo. Trên máy thử với ổ cứng chậm, Linux Mint gốc đơ hơn 30 phút trong tình huống này, CaramOS không lần nào đứng hình.
- ISO 2,8 GB, nhỏ hơn ISO Linux Mint 22.3 (3,1 GB) dù có thêm App Center, Kiểm tra driver và Góp ý & hỗ trợ.
- Máy tính 64-bit (x86_64), UEFI hoặc BIOS.
- RAM 2 GB trở lên, khuyên dùng 4 GB.
- Ổ đĩa trống 20 GB trở lên, khuyên dùng 100 GB.
- USB từ 4 GB để tạo bộ cài.
- CaramOS-1.3.9-cinnamon-amd64.iso (2,8 GB, trên SourceForge vì GitHub giới hạn dung lượng mỗi tệp đính kèm).
- SHA256SUMS để kiểm tra tệp tải về:
sha256sum -c SHA256SUMSDùng balenaEtcher, Ventoy hoặc Rufus (Windows).
Trên Linux có thể dùng dd:
sudo dd if=CaramOS-1.3.9-cinnamon-amd64.iso of=/dev/sdX bs=4M status=progress oflag=sync- Khởi động lại máy, vào menu chọn thiết bị khởi động (thường là F12, F10, F2, Esc hoặc Del tuỳ máy) và chọn USB.
- Chọn Start CaramOS để chạy thử. Kiểm tra driver tự mở và cho biết máy có chạy tốt với CaramOS không.
- Mở biểu tượng Cài đặt CaramOS trên Desktop và làm theo hướng dẫn.
Máy đã cài CaramOS không cần cài lại ISO.
-
Từ CaramOS 1.0.2 trở lên: Trung tâm cập nhật tự kiểm tra mỗi ngày và báo bản 1.3.9; bấm Cập nhật ngay. Muốn nâng cấp liền, mở Terminal và chạy:
sudo caramos-ota --upgrade --yes
-
Trung tâm cập nhật báo lỗi ngay ở bước tải danh sách gói: máy có một nguồn phần mềm hỏng do chương trình hay hướng dẫn khác thêm vào. Mở Nguồn Phần mềm từ Start Menu, vào Kho bổ sung, bỏ chọn dòng hỏng rồi cập nhật lại. Từ 1.3.4, Trung tâm cập nhật tự bỏ qua nguồn hỏng kiểu này.
-
Từ CaramOS 1.0.1: cài Trung tâm cập nhật một lần, rồi mở Trung tâm cập nhật CaramOS từ Start Menu:
curl -fsSL https://caramos.vietnamlinuxfamily.net/install-caramos-ota.sh | sudo bash
Note
Không code trực tiếp các thay đổi hệ thống vào config/hooks/live/ nếu thay đổi đó cần đến được máy
người dùng đã cài. Hãy viết migration trong packages/caramos-ota. Xem hướng dẫn phát triển OTA:
packages/caramos-ota/README.md.
| Thành phần | Công nghệ / vai trò hiện tại |
|---|---|
| Base ISO | Linux Mint 22.3 Cinnamon 64-bit |
| Ubuntu base | Ubuntu 24.04 LTS / noble |
| Desktop | Cinnamon + LightDM theo Linux Mint base |
| Build method | ISO remaster: extract → customize → OTA bootstrap → repack |
| Build scripts | Bash + Makefile, tách module trong scripts/ |
| OTA | caramos-ota: timestamp migrations chạy theo ledger, phát hành qua PPA ppa:vietnamlinuxfamily/caram-os |
| Update Center | caramos-ota-notifier + pkexec caramos-ota --upgrade --yes |
| App Center | caramos-app-center (Python, GTK4, libadwaita), repo riêng, phát hành bằng GitHub Release có chữ ký |
| Kiểm tra driver, Góp ý & hỗ trợ | caramos-driver-check, caramos-help (GTK4, libadwaita) và applet Cinnamon caramos-help@caramos, trong gói caramos-ota |
| Control Center | Applet Cinnamon caramos-control-center@caramos |
| Legacy hooks | config/hooks/live/ chỉ dùng cho bootstrap/build-time nền tảng, không là nơi phát triển feature OTA mới |
| Overlay | config/includes.chroot/ chứa file nền cần có trong ISO/rootfs |
| Compression | SquashFS lz4 cho dev, xz cho release |
| Theme / Icon / Cursor | Cinnamon Delight, Tela Circle, Bibata |
| Font / Input | Be Vietnam Pro, Fcitx5 + Lotus |
| Apps có sẵn | Firefox; còn lại cài qua App Center (Flathub, kho Ubuntu hay gói tải về) |
./
├── build.sh # Script build chính
├── Makefile # Target build/dev/release/debug
├── scripts/ # Module build ISO
│ ├── config.sh # Version ISO, base migration version, mirror, output
│ ├── utils.sh # Log, deps, download ISO, mount helpers
│ ├── extract.sh # Mount ISO + rsync + unsquashfs
│ ├── customize.sh # Chroot + packages + overlay + hooks + OTA bootstrap
│ ├── ota_bootstrap.sh # Build caramos-ota, App Center .deb và chạy migration vào ISO rootfs
│ ├── repack.sh # mksquashfs + xorriso
│ ├── boot_config.sh # Boot menu + Plymouth branding
│ ├── overlay.sh # Copy config/includes.chroot vào rootfs
│ ├── chroot_shell.sh # Debug chroot
│ └── debug_iso.sh # Kiểm tra ISO/boot branding
├── config/ # Lớp bootstrap ISO/rootfs
│ ├── packages.txt # Packages nền cài thêm khi build ISO
│ ├── hooks/live/ # Hook build-time legacy, hạn chế thêm logic mới
│ └── includes.chroot/ # Overlay copy trực tiếp vào rootfs trước OTA bootstrap
├── packages/ # Debian packages do CaramOS duy trì
│ ├── caramos-ota/ # Trung tâm cập nhật, migration, Control Center, Kiểm tra driver, Góp ý & hỗ trợ
│ │ ├── debian/changelog # Version package OTA publish qua PPA
│ │ ├── usr/bin/ # caramos-ota, notifier, update runner, caramos-driver-check, caramos-help
│ │ └── usr/lib/python3/dist-packages/caramos_ota_update/migrations/
│ │ ├── v1_0_2 … v1_0_12/ # Migration legacy (đóng băng)
│ │ └── YYYYMMDDHHMMSS_slug/ # Timestamp migration (từ 1.0.13)
│ └── caramos-app-center/ # Git submodule VN-Linux-Family/CaramOS-app-center
├── docs/ # Tài liệu vận hành/release tracking
├── assets/ # Logo, banner, ảnh chụp màn hình
├── Dockerfile # Docker builder
└── docker-compose.yml # Docker build entrypoint
Landing page caramos.vietnamlinuxfamily.net nằm ở repo riêng VN-Linux-Family/caramos-landing.
Important
config/hooks/live/ không còn là nơi chính để phát triển cập nhật hệ thống.
Nếu thay đổi cần áp dụng cho máy người dùng đã cài CaramOS, hãy viết migration
trong packages/caramos-ota/usr/lib/python3/dist-packages/caramos_ota_update/migrations/.
Version sản phẩm nằm trong source tree, ở scripts/config.sh:
CARAMOS_VERSION="1.3.9"make release VERSION=x.y.z đóng dấu version này cùng lúc vào scripts/config.sh, metadata release và
debian/changelog của caramos-ota. Version được dùng cho:
- tên ISO:
CaramOS-<version>-cinnamon-amd64.iso - boot menu/boot branding
/etc/os-release,/etc/lsb-release,/etc/linuxmint/infoneofetch/fastfetch- GitHub Release và package
caramos-otatrên PPA
Khi release, Git tag phải khớp version trong source: version 1.3.9 thì tag là v1.3.9. Nếu tag
không khớp, GitHub Actions dừng trước khi build.
CaramOS dùng mô hình OTA-first. ISO mới vẫn được phát hành, còn máy đã cài từ bản cũ nâng lên bản mới nhất bằng chuỗi migration đã review:
systemd timer
└── caramos-ota --check
├── cập nhật package caramos-ota nếu PPA có bản mới
├── cập nhật App Center từ GitHub Release (đã kiểm tra chữ ký)
├── resolve migration chưa chạy theo ledger
└── ghi /var/lib/caramos-ota/state.json
Update Center
└── user xác nhận
└── pkexec caramos-ota --upgrade --yes
└── caramos-ota-update chạy từng migration
Nguyên tắc chính:
- Timer chỉ check/chuẩn bị state, không tự mở GUI và không tự apply migration.
- Migration chỉ chạy khi user xác nhận trong desktop session hoặc admin chạy CLI.
- Logic thay đổi hệ thống nằm trong
packages/caramos-ota, không nhét vào hook. - Thay đổi sau release được viết thành timestamp migration (
YYYYMMDDHHMMSS_slug/), không gắn version. - ISO build cũng dùng chính chuỗi migration này để đưa rootfs lên bản mới nhất.
Xem chi tiết: packages/caramos-ota/README.md.
Khi build ISO, CaramOS không chỉ copy overlay/hook rồi đóng gói lại. Build flow tự build package
caramos-ota và App Center, cài vào rootfs và chạy toàn bộ chuỗi OTA migration từ
CARAMOS_MIGRATION_BASE_VERSION tới bản mới nhất trước khi repack ISO.
Nói ngắn gọn: ISO build ra đã là bản mới nhất, còn OTA là đường nâng cấp cho máy đã cài từ ISO cũ.
Cài dependency build trên Ubuntu/Mint/Debian:
sudo apt update
sudo apt install squashfs-tools xorriso rsync wget curl isolinux syslinux-common syslinux-utils gettext build-essential debhelper
git submodule update --initBuild dev đầy đủ, nén lz4 để test nhanh:
make buildBuild release local, nén xz để ISO nhỏ hơn:
make release VERSION=x.y.zBuild từ ISO Mint có sẵn:
make build ISO=linuxmint-22.3-cinnamon-64bit.isoTrong quá trình customize, script sẽ chạy:
extract base ISO
→ install packages + overlay + build-time hooks
→ build/install bundled caramos-ota + caramos-app-center
→ caramos-ota-update --from "$CARAMOS_MIGRATION_BASE_VERSION" --target latest
→ repack squashfs + ISO
| Lệnh | Mục đích |
|---|---|
make build |
Build dev đầy đủ, nén lz4 |
make release VERSION=x.y.z |
Đóng dấu version và build release, nén xz |
make prepare |
Bung ISO/rootfs ra build/ để sửa nhanh |
make customize-only |
Chạy packages, overlay và hooks trong rootfs |
make overlay |
Chỉ copy config/includes.chroot vào rootfs |
make quick |
Prepare nếu cần, overlay, repack squashfs và ISO |
make repack |
Đóng gói lại squashfs và ISO từ work tree hiện có |
make iso-only |
Chỉ tạo lại ISO từ build/custom |
make boot-only |
Chỉ áp dụng boot menu, GRUB và Plymouth branding |
make shell |
Vào chroot build/squashfs để debug thủ công |
make debug-iso |
Kiểm tra boot menu/Plymouth/branding của ISO |
make clean |
Xoá build/cache/output ISO |
make clean-work |
Xoá work tree, giữ cache extract |
make clean-cache |
Xoá cache extract/work tree |
make docker-build |
Build dev trong Docker |
make docker-release |
Build release trong Docker |
make docker-clean |
Clean build bằng Docker |
Sau lần build/prepare đầu tiên:
- Nếu sửa file bootstrap ISO như wallpaper, asset hoặc overlay nền: dùng
make overlayrồimake quick. - Nếu sửa package/migration OTA: build/test trong packages/caramos-ota trước, sau đó chạy
make customize-onlyhoặc build lại ISO để OTA bootstrap áp dụng migration vào rootfs. - Không thêm feature mới vào hook chỉ để cập nhật máy user đã cài; hãy viết OTA migration.
make customize-only
make quickNếu chỉ sửa boot menu/Plymouth:
make boot-only
make iso-onlyDebug trong chroot:
make shellDùng Docker nếu máy không phải Ubuntu/Mint/Debian phù hợp:
make docker-buildRelease build trong Docker:
make docker-release VERSION=x.y.zWorkflow CI nằm ở .github/workflows/build.yml.
- Push/PR vào branch
mainhoặcdevelop: build dev ISO bằng./build.sh. - Push tag
v*: kiểm tra tag khớpCARAMOS_VERSION, build release bằng./build.sh --release, tạoSHA256SUMS, đưa ISO lên SourceForge và tạo GitHub Release có link tải.
Ví dụ release 1.3.9:
# 1. Đóng dấu version: scripts/config.sh, metadata và changelog của caramos-ota
make -C packages/caramos-ota prepare-release VERSION=1.3.9
git commit -am "[build] Release 1.3.9"
git push origin main
# 2. Tag: GitHub Actions build ISO, SourceForge và GitHub Release
git tag -a v1.3.9 -m "CaramOS 1.3.9"
git push origin v1.3.9
# 3. Gói caramos-ota lên PPA (cần chìa GPG của người release)
make -C packages/caramos-ota source
make -C packages/caramos-ota gpg-unlock uploadGitHub Release có SHA256SUMS và link tải ISO trên SourceForge (ISO lớn hơn giới hạn tệp đính kèm của
GitHub). App Center có version và quy trình release riêng, xem
VN-Linux-Family/CaramOS-app-center. ISO đóng gói App
Center từ submodule: khi App Center có bản mới, phát hành nó và commit con trỏ submodule trước khi tag CaramOS.
Xem CONTRIBUTING.md để biết thêm về kiến trúc OTA-first, quy trình build/test và hướng dẫn đóng góp.
Quy ước nhanh:
| Task | Vị trí |
|---|---|
| Cập nhật máy user đã cài | packages/caramos-ota/usr/lib/python3/dist-packages/caramos_ota_update/migrations/ |
| Phát triển/troubleshoot OTA | packages/caramos-ota/ |
| Sửa App Center | submodule packages/caramos-app-center (commit và push trong submodule trước) |
| Thêm package nền cho ISO mới | config/packages.txt |
| Sửa overlay nền của ISO | config/includes.chroot/ |
| Hook build-time bắt buộc | config/hooks/live/ — hạn chế, không dùng thay OTA migration |
| Sửa version ISO | make release VERSION=x.y.z (đóng dấu scripts/config.sh) |
| Theo dõi chỗ cần bump version | docs/release-version-tracking.md |
| Sửa landing page | repo VN-Linux-Family/caramos-landing |
| Sửa workflow release | .github/workflows/build.yml |
Cảm ơn tất cả thành viên đã đóng góp cho CaramOS trên GitHub.
CaramOS là phần mềm mã nguồn mở theo giấy phép GPL-3.0.
- Linux Mint — Base distro tuyệt vời
- Ubuntu — Nền tảng LTS ổn định
- VNLF (Vietnam Linux Family) — Cộng đồng Linux Việt Nam
- DrMcC0y — Cinnamon Delight theme/icons
- vinceliuice — Tela Circle icons
- ful1e5 — Bibata cursor
- Fcitx5 và Lotus — bộ gõ tiếng Việt
- Cộng đồng Linux/FOSS Việt Nam
CaramOS — Sweet & Simple Linux
Made with love by Vietnam Linux Family




















