三月 27th, 2007 by latteye

上班還是蠻忙的,所以最近LinuxBlog少有更新。
LinuxBlog 原則上不登 Server 性質的文章。但基于本文應用廣泛,且耗費了我一天的時間,還是記錄一下吧。

一、思路

無光驅、軟件的一臺服務器,想要安裝安裝Linux系統。我們需要通過網卡的PXE協議,引導之后安裝Linux。流程:機器啟動-網卡引導-通過 DHCP獲得IP地址-通過tftp獲得最基礎的內核文件,使用該內核文件啟動機器-啟動之后可以對安裝程序配置,選擇使用http、ftp、nfs方式 遠程獲得安裝所需要的軟件包。

顯然,網絡安裝是必須配置服務器端的。我們的服務端需要提供以下服務:

DHCP
TFTP
HTTP(FTP,NFS)

二、服務配置

1.DHCP

配置文件

option domain-name "mydomain";
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
server-name "bootserver";
subnet 192.168.123.0 netmask 255.255.255.0 {
range 192.168.123.200 192.168.123.201;
deny unknown-clients;
}
host MyP5 {
filename "pxelinux.0";
server-name "bootserver";
hardware ethernet ae:32:20:00:b0:02;
fixed-address 192.168.123.90;
}

這是復制來的配置文件,稍微解釋一下:

filename 后面是tftp目錄下的文件,pxelinux.0 則是 syslinux 包內的文件。默認 pxelinux.0 可能在 /usr/lib/syslinux 目錄下,必須將其復制到 tftp 目錄下。

host MyP5 下出現的:

hardware ethernet ae:32:20:00:b0:02;
fixed-address 192.168.123.90;

為客戶機(需要安裝系統的機器)的 MAC 地址和所分配的IP地址。

2.TFTP

由于必須支持TSIZE協議,所以不能安裝最原始的TFTP包。我選擇使用 tftp-hpa 。

編輯文件 /etc/xinetd.d/tftp (若沒有,則添加tftp文件)(若不存在xinetd.d,請安裝 xinetd 包)

# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}

這里將 /tftpboot 定義為 tftp 服務的默認目錄,您可以自行修改。

保存之后重啟 /etc/init.d/xinetd 服務,即可開啟 tftp 服務。

如何測試 tftp 是否成功開啟?

在 tftp 目錄下創建一個文件,比如 1.txt 。
在 Shell 中連接 tftp 服務:

tftp 127.0.0.1
tftp>get 1.txt

若服務成功開啟,則能看到成功下載文件的提示。并在當前目錄下找到1.txt文件。

接著復制光盤中 isolinux 目錄下的 vmlinuz、initrd.img 文件到 /tftpboot 目錄下。
在 /tftpboot 中創建文件夾 syslinux.cfg 。syslinux.cfg 中保存了 pxelinux 的兩個配置文件:default、list。

default:

default linux

label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216

你可以寫很多個label,這取決于你同時想在這臺服務器上提供多少種版本的 Linux 給客戶機安裝。一個版本一個label,當然kernel、與initrd文件名不可以重復。

list:


Choose one of the following Linux distributions for your installation:
Name Distribution Arch. Installation media
-------------------------------------------------------------------------
CentOS CentOS 4.4 i386 192.168.99.90:/

你也可以添加多行,用來選擇不同的發行版本。在選擇的時候填寫Name下的內容即可。

三、復制光盤文件

將光盤文件復制到對應目錄(ftp、http、nfs),如果是使用 http 使用以下命令將多張光盤復制到一個目錄里面:

[root@bootserver] # cp -arv /media/cdrom/* /install

如果使用 ftp,請確保可以訪問(可以有用戶名、密碼)