Giải pháp cài đặt hệ thống không cần can thiệp thủ công dựa trên bộ dịch vụ PXE (Preboot Execution Environment), DHCP, TFTP, FTP và cấu hình Kickstart. Mô hình này đặc biệt phù hợp trong môi trường cần triển khai nhiều máy ảo hoặc thiết bị vật lý với hệ điều hành CentOS một cách nhanh chóng và đồng nhất.
Mô hình thử nghiệm
- youxi1: Máy chủ CentOS 7 với hai card mạng — một kết nối cầu nối (bridge) để truy cập Internet (
192.168.1.6), một kết nối vùng LAN riêng (LAN1) làm mạng nội bộ phục vụ PXE. - youxi2: Máy khách CentOS 7, chỉ kết nối vào cùng mạng LAN1 để kiểm tra dịch vụ.
- youxi3: Máy ảo mới, sẽ được cài đặt tự động qua mạng LAN1.
Nguyên lý hoạt động
Quá trình khởi động và cài đặt tự động gồm năm thành phần chính:
- DHCP Server: Cấp địa chỉ IP và thông tin khởi động (như vị trí TFTP server và file boot) cho client có hỗ trợ PXE.
- TFTP Server: Phục vụ các tệp khởi động ban đầu như
pxelinux.0, nhân kernel (vmlinuz) và initramfs (initrd.img). - FTP Server: Lưu trữ gói cài đặt ISO và tệp cấu hình
ks.cfg. - Kickstart: Tập tin cấu hình tự động hóa toàn bộ quy trình cài đặt — từ phân vùng đĩa đến lựa chọn gói phần mềm.
- PXE Client: Phần firmware tích hợp sẵn trên card mạng, cho phép máy tính khởi động từ mạng thay vì ổ cứng hoặc CD/DVD.
Cài đặt các dịch vụ nền tảng
1. Thiết lập FTP server (vsftpd)
Trên youxi1, cài đặt và kích hoạt vsftpd:
[root@youxi1 ~]# yum -y install vsftpd
[root@youxi1 ~]# systemctl enable --now vsftpd
[root@youxi1 ~]# mount /dev/sr0 /var/ftp/pub/
Lưu ý: Đảm bảo thư mục /var/ftp/pub/ chứa nội dung của đĩa cài CentOS (ISO đã mount).
2. Thiết lập TFTP server (xinetd + tftp-server)
Cài đặt và cấu hình TFTP để phục vụ tệp khởi động:
[root@youxi1 ~]# yum -y install tftp-server xinetd syslinux
[root@youxi1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@youxi1 ~]# cp /var/ftp/pub/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@youxi1 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@youxi1 ~]# cp /var/ftp/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@youxi1 ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
Chỉnh sửa /etc/xinetd.d/tftp để bật dịch vụ:
disable = no
server_args = -s /var/lib/tftpboot
Kích hoạt xinetd:
[root@youxi1 ~]# systemctl enable --now xinetd
3. Thiết lập DHCP server
Thêm card mạng thứ hai trên youxi1 với cấu hình tĩnh:
IPADDR="192.168.2.6"
NETMASK="255.255.255.0"
ONBOOT="yes"
Cài đặt và cấu hình DHCP:
[root@youxi1 ~]# yum -y install dhcp
Tạo tập tin /etc/dhcp/dhcpd.conf:
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
option routers 192.168.2.1;
option domain-name-servers 192.168.2.6;
next-server 192.168.2.6;
filename "pxelinux.0";
}
Kích hoạt dịch vụ:
[root@youxi1 ~]# systemctl enable --now dhcpd
4. Tạo tệp cấu hình Kickstart
Cài đặt công cụ đồ họa:
[root@youxi1 ~]# yum -y install system-config-kickstart
Thiết lập kho lưu trữ cục bộ tại /var/ftp/pub, sau đó chạy:
[root@youxi1 ~]# LANG=en_US.UTF-8 system-config-kickstart
Trong giao diện, thiết lập:
- Installation Method: Chọn "Use network installation" → URL:
ftp://192.168.2.6/pub - Partitioning: Tự động phân vùng hoặc tùy chỉnh theo nhu cầu.
- Firewall & SELinux: Vô hiệu hóa SELinux và cấu hình tường lửa nếu cần.
- Package Selection: Chọn "Customize now" để thêm các nhóm gói mở rộng.
Lưu tệp dưới dạng /var/ftp/ks.cfg (đường dẫn phải khớp với tham số inst.ks= trong menu PXE).
5. Cập nhật menu khởi động PXE
Chỉnh sửa /var/lib/tftpboot/pxelinux.cfg/default:
default linux
timeout 600
label linux
menu label ^Install CentOS 7 (Automated)
kernel vmlinuz
append initrd=initrd.img inst.ks=ftp://192.168.2.6/ks.cfg inst.repo=ftp://192.168.2.6/pub
Kiểm tra dịch vụ
Trên youxi2, thực hiện lần lượt:
- Đặt
BOOTPROTO=dhcpvà khởi động lại mạng → xác nhận nhận IP từ DHCP. - Kết nối tới FTP:
lftp 192.168.2.6→ kiểm tra thư mụcpub. - Tải tệp kernel qua TFTP:
tftp 192.168.2.6 -c get vmlinuz.
Triển khai máy ảo mới
Tạo youxi3 với các thông số:
- Mạng: Kết nối vào LAN1 (cùng dải
192.168.2.0/24). - Bộ nhớ: Ít nhất 2 GB RAM (1 GB gây lỗi khởi tạo initramfs).
- Không gắn bất kỳ đĩa ảo nào.
- Ưu tiên khởi động từ mạng (Network Boot/PXE) trong BIOS/UEFI.
Sau khi hoàn tất cài đặt, điều chỉnh thứ tự khởi động để ưu tiên ổ cứng nhằm tránh lặp lại quá trình.