# copy files from the rhel.iso image to system if [ ! -b /tmp/cdrom ];then echo "make cdrom node using mknod" >> /root/ins.log # get the major number major=$(lsblk |grep rom | awk '{print $2}' |awk -F : '{print $1}') # get the minor number minor=$(lsblk |grep rom | awk '{print $2}' |awk -F : '{print $2}') echo "major=${major} minor=${minor}" >> /root/ins.log # make sure we have what we need; create device node if so [ -n "$major" -a -n "$minor" ] && mknod /tmp/cdrom b ${major} ${minor} fi echo "mount the iso to /mnt/source" >> /root/ins.log [ ! -d /mnt/source ] && mkdir -p /mnt/source mount -t iso9660 -o ro /tmp/cdrom /mnt/source
這樣的話我們的安裝鏡像rhel.iso就掛載到/mnt/source目錄下,在kickstart.cfg的%post下添加拷貝檔案的指令碼
# copy the id_rsa.pub to authorized_keys [ ! -d /root/.ssh ] && mkdir -p /root/.ssh cat /mnt/source/id_rsa.pub >> /root/.ssh/authorized_keys [ $? -ne 0 ] && echo "copy id_rsa.pub to authorized_keys failed." >> /root/ins.log
原始問題:redhat可以利用kickstart.cfg檔案的內容進行自動化安裝,並且在kickstart.cfg檔案中加入%post標籤就可以在安裝結束後執行一些指令碼,這些指令碼放在%post標籤後面。 但一個問題是,當安裝好OS後,如果我們想從原始的ISO鏡像拷貝檔案到安裝好的系統,那麼必需對其進行掛載,以上代碼實現了其功能