無頭 VNC 安裝碟
1. 描述
這個提示會示範如何修改開機碟,好讓安裝程式啟動後會連線到一個接聽的 VNC 檢視器。這張碟本的作用很簡單 --> 就是容許在不連接鍵盤/滑鼠/顯示器的情況下安裝 CentOS 系統。只要插上電源及乙太網便行了(假設系統能使用光碟開機)。
2. 已測試的 ISO
我已經親身在下列 ISO 裡作出修改:
*CentOS 4.2 伺服器光碟
*CentOS 5.1/5.2 網絡安裝碟
*CentOS 5.2 光碟(只須首張碟,因為連線已完成)
*CentOS 5.3 DVD
*CentOS 6.3 minimal 安裝 CD(在製作中)。暫時未能 100% 運作。它不會略過碟本驗證。
註 —— 我見不到有原因會導致這個方法不適用於任何一個 ISO 檔。我只是將親自測試過的列出來。
3. 下載 ISO
你首先需要的就是 CentOS 鏡像內的其中一個 ISO 檔。由這點起,不論你下載了哪一個 ISO 檔,我都會稱呼它為 centos.iso。
- 將 centos.iso 下載到你的主目錄。
# cd /home/yourDirectory # wget http://dom.com/path/to/centos.iso
4. 掛載 ISO 檔並準備編輯
現在我們會掛載下載了的 centos.iso,好讓我們能複製檔案到我們的檔案系統來進行所需的編輯,藉此達至目標。
- 執行所須的指令來抽取 ISO 內的檔案到你的硬盤。
# mount -oloop centos.iso /mnt # mkdir /tmp/installDisk # cp -a /mnt/* /tmp/installDisk/ # cp /mnt/.* /tmp/installDisk/ # cd /tmp/installDisk
5. 編輯 isolinux.cfg
既然我們已經複製了 ISO 內的檔案到我們的硬盤上,現我們便須要編輯 isolinux.cfg 這個檔案並加入我們的修改。我們將會改動光碟啟動時傳送給安裝程式的「開機選項」。
- 利用你喜歡的編輯器開啟檔案。
# vi isolinux/isolinux.cfg
或
# nano isolinux/isolinux.cfg
現時檔案會有以下的模樣: 註 —— CentOS 6x 似乎對選項作出了少量改動。
default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg F7 snake.msg label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=8192 label text kernel vmlinuz append initrd=initrd.img text ramdisk_size=8192 label expert kernel vmlinuz append expert initrd=initrd.img ramdisk_size=8192 label ks kernel vmlinuz append ks initrd=initrd.img ramdisk_size=8192 label lowres kernel vmlinuz append initrd=initrd.img lowres ramdisk_size=8192 label local localboot 1 label memtest86 kernel memtest append -
- 加入改動令它使用我們所需的設定。主要改動包括:
* prompt
* timeout
* 附屬於 "label linux" 的 append 行
註 —— 切記將 IP 修改為擁有接聽 VNC 檢視器的工作台的 IP。分派固定 IP 給這個工作台是一個好主意,因為這個 IP 將會被燒錄在光碟上。
註 —— CentOS 6x 似乎對選項作出了少量改動。我只修改了 PROMPT、TIMEOUT 及 APPEND 行。在 CentOS6.x 下是沒有 ramdisk_size 的,因此我略過了它。
- 為一般的 CD/DVD(採用 DHCP),請令檔案與下列吻合:
default linux prompt 0 timeout 0 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg F7 snake.msg label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=8192 vnc vncconnect=192.168.0.100 headless ip=dhcp ksdevice=eth0 method=cdrom lang=en_US keymap=us label text kernel vmlinuz append initrd=initrd.img text ramdisk_size=8192 label expert kernel vmlinuz append expert initrd=initrd.img ramdisk_size=8192 label ks kernel vmlinuz append ks initrd=initrd.img ramdisk_size=8192 label lowres kernel vmlinuz append initrd=initrd.img lowres ramdisk_size=8192 label local localboot 1 label memtest86 kernel memtest append -
- CentOS 6 範例(亦可簡單地應用於下列例子中):
default linux-vnc prompt 0 timeout 0 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.3! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux-vnc menu label ^Install over VNC menu default kernel vmlinuz append initrd=initrd.img vnc vncconnect=192.168.254.1 headless ip=dhcp ksdevice=eth0 method=cdrom lang=en_US keymap=us label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
- 如果碰巧你安裝時沒有一個可用的 DHCP 伺服器,下面是為一般 CD/DVD(採用固定網絡設定)而設:
註 —— 切記代入適合你的網絡的設定(例如:IP、網絡遮罩、閘道、DNS 等)。
default linux prompt 0 timeout 0 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg F7 snake.msg label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=8192 vnc vncconnect=192.168.0.100 headless ip=192.168.0.10 gateway=192.168.0.254 netmask=255.255.255.0 dns=192.168.0.254 ksdevice=eth0 method=cdrom lang=en_US keymap=us label text kernel vmlinuz append initrd=initrd.img text ramdisk_size=8192 label expert kernel vmlinuz append expert initrd=initrd.img ramdisk_size=8192 label ks kernel vmlinuz append ks initrd=initrd.img ramdisk_size=8192 label lowres kernel vmlinuz append initrd=initrd.img lowres ramdisk_size=8192 label local localboot 1 label memtest86 kernel memtest append -
- 又或者設定一張網絡開機光碟(採用 DHCP):
註 —— 我們須要指定一個 URL 來取得設置檔。這個設定與一般光碟版本只有少許差異。
default linux prompt 0 timeout 0 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg F7 snake.msg label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=8192 vnc vncconnect=192.168.0.100 headless ip=dhcp ksdevice=eth0 method=http://mirror.centos.org/centos/5.2/os/i386 lang=en_US keymap=us label text kernel vmlinuz append initrd=initrd.img text ramdisk_size=8192 label expert kernel vmlinuz append expert initrd=initrd.img ramdisk_size=8192 label ks kernel vmlinuz append ks initrd=initrd.img ramdisk_size=8192 label lowres kernel vmlinuz append initrd=initrd.img lowres ramdisk_size=8192 label local localboot 1 label memtest86 kernel memtest append -
註 —— 如果你使用網絡開機光碟,利用一個本地(位於你的內聯網裡)的套件來源會較為禮貎(就頻寬而言)。當然這樣亦較為高速。
註 —— 明顯地,你可以合併固定 IP 的範例及網絡開機的範例來裝作一個不需 DHCP 伺服器的網絡開機版本。
- 切記儲存你的改動及離開編輯器。
從上可見我作了一些輕微的改動,例如將 prompt 及 timeout 設為 "0"。這是由於我不希望須要用鍵盤來作出互動,亦無法在畫面上看見這些提示字串。這張光碟單單是為 VNC 安裝而設。因此提示及計時都被移除。另外我亦修改了預設的開機選項。如你所見,我加入了選項令預設開機時會向 192.168.0.100 上的接聽檢視器進行 VNC 連線。明顯地你必須修改它來配合所需的網絡。有一個 vnc 參數(在開機選項中)可用來設定安裝程式裡的 VNC 伺服器的密碼 —— 但既然我使用一個位於防火牆後面的私人網絡 —— 算了吧。用不著它。關注安全性的讀者或許會想加入這個參數。其它選項是用來自動填入所需的數值 —— 否則你便會收到填寫它們的提示。但再一次 —— 沒有鍵盤/滑鼠/顯示器。因此我們在這裡傳入所需資料。請按你的喜好修改其它設定,例如選用另一種語言。此外,你的網絡上必須有一台 DHCP 伺服器為進行安裝的目的機器分派 IP。
- 用下面這個指令矯正一些權限……
chmod u+w isolinux/*
6. 建立新的 ISO
現在我們會建立一個新的 ISO 檔來燒錄在新碟上。
註 —— 我的 ISO 檔最後稱為 "vncCentOS.iso" —— 請按你的喜好隨意命名。
# mkisofs -o ../vncCentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T .
7. 移除 ISO 的媒體檢查
我們需要從光碟移除媒體檢查,否則安裝永遠不會啟動。這個方法確實是一流。
- 檢查你是否已經安裝了 anaconda-runtime。
# yum list | grep anaconda-runtime
以上的輸出應告訴你它是否已被安裝。
- 假若你需要安裝它,請執行:
# yum install anaconda-runtime
註 —— 這個套件是 centos 軟件庫裡的一部份。至於那個工具,它名叫 implantisomd5。這個工具被安裝 /usr/lib/anaconda-runtime/ 內。
註 —— CentOS 6.x 下的位置有所改動。此工具位於 “/usr/bin/implantisomd5”。 - 移除媒體檢查: - 在 CentOS 6.x - 利用你所喜歡的光碟燒錄軟件燒錄 ISO 檔 - 以接聽模式開啟你的 vnc 檢視器(在工作台上) - 在你要安裝 CentOS 的機器上放入光碟並開機,然後按正常步驟安裝操作系統。 希望這對你有幫助。總括來說這不是一個很複雜的程序。最困難的事情是從不同資源搜羅資料,以及我欠缺使用 anaconda 進行非預設安裝的經驗。 請享受。 Translation of revision 17 # /usr/lib/anaconda-runtime/./implantisomd5 --supported-iso ../vncCentOS.iso
# /usr/bin/implantisomd5 --supported-iso ../vncCentOS.iso
註 —— 如果你的 ISO 有另一個名稱,切記要修改以上的指令。