环境简述
服务端: ArchLinux(192.168.0.1)
客户端: ArchLinux(dhcp)
服务器端使用 NFS 导出一个目录,此目录存放一个客户端可用的 ArchLinux 系统;客户端不安装硬盘,PMON 从网络加载 kernel 和 initrd,并将服务器端导出的系统目录作为根分区挂载至 /。
服务器端
1. 安装 ArchLinux 操作系统
2. 安装 nfs-utils
pacman -S nfs-utils
3. 创建客户端根目录
mkdir /srv/nfs/arch
4. 下载并安装客户端 ArchLinux 系统。
cd /srv/nfs
wget http://dev.lemote.com:2001/archlinux/archive/archlinux-lemote2f-201103082300.tar.gz
cd /srv/nfs/arch
tar xzf ../archlinux-lemote2f-201103082300.tar.gz
5. 更新客户端系统 initrd
chroot /srv/nfs/arch
vi /etc/mkinitcpio.conf
MODULES="nfs" # add 'nfs'
HOOKS="base udev net autodetect pata scsi sata filesystems" # add 'net'
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs udev /dev
mkinitcpio -p kernel26
umount /dev /sys /proc
6. 设置 NFS 导出目录
vi /etc/exports
/srv/nfs/arch *(rw,fsid=0,no_root_squash,no_subtree_check)
vi /etc/hosts.allow
nfsd:ALL
rpcbind:ALL
mountd:ALL
7. 启动服务器端 NFS 服务
可以在 rc.conf 增加自动启动项目
/etc/rc.d/rpcbind start
/etc/rc.d/nfs-common start
/etc/rc.d/nfs-server start
8. 修正客户机端系统网络配置
vi /etc/rc.conf
NETWORK_PERSIST="yes"
DAEMONS=(syslog-ng !network...
9. 安装并启动 TFTP 服务
安装一个 TFTP 服务,并将客户机系统中的 /boot/{vmlinz26,kernel26.img} 导出。
客户机端
1. PMON 启动参数
ifaddr rtk0 192.168.0.2
load tftp://192.168.0.1/tftp/vmlinuz26
initrd tftp://192.168.0.1/tftp/kernel26.img
g console=tty rootfstype=nfs root=/dev/nfs nfsroot=192.168.0.1:/srv/nfs/arch ip=::::::dhcp
Over!
有一个难懂的东西~~
传说中的无盘系统~
我想Arch的移植无非就俩工作:
1、Pacman的移植;
2、编译工具链的制作。
此外无他吧。
如果只是这些工作的话,那每现在就可以说完成了。但是这个基本系统能实际的做什么呢?我需要跑服务和桌面的。
关键是GCC运行于龙芯吧。然后其他的用龙芯编译。
不过,不知道编译出的软件是否可以正常用。
arch对i686优化……本质上是不是兼容8086指令就OK呢?
这就是问题,要把架构相关的东西修改成龙芯的,为了通用这里用 mips3 的指令集。
我是看不明白……
看的晕笃笃,不会用这个呢
这个无盘系统会相互干扰么。
还是独立的,网吧的xp无盘还有还原呢。
多客户机根文件系统解决办法
1. 在服务器端上制作一个可用的客户机系统镜像文件。
2. 在 NFS 导出目录 /srv/nfs 中创建客户端根目录文件夹,如 01 02 03
3. 将前面制作的系统镜像文件以只读方式挂载到 01,02和03目录上。
4. 制作 01.img 02.img 03.img 可读写的镜像文件,使用 Unionfs 或 Aufs 合并挂载到 01, 02和03目录上。
5. 01,02和03号客户机分别挂载这三个导出目录到根分区。
在以后的维护升级中只需要变更一下服务器端上的客户系统镜像文件即可。
无论从系统还是环境架构来说 这种方式现在都不适合网吧。但是在未来是肯定这样应用的。
Out了,我们那里的网吧都是这么做的。
哦,原来客户端也有系统
客户机没有硬盘,客户机系统都存储在服务器上。