[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

無頭 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”。

- 移除媒體檢查:

# /usr/lib/anaconda-runtime/./implantisomd5 --supported-iso ../vncCentOS.iso

- 在 CentOS 6.x

# /usr/bin/implantisomd5 --supported-iso ../vncCentOS.iso

—— 如果你的 ISO 有另一個名稱,切記要修改以上的指令。

- 利用你所喜歡的光碟燒錄軟件燒錄 ISO 檔

- 以接聽模式開啟你的 vnc 檢視器(在工作台上)

- 在你要安裝 CentOS 的機器上放入光碟並開機,然後按正常步驟安裝操作系統。

希望這對你有幫助。總括來說這不是一個很複雜的程序。最困難的事情是從不同資源搜羅資料,以及我欠缺使用 anaconda 進行非預設安裝的經驗。

—— 切記要首先在一個顯示上器測試你的光碟,因為我們已經停用媒體檢查。

—— VNC 伺服器連線到檢視器可能會需要一點時間(約 1-5 分鐘)。

請享受。

Translation of revision 17


2023-09-11 07:23