2018年3月21日 星期三

CentOS 7 as initramfs for PXE server

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





沒有留言:

張貼留言