在ThinkPad T23上使用Slackware Linux

--从网络安装Slackware Linux

Author:Cherife Li

前言:
当你没有光驱,没有现有的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.


Valid XHTML & CSS|©2008 dOtImes.cOm, All rights reserved.|Creative Commons|Linux on Laptops| TuxMobil|Firefox
Google™ Powered
Posted and Maintained by Cherife Li
Last Update: Sunday, 2007-10-07, 1:10, GMT+0800.