在ThinkPad T23上使用Slackware Linux
--从网络安装Slackware Linux
前言:
当你没有光驱,没有现有的Windows系统,而有网络环境的时候,或者需要在一个LAN环境下安装一台或多台Slackware的时候,或者你想尝试网络安装?Slackware提供了这条路径。
I 需求
1 客户端
1.1 Slackware支持的带有PXE功能的网卡
1.2 PC BIOS支持网络启动
2 服务端
2.1 支持BOOTP协议的服务。BOOTP(定义于RFC1532)是为两个目的而设计的:其一是客户机能请求一个IP地址和其他TCP/IP设置信息,其二则是使无盘工作站在通过 TFTP 协议获得映像以后可以请求得到引导文件信息的位置,以便客户机可以从那里启动。但是,BOOTP并不支持租用期的概念,每台客户机的硬件地址必须和一个实际的IP地址相联系。基于BOOTP的DHCP是满足该条件的一项服务。
2.2 TFTP(trivial file transfer protocol),用于传输文件。
2.3 NFS服务端,用于提供远程终端接收文件。
II 配置服务端
注:本文实验环境的服务端采用Slackware 11.0进行配置,下文中所有配置文件的某些参数请根据自身情况进行修改设置。
1 DHCP
dhcpd的配置文件/etc/dhcpd.conf:
#dhcpd.conf
#
# Configuration file for ISC dhcpd
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
uthoritative;
ddns-update-style none;
allow bootp;
allow booting;
subnet 192.168.123.0 netmask 255.255.255.0 {
next-server 192.168.123.248;
option routers 192.168.123.254;
option subnet-mask 255.255.255.0;
option domain-name "lab.lo";
option domain-name-servers 219.141.136.10,219.150.32.132;
option broadcast-address 192.168.123.255;
default-lease-time 604800;
max-lease-time 1209600;
range dynamic-bootp 192.168.123.150 192.168.123.160;
use-host-decl-names on;
}
host pxe-linux {
hardware ethernet 00:c0:9f:27:ff:00;
fixed-address 192.168.123.151;
filename "/slackware-11.0/pxelinux.0";
}
2 TFTP
TFTP由inetd服务启动,确保/etc/inetd.conf 文件中的TFTP服务未被注释:
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot -r blksize
就像你在上一行中看到的,TFTP工作在/tftpboot目录下,所以确保文件系统里有该目录,如果没有:
#mkdir /tftpboot
然后,启动或者重新启动/etc/rc.d/rc.inetd。
3 NFSD
NFSD的配置文件为/etc/exports,向其中加入以下这一行:
/var/mirror/slackware/slackware-11.0/192.168.123.0/24(ro,sync,all_squash)
这里的"/var/mirror/slackware/slackware-11.0/"为Slackware软件包存放地,根据自己的设置修改,包括"192.168.123.0/24"这里的IP设置。然后启动或者重新启动NFSD:
#/etc/rc.d/rc.nfsd start|restart
4 PXELinux
#mkdir -p /var/mirror/slackware/slackware-11.0/
将Slackware的文件放到该目录下,此目录为Slackware目录树的根目录,也就是包含ChangeLog.txt,slackware以及kernels等子目录。
#mkdir -p /tftpboot/slackware-11.0/pxelinux.cfg
#cp /usr/share/syslinux/pxelinux.0 /tftpboot/slackware-11.0/
PXE客户端将通过TFTP从该目录获取bootloader。
#cd /var/mirror/slackware/slackware-11.0/isolinux
#cp message.txt f2.txt f3.txt /tftpboot/slackware-11.0/
这里放置slackware开始安装时的交互信息。
#cd ..
#cp -r kernels/ /tftpboot/slackware-11.0/
这里放置启动安装程序后可供选择的内核。
下面创建initrd.img。这一步不可少,当你进行网络安装的时候,slackware安装程序需要识别客户端网卡。看到不少论坛上有人问为什么选择安装包后屏幕一闪"好像"安装已经结束了,就是这个原因。这里将所有网卡的驱动加载进initrd.img。
#mkdir -p /tmp/pxe/initrd
#mkdir /tmp/pxe/pcmcia
#mkdir /tmp/pxe/network
#mkdir /tmp/pxe/script
在/tmp/pxe/script文件夹下放置几个脚本。
#gunzip -cd /var/mirror/slackware/slackware-11.0/isolinux/initrd.img > /tmp/pxe/initrd.dsk
#cd /tmp/pxe
#mount -o loop,ro initrd.dsk initrd/
#mount -o loop,ro /var/mirror/slackware/slackware-11.0/isolinux/pcmcia.dsk pcmcia/
#mount -o loop,ro /var/mirror/slackware/slackware-11.0/isolinux/network.dsk network/
#dd if=/dev/zero of=/tmp/pxe/newinitrd bs=1k count=9500
#mkfs.ext2 -m 0 -F /tmp/pxe/newinitrd
#tune2fs -i 0 /tmp/pxe/newinitrd
#mkdir /tmp/pxe/out/
#mount -o loop /tmp/pxe/newinitrd /tmp/pxe/out/
#cp -a /tmp/pxe/initrd/* /tmp/pxe/out/
#cp -a /tmp/pxe/network/* /tmp/pxe/out/
#cp -a /tmp/pxe/pcmcia/* /tmp/pxe/out/
修改脚本以使安装程序不再搜索光驱或者软驱来加载磁盘镜像,因为所有需要的都在新的root文件系统里了。
#cd /tmp/pxe/script
#cat pcmcia > /tmp/pxe/out/bin/pcmcia
#cat network > /tmp/pxe/out/bin/network
#patch -p0 /tmp/pxe/out/scripts/network.sh network.sh.diff
重新生成内核模块依赖性文件。
#gunzip -cd /var/mirror/slackware/slackware-11.0/kernels/sata.i/System.map.gz > /tmp/pxe/System.map
#rm -f /tmp/pxe/out/lib/modules/2.4.33.3/modules.*
#/sbin/depmod -a -b /tmp/pxe/out -F /tmp/pxe/System.map 2.4.33.3
gzip root文件系统,然后将它放到tftpboot目录下。
#umount /tmp/pxe/initrd
#umount /tmp/pxe/network
#umount /tmp/pxe/pcmcia
#umount /tmp/pxe/out
#gzip -9f /tmp/pxe/newinitrd
#mv /tmp/pxe/newinitrd.gz /tftpboot/slackware-11.0/initrd.img
清理临时文件
#cd
#rm -r /tmp/pxe
将pxelinux配置文件放到TFTP目录下。
#cp /var/mirror/slackware/slackware-11.0/isolinux/isolinux.cfg /tftpboot/slackware-11.0/pxelinux.cfg/default
修改最终文件里的绝对路径为相对路径
#sed -i -e "s/ramdisk_size=[[:digit:]]*/ramdisk_size=9500"/ -e "s#/kernels/#kernels/#" /tftpboot/slackware-11.0/pxelinux.cfg/default
至此,服务端设置完毕。
III 进行安装
客户端从网络启动,搜索PXE服务器,加载PXE启动代码,完成后会出现slackware安装界面,选择一个内核启动,以root登陆,分区,然后为客户端网卡选择一个内核模块加载,这里必须用network命令让内核提供适合该网卡的驱动。
进入SOURCE对话框后,需要提供以下参数:
Your own IP Address (pick any unused) 192.168.123.222
Your netmask 255.255.255.0
The gateway 192.168.123.254
NFS server address 192.168.123.100
Slackware directory on the NFS server /var/mirror/Slackware/slackware-11.0/slackware
下面的步骤就像从光驱安装一样了,just go on...
IV 参考文档
pxe.txt from the slackware-11.0 ISO image.
http://www.slackware.com/~alien/tools/slackboot/
The end.
Follow this link to leave a comment.