远程无盘启动Linux
#1?牐牷驹?
?牐牽突Ф嘶髦挥屑扑慊幕静考褐靼濉PU、 内存等,没有软驱和硬盘,但必须有网卡和启动芯片BootRom。所以,客户机只能通过网络获得操作系统,其启动过程如下:
?牐?1.客户端电脑开机,首先在TCP/IP BootRom 获得控制权之前先作自我测试;
?牐?2.BootRom 发出BOOTP/DHCP请求而获得IP;
?牐?3.如果服务器收到客户机送出的请求,就会回送BOOTP/DHCP回应,内容包括客户端的IP地址、预设网关以及开机映像文件。否则,服务器会忽略这个请求;
?牐?4.BootRom 由 TFTP协议从服务器下载开机映像文件。
?牐?5.客户机通过开机映像文件开机,这个开机映像文件可以只是单纯的开机程序,也可以是操作系统。
?牐?6.开机映像文件将包含kernel loader及压缩过的kernel,此kernel将支持NF Sroot系统。
?牐?7.客户机根据下载的文件启动机器。
?牐犛梢陨掀舳炭梢钥闯觯琇inux的无盘远程启动与Novell、NT下的无盘启动的实现方式是不一样,它不是采用RPL(Remote Initial Program Loader),而是基于标准的BootP/DHCP和TFTP协议并通过NFS文件系统来建立文件系统。相对前两种方式,更具有通用性和适应性,基于Linux系统,我们还可以远程启动DOS、Win95、NT和Linux客户机。
#1?牐犛τ檬道?
?牐牴ぷ骰肪常?
?牐燣inux服务器:server01
?牐牭谝桓隹突Щ簆c01
?牐犓性冻唐舳突?目录:/machines
?牐牭谝桓鲈冻唐舳突Щ柯迹?/machines/pc01
?牐?1.首先,重新编译内核:
?牐爉ake menuconfig
?牐犠⒁猓和绲闹С帧FS-Root支持、BootP(DHCP)的支持必须包括在内。
?牐爉ake clean
?牐爉ake dep
?牐爉ake bpImage
?牐爉ake modules
?牐爉ake modules_install
?牐犞葱幸陨厦詈螅慊岱⑾挚突Ф似舳挠诚裎募?/usr/src/linux/i386/boot目录中。
?牐?2.然后,执行以下命令:
?牐爉knod /dev/nfsroot b 0 255
?牐犘薷钠舳璞福盟赶騈FSRoot,将boot image拷贝到Linux服务器的/tftpboot目录下。
?牐爎dev /dev/nfsroot
?牐?3.为客户机修改服务器,用于建立远程客户机的文件系统。
?牐犜诜衿?/etc/exports 中加入:
?牐?/machines/pc01 pc01(rw,no_root_sq)
?牐爑ash/usr(ro,no_root_squash)??
?牐?/sbin(ro,no_root_squash) /bin (ro,no_root_squash)
?牐?/lib(ro,no_root_squash)/home(rw,no_root_squash)??
?牐?4.使用DHCP,在/etc/dhcpd.conf 加入对远程客户的支持(具体可以参考DHCP-Howto)。在服务器上建立远程客户机目录: /machines
?牐?/machines/pc01 /machines/pc01/bin /machines/pc01/dev
?牐?/machines/pc01/etc /machines/pc01/home /machines/pc01/lib
?牐?/machines/pc01/mnt /machines/pc01/proc /machines/pc01/root
?牐?/machines/pc01/sbin /machines/pc01/server /machines/pc01/tmp
?牐?/machines/pc01/usr /machines/pc01/var建立bin目录
?牐牽奖磗h、umount、ls、rm、cp、domainname、dnsdomainname、nisdomainname、hostname、cat、mount、umount到/machines/pc01/bin 中。建立dev目录:
?牐燾p -a /dev /machines/pc01
?牐?5.建立etc目录:
?牐燾p -a /etc /machines/etc
?牐犠⒁猓罕匦胄薷?/machines/pc01/etc/rc.d 启动文件:将mount -avt nonfs改为 mount -av.允许使用NFS Root文件系统,并按以下格式修改/machines/pc01/etc/fstab文件:
?牐爏erver01:/machines/pc01 /nfs server01:/bin /bin nfs
?牐爏erver01:/usr /usr nfs server01:/sbin /sbin nfs
?牐爏erver01:/home /home nfs server01:/lib /lib nfs none /proc proc
?牐?6.建立lib目录,拷贝/lib/l*到/machines/pc01/lib。
?牐牻?立sbin目录,拷贝init、mount、umount、update、rdev、swapdev、swapon、swapoff、mount、umount 到 /machines/pc01/sbin。
?牐牻?立var目录,并cp -a /var /machines/pc01/
?牐牻酉吕幢匦虢?立一个链,将远程客户机的IP地址链接到/machines/pc01目录。
?牐犠詈笄肴啡戏衿魃系膎fsd、tftpd、bootpd和daemons已启动。
?牐犚磺胁僮魍瓯虾螅∧憔涂梢允宰旁冻唐舳疞inux,令人兴奋的是,这个过程很快,一般10秒钟左右就行了。