制作Archlinux的无盘工作站
之前整理房间时发现以前淘汰下来的一套旧电脑主机,于是装起来玩玩。 CPU、内存、显卡什么的都有,就差一个IDE的硬盘,本来想外接一个移动硬盘装系统的,主板BIOS却不支持从USB启动。还好自带的网卡支持PXE,于是便研究了下Linux下的无盘工作站。
测试环境:
服务器
OS:Archlinux
IP:10.10.10.10/24
客户端
OS:Archlinux
IP:DHCP
备注
服务器和客户端都处在同一个10.0.0.0/24网段中,客户端的所有数据全部保存在服务器上,本身不带硬盘等存储设备。
服务器配置
一、安装系统
正常安装一个可用的系统,这个没什么好写的,看Arch Wiki即可。
二、配置dhcp服务
pacman -S dhcpd
编辑 /etc/dhcpd.conf,添加以下内容
ddns-update-style interim;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.200; # 分配地址的范围
option routers 10.10.10.10;
option subnet-mask 255.255.255.0;
next-server 10.10.10.10;
filename "pxelinux.0";
allow booting;
allow bootp;
}
三、配置nfs服务
由于客户端是没有存储设备的,客户端产生的所有数据都需要保存到服务器上,方法是用nfs
pacman -S nfs-utils
编辑 /etc/exports,添加以下内容
/srv/arch/pc01 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)
注:/srv/arch/pc01 为客户端系统所在目录,详见下面的『安装客户端系统』;红色的10.0.0.0/24表示允许访问的IP地址段。
四、配置tftp服务
pacman -S tftp-hpa mkpxelinux
然后运行
(root) mkpxelinux
客户端配置
安装客户端系统
注意,这个系统仍然是安装在服务器端,当客户机开机后就是用这个系统启动的,所以如果是自定义内核的需要确保包含客户端的硬件驱动,也可以直接用Archlinux的内核。这里假设客户端的系统安装到 /srv/arch/pc01 中
mkdir -p /srv/arch/pc01/var/{cache/pacman/pkg,lib/pacman}
复制服务器的软件源列表到客户端,这个要注意客户端是32位或64位的,要把软件源改为相应的
cp /etc/pacman.d/mirrorlist /srv/arch/pc01/mirrorlist
cp /etc/pacman.conf /srv/arch/pc01/pacman.conf
同步客户端的软件源
pacman --root /srv/arch/pc01 --cachedir /srv/arch/pc01/var/cache/pacman/pkg --config /srv/arch/pc01/pacman.conf -Sy
为客户端安装基本系统
pacman --root /srv/arch/pc01 --cachedir /srv/arch/pc01/var/cache/pacman/pkg --config /srv/arch/pc01/pacman.conf -S base
chroot 进客户端系统
mount -t proc proc /srv/arch/pc01/proc
mount -t sysfs sysfs /srv/arch/pc01/sys
mount -t tmpfs udev /srv/arch/pc01/dev
cp /etc/resolv.conf /srv/arch/pc01/etc/resolv.conf
chroot /srv/arch/pc01
编辑 /etc/mkinitcpio.conf 并添加以下内容
MODULES="nfs" # 添加 nfs
HOOKS="base udev net autodetect pata scsi sata filesystems" # 添加 net
生成适用于pxe启动的客户端内核
pacman -S mkinitcpio-nfs-utils
mkinitcpio -p kernel26
编辑客户端的 /etc/fstab
10.10.10.10:/srv/arch/pc01 / nfs defaults 0 0
proc /proc proc defaults 0 0
编辑客户端的 /etc/rc.conf
NETWORK_PERSIST="yes"
DAEMONS=(... !network ...) # 禁用网络
复制客户端内核到 /var/tftpboot 下
exit # 退出chroot
cp /srv/arch/pc01/boot/vmlinux26 /var/tftpboot
cp /srv/arch/pc01/boot/kernel26.img /var/tftpboot
编辑 /var/tftpboot/pxelinux.cfg/default,在最下面新建一个 label
label Archlinux
kernel vmlinuz26
append initrd=kernel26.img rootfstype=nfs nfsroot=10.10.10.10:/srv/arch/pc01 ip=::::::dhcp
启动服务
/etc/rc.d/dhcpd start
/etc/rc.d/tftp start
/etc/rc.d/nfs-server start
允许服务被访问,编辑 /etc/hosts.allow
nfsd : all
rpcbind : all
mountd : all
tftpd : all
in.tftpd : all
到这里为止,服务器的配置已经完成,可以去打开客户端的电源,注意确保客户端的网络连通。 :)
http://webcache.googleusercontent.com/search?q=cache:C-mvaTV6-TwJ:imoe.tk/2011/03/archlinux.html+Arch+network+PXE&cd=12&hl=zh-CN&ct=clnk&lr=lang_zh-CN%7Clang_zh-TW


0 评论:
发表评论