Tự tạo Ubuntu ISO tùy chỉnh: Hướng dẫn thực hành với Cubic

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Nỗi ám ảnh khi triển khai hệ điều hành lặp đi lặp lại

Việc thiết lập một máy trạm Linux mới thường giống như một cuộc chạy marathon với các tác vụ lặp đi lặp lại. Mỗi khi cài đặt một máy mới, tôi mất hai giờ đầu tiên để chạy apt install, nhập key SSH và cấu hình môi trường Docker. Dù các công cụ như Ansible hay Bash script có giúp ích, chúng vẫn yêu cầu một hệ điều hành cơ bản hoạt động được trước đã. Nếu bạn đang triển khai một dàn máy gồm 20 hay 50 chiếc, quy trình hai bước—cài đặt rồi mới cấu hình—là một nút thắt cổ chai lớn.

Các bản Ubuntu ISO thông thường được xây dựng cho số đông. Chúng không bao gồm các yêu cầu kernel HWE cụ thể, các bản vá bảo mật mới nhất, hay các driver độc quyền mà phần cứng của bạn cần để có thể vào được màn hình đăng nhập. Để bỏ qua sự phiền thoái sau khi cài đặt, bạn cần tích hợp trực tiếp các yêu cầu của mình vào ngay chính bộ cài.

Tại sao các script sau cài đặt thường thất bại

Tôi từng dựa vào một script setup.sh dài 500 dòng lưu trên GitHub. Quy trình rất đơn giản: cài Ubuntu, đăng nhập, và curl script đó về. Tuy nhiên, phương pháp này thất bại ngay khi tôi gặp phải phần cứng có driver mạng không được hỗ trợ. Không có kết nối internet, tôi không thể tải chính cái script dùng để sửa lỗi hệ thống. Những lần khác, một thay đổi trong repository có thể làm hỏng các dependency giữa chừng, khiến tôi kẹt lại với một chiếc máy mới cấu hình được một nửa.

Sau khi quản lý hơn 40 instance Linux trên nhiều nhà cung cấp đám mây khác nhau, tôi nhận ra rằng sự ổn định bắt đầu từ trước cả lần boot đầu tiên. Đưa lớp tùy chỉnh vào giai đoạn tiền cài đặt là cách duy nhất để đảm bảo một môi trường thực sự nhất quán. Đây chính là lúc Cubic (Custom Ubuntu ISO Creator) tỏa sáng. Nó cho phép bạn giải nén một file ISO, truy cập vào môi trường ảo (chroot) để thực hiện các thay đổi, và đóng gói lại thành một image có thể boot được.

Thiết lập môi trường build

Cubic cung cấp quy trình làm việc dựa trên giao diện đồ họa (GUI), nhưng vẫn cho phép bạn toàn quyền truy cập dòng lệnh vào hệ thống tệp của ISO. Bạn sẽ cần một máy host chạy Ubuntu và PPA của Cubic để bắt đầu. Chạy các lệnh sau để chuẩn bị hệ thống:

sudo add-apt-repository ppa:cubic-wizard/release
sudo apt update
sudo apt install cubic

Khởi chạy Cubic từ menu ứng dụng và chọn một thư mục dự án. Tránh sử dụng trực tiếp thư mục home của bạn. Tôi khuyên bạn nên dùng một đường dẫn riêng biệt như ~/builds/custom-ubuntu/. Hãy đảm bảo bạn có ít nhất 20GB dung lượng SSD trống. Cubic tạo ra nhiều file tạm dung lượng lớn trong quá trình giải nén, và tốc độ đọc/ghi đĩa chậm sẽ khiến quá trình này trở nên trì trệ.

Tùy chỉnh ISO trong giai đoạn Chroot

Sau khi chọn ISO gốc (như Ubuntu 24.04 LTS), Cubic sẽ giải nén hệ thống tệp và đưa bạn vào một terminal. Đây là môi trường Chroot. Các lệnh được thực thi tại đây sẽ sửa đổi cấu trúc bên trong của ISO thay vì máy host của bạn.

1. Cập nhật bản vá và cài đặt phần mềm

Bắt đầu bằng việc cập nhật đầy đủ các bản vá cho image. Điều này đảm bảo mọi máy bạn triển khai đều an toàn ngay từ phút đầu tiên và sẽ không yêu cầu người dùng cập nhật ngay 500MB dữ liệu.

apt update
apt upgrade -y

Tiếp theo, hãy cài đặt bộ công cụ cốt lõi mà nhóm của bạn sử dụng. Đối với một bản build phát triển tiêu chuẩn, bạn có thể muốn cài sẵn Git, Vim và Docker để tiết kiệm thời gian sau này:

apt install -y git vim curl wget gpg
# Thêm repository chính thức của Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt install -y docker-ce docker-ce-cli containerd.io

2. Triển khai cấu hình chung

Cài đặt phần mềm chỉ là một nửa chặng đường; nửa còn lại là cấu hình. Sử dụng nút “Copy” trong giao diện Cubic để chuyển các file cục bộ vào ISO. Nếu bạn muốn mọi người dùng mới đều có một bash alias cụ thể hoặc hình nền công ty, hãy đặt các file đó vào /etc/skel/. Hệ thống sẽ tự động sao chép mọi thứ trong thư mục này vào thư mục home của người dùng mới khi tạo tài khoản.

# Di chuyển file cấu hình đã thiết lập sẵn từ /tmp/ vào thư mục skeleton
mkdir -p /etc/skel/.config/dev-tools/
cp /tmp/settings.conf /etc/skel/.config/dev-tools/

Tinh chỉnh nâng cao: Gỡ bỏ Bloatware và Kernel

Tùy chỉnh cũng có nghĩa là lược bỏ. Nếu server của bạn không cần trình duyệt mail hay bộ ứng dụng văn phòng, hãy gỡ chúng để giảm dung lượng ISO và thu hẹp bề mặt tấn công tiềm ẩn. Chỉ riêng việc xóa LibreOffice thường có thể giảm bớt 500MB cho image cuối cùng.

apt purge -y libreoffice* thunderbird*
apt autoremove -y

Cubic cũng cho phép bạn chọn một boot kernel cụ thể. Điều này cực kỳ quan trọng nếu bạn đang triển khai trên các phần cứng đời mới nhất yêu cầu kernel mới hơn bản LTS tiêu chuẩn cung cấp. Sau giai đoạn terminal, bạn có thể sửa đổi các tham số boot trong file grub hoặc isolinux để tự động hóa việc chọn múi giờ và phân vùng đĩa.

Tạo và kiểm tra Gold Image của bạn

Khi các tinh chỉnh đã hoàn tất, nhấn “Next” để chọn kiểu nén. Tôi ưu tiên gzip để build nhanh khi thử nghiệm, nhưng tôi chuyển sang xz cho các bản phát hành chính thức để giữ dung lượng file ở mức tối thiểu. Cuối cùng, nhấn “Generate” để xuất ra file .iso tùy chỉnh của bạn.

Đừng bao giờ triển khai một bản ISO chưa qua kiểm thử lên phần cứng thực tế. Quy tắc cá nhân của tôi là bộ cài chưa test là bộ cài lỗi. Luôn boot image của bạn trong một máy ảo (như Virt-Manager hoặc VirtualBox) trước khi flash nó vào USB.

Danh sách kiểm tra:

  • Bộ cài có boot vào desktop mà không cần can thiệp thủ công không?
  • Các dịch vụ quan trọng như Docker có hoạt động và đúng phiên bản không?
  • Các file trong /etc/skel/ có xuất hiện chính xác trong thư mục home không?
  • Giao diện mạng có được nhận diện ngay lập tức không?

Nếu máy ảo vượt qua các bài kiểm tra này, bạn đã có một gold image đáng tin cậy. Dù bạn đang thiết lập một phòng lab cho sinh viên hay một môi trường phát triển tiêu chuẩn, bản ISO tùy chỉnh này đảm bảo mọi máy tính đều bắt đầu chính xác tại nơi nó cần.

Share: