1. 安裝CentOS 7.x 在任意一台電腦 or 使用已安裝CentOS 7.x的電腦
2. 停用SELinux(做完的無碟系統仍然會是開啟SELinux的)
• Edit /etc/sysconfig/selinux
• Set SELINUX=disabled
• reboot to apply the new SELinux configuration
3. 建立相關資料匣
# mkdir -p /var/nodes/initramfs
# mkdir -p /var/nodes/newroot
# cd /var/nodes/initramfs
# mkdir bin dev etc proc sys usr usr/bin usr/sbin
4. 下載busybox
# cd /var/nodes/initramfs/bin/
# wget https://www.busybox.net/downloads/binaries/1.21.1/busybox-x86_64
# chmod +x busybox-x86_64
# ln -s busybox-x86_64 sh
# cp /etc/hosts /var/nodes/initramfs/etc/hosts --> 待確認
5. 建立init檔
# vim /var/nodes/initramfs/init
------------------------------------------------------------
#!/bin/sh
echo "Welcome to the initramfs!"
# Make all core utils reachable
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
# Create all busybox's symb links
/bin/busybox-x86_64 --install -s
# Mount /newroot in tmpfs
mount -t tmpfs -o size=2048M tmpfs /newroot
# Unpack the root file system
tar -x -z -f newroot.tar.gz
# Mount /usr read-only and /home read-write from NFS server ----> 回存到nfs server
#mount -t nfs4 -o ro $NFS_server_IP:/usr /newroot/usr
#mount -t nfs4 -o rw $NFS_server_IP:/home /newroot/home
# Switch the root filesystem and start normal boot process
exec switch_root /newroot /sbin/init
# Drop to shell if switch_root fails
sh
------------------------------------------------------------
# chmod +x /var/nodes/initramfs/init
6. 透過yum安裝OS到newroot下
# yum -y groupinstall "Minimal Install" --installroot=/var/nodes/newroot --releasever=/
可以使用# yum groups list查詢group
7. 將其它所需的套件補完
# yum -y install kernel kernel-devel ipmitool dialog --installroot=/var/nodes/newroot --releasever=/
8. 配置newroot OS
# cp /etc/resolv.conf /var/nodes/newroot/etc/resolv.conf
# vim /var/nodes/newroot/etc/fstab
none /tmp tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
關閉selinux
# vim /var/nodes/newroot/etc/selinux/config
SELINUX=disabled
設定hostname
# vim /var/nodes/newroot/etc/hosts
127.0.0.1 localhost
192.168.0.100 nfsserver
9. 設定os root password(沒有關閉SELinux會不成功)
# chroot /var/nodes/newroot
# passwd root
# exit
10. 壓縮newroot os (注意壓縮路徑)
# cd /var/nodes/
# tar -cvzf initramfs/newroot.tar.gz newroot
11. 壓縮成initramfs.cpio.gz
# cd /var/node/initramfs
# find . -print0 | cpio --null -ov --format=newc | gzip -9 > /var/nodes/initramfs.cpio.gz
12. 在PXE上建立資料匣
# mkdir -p /var/lib/tftpboot/pxelinux/ramdisk
13. 將vmlinuz & initramfs複製到PXE server上
# scp /var/nodes/initramfs.cpio.gz root@192.168.100.1:/var/lib/tftpboot/pxelinux/ramdisk/
# scp /var/nodes/newroot/boot/vmlinuz-3.10.0-693.21.1.el7.x86_64 root@192.168.100.1:/var/lib/tftpboot/pxelinux/ramdisk/
14. 設定PXE file
# vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/defaults
default menu.c32
prompt 0
label centos7.4 Ramdisk
kernel /ramdisk/vmlinuz-3.10.0-693.21.1.el7.x86_64
append initrd=/ramdisk/initramfs.cpio.gz rw ip=dhcp net.ifnames=0 selinux=0
2. 停用SELinux(做完的無碟系統仍然會是開啟SELinux的)
• Edit /etc/sysconfig/selinux
• Set SELINUX=disabled
• reboot to apply the new SELinux configuration
3. 建立相關資料匣
# mkdir -p /var/nodes/initramfs
# mkdir -p /var/nodes/newroot
# cd /var/nodes/initramfs
# mkdir bin dev etc proc sys usr usr/bin usr/sbin
4. 下載busybox
# cd /var/nodes/initramfs/bin/
# wget https://www.busybox.net/downloads/binaries/1.21.1/busybox-x86_64
# chmod +x busybox-x86_64
# ln -s busybox-x86_64 sh
# cp /etc/hosts /var/nodes/initramfs/etc/hosts --> 待確認
5. 建立init檔
# vim /var/nodes/initramfs/init
------------------------------------------------------------
#!/bin/sh
echo "Welcome to the initramfs!"
# Make all core utils reachable
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
# Create all busybox's symb links
/bin/busybox-x86_64 --install -s
# Mount /newroot in tmpfs
mount -t tmpfs -o size=2048M tmpfs /newroot
# Unpack the root file system
tar -x -z -f newroot.tar.gz
# Mount /usr read-only and /home read-write from NFS server ----> 回存到nfs server
#mount -t nfs4 -o ro $NFS_server_IP:/usr /newroot/usr
#mount -t nfs4 -o rw $NFS_server_IP:/home /newroot/home
# Switch the root filesystem and start normal boot process
exec switch_root /newroot /sbin/init
# Drop to shell if switch_root fails
sh
------------------------------------------------------------
# chmod +x /var/nodes/initramfs/init
6. 透過yum安裝OS到newroot下
# yum -y groupinstall "Minimal Install" --installroot=/var/nodes/newroot --releasever=/
可以使用# yum groups list查詢group
7. 將其它所需的套件補完
# yum -y install kernel kernel-devel ipmitool dialog --installroot=/var/nodes/newroot --releasever=/
8. 配置newroot OS
# cp /etc/resolv.conf /var/nodes/newroot/etc/resolv.conf
# vim /var/nodes/newroot/etc/fstab
none /tmp tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
關閉selinux
# vim /var/nodes/newroot/etc/selinux/config
SELINUX=disabled
設定hostname
# vim /var/nodes/newroot/etc/hosts
127.0.0.1 localhost
192.168.0.100 nfsserver
9. 設定os root password(沒有關閉SELinux會不成功)
# chroot /var/nodes/newroot
# passwd root
# exit
10. 壓縮newroot os (注意壓縮路徑)
# cd /var/nodes/
# tar -cvzf initramfs/newroot.tar.gz newroot
11. 壓縮成initramfs.cpio.gz
# cd /var/node/initramfs
# find . -print0 | cpio --null -ov --format=newc | gzip -9 > /var/nodes/initramfs.cpio.gz
12. 在PXE上建立資料匣
# mkdir -p /var/lib/tftpboot/pxelinux/ramdisk
13. 將vmlinuz & initramfs複製到PXE server上
# scp /var/nodes/initramfs.cpio.gz root@192.168.100.1:/var/lib/tftpboot/pxelinux/ramdisk/
# scp /var/nodes/newroot/boot/vmlinuz-3.10.0-693.21.1.el7.x86_64 root@192.168.100.1:/var/lib/tftpboot/pxelinux/ramdisk/
14. 設定PXE file
# vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/defaults
default menu.c32
prompt 0
label centos7.4 Ramdisk
kernel /ramdisk/vmlinuz-3.10.0-693.21.1.el7.x86_64
append initrd=/ramdisk/initramfs.cpio.gz rw ip=dhcp net.ifnames=0 selinux=0