星期三, 十二月 10, 2008

双机对等搭建debian无盘笔记本

我的老旧笔记本是T23,虽然512内存,但是因为磁盘太旧了,瓶颈问题非常严重,即便是用debian,我也感到非常吃力。再加之cpu频率太低,运行速度非常慢。
决定用无盘来启动笔记本,或许可以减缓瓶颈问题,只是做到测试,但完全使用也无妨,无非就是要在台式机上面另加一块网卡罢了。
台式机:
ip:192.168.1.10
用到的服务:dhcp,tftp,nfs
笔记本:
ip:192.168.1.9
mac:00:d0:59:d8:5f:91

启动原理:
利用台式机做dhcp服务,然后从笔记本网卡启动,挂载台式机的nfs目录为根目录,从而引导进入debian系统。

台式机上面需要做的:
首先在台式机上面安装debian系统,更新apt,设置IP地址,之后用apt安装dhcp3-server,tftpd-hpa,nfs-kernel-server,syslinux。
配置dhcp3-server服务,编辑/etc/dhcp3/dhcpd.conf如下(我的配置文件):
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option broadcast-address 192.168.1.255;
option routers 192.168.1.10;
}

host t23 {
hardware ethernet 00:d0:59:d8:5f:91;
filename 'pxelinux.0'; //pxe引导文件,等会用到
next-server 192.168.1.10;
fixed-address 192.168.1.9;
}

之后重新启动dhcpd服务。
/etc/init.d/dhcp3-server restart
如果没有出现fail之类的错误,就说明成功了。

配置tftp:
安装tftp后,会默认将tftp的目录设置为/var/lib/tftpboot。编辑/etc/default/tftpd-hpa,修改“RUN_DAEMON”选项为“yes”,使其自启动进程。
需要将syslinux安装后得到的pxelinux.0这个引导文件拷贝到/var/lib/tftpboot中去,如下:
cp /var/lib/syslinux/pxelinux.0 -vf /var/lib/tftpboot/
之后重启tftp服务
/etc/init.d/tftpd-hpa restart
可以做一下tftp get的测试。

配置nfs-kernel-server:
编辑/etc/exports,设置nfs目录,如下
/t23 192.168.1.0/24(rw,no_root_squash,async)
其中,/t23是在台式机上面创建的一个目录,默认笔记本的系统文件在此处,后面会解释。
重启nfs服务
/etc/init.d/nfs-kernel-service restart

服务配置完毕

因为台式机安装的是debian,我们需要重新安装一个新的debian系统来让笔记本引导它,对此有两种方法:
一种是在台式机上面划分一个新的分区,然后正常安装debian到新的分区中,之后重启,进入原来的debian系统,挂载新安装debian的那个分区到/t23中。
另一种方法是到cooperative linux中下载debian的fs磁盘镜像(下面简称为t23.fs),之后直接挂载到/t23中去。
我用的是第二种方法,因为之前安装过colinux,并且备份了磁盘镜像,这次可以直接用到了。

挂载t23.fs到/t23中
mount t23.fs -o loop /t23
如此,从colinux下载的debian的磁盘镜像就挂载到台式机中的/t23目录中来了。然后做如下修改:
编辑/t23/etc/fstab:
proc /proc proc defaults 0 0
/dev/nfs / nfs defaults 1 1
none /tmp tmpfs defaults 0 0
none /var/run tmpfs defaults 0 0
none /var/lock tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0

修改/t23/etc/network/interfaces,注释掉eth0设备。
因为这个磁盘镜像没有安装linux-image,默认使用了colinux的内核,所以需要chroot进入,重新安装linux内核,从而确保生成/lib/modules/linux-2.6.18-6-686。确保台式机和这个磁盘镜像要保持内核版本一致,因为我都是用了debian的etch版本,所以没什么问题。
之后退出chroot模式,返回台式机中的debian。
重新编译debian内核,使内核支持nfs启动。
编辑/etc/initramfs-tools/initramfs.conf,修改其中的BOOT=local为BOOT=nfs,之后重新生成新内核:
mkinitramfs -o /boot/initrd-t23
在/var/lib/tftpboot中创建t23的文件夹,然后拷贝/boot/vmlinuz(版本号)和initrd-t23到/var/lib/tftpdboot/t23中来。
在tftpboot中创建pxelinux.cfg文件夹,并在其中创建default文件(等同于menu.lst)如下:
DEFAULT t23

LABEL t23
kernel t23/vmlinuz
append vga=791 initrd=t23/initrd-t23 root=/dev/nfs nfsroot=192.168.1.10:/t23 ip=dhcp rw --
PROMPT 1
TIMEOUT 0

之后使用交叉线将两台电脑连接起来,把笔记本启动到pxe启动模式,然后就会获得pxelinux.0这个引导文件并加载default启动选项引导debian系统了。
我是成功了。
debian无盘笔记本到此告一段落。

ps:
因为没有闲置路由器可用,所以两台机器对等连接后均不能上网,只是实现了无盘启动的工作。如果在台式机上面加一网卡的话,笔记本便可以共享台式机网络了。
当然,有路由器的话就更方便了。

1 条评论:

truanty 说...

呵呵,你起来的还挺早呢...