无盘安装-linux篇

出自Linux Home Server

跳转到: 导航, 搜索

无盘安装-linux篇

iscsi+pxe 实现无盘安装,无盘启动-linux篇
PXE 环境设置
  PXE 环境需要dhcp, tftp, 看个人习惯,有很多组合, 我习惯用dnsmasq, 小巧又功能强大

配置文件大致包含以下几项

 dhcp-range=192.168.1.50,192.168.1.150,255.255.255.0,12h
dhcp-option=3,192.168.1.1
expand-hosts
domain=linuxce.cn
dhcp-host=00:0c:29:34:67:9a,net:diskless
dhcp-option=net:diskless,17,"iscsi:192.168.1.147::::iqn.2008.com.linuxce:linuxce.windiskless.20090210124113"
 dhcp-option=44,192.168.1.6
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/tftpboot

  红色的两项是要给gpxe 使用,从gpxe 启动不支持大于1024 cylinder 的大硬盘,奇怪的是在虚拟机中把网卡认做成10M,启动速度奇慢
  在调试阶段出现最多的问题是拼写错误,最好不使用服务,而是在命令行下面带调试参数

 dnsmasq –d --log-dhcp

pxe 的配置菜单如下

 default vesamenu.c32
#prompt 1
timeout 600
 display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
menu background splash.jpg
menu title Welcome to Fedora 10!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000

label linux

 menu label ^Install or upgrade an existing system
kernel vmlinuz
append initrd=initrd.img

label iscsi

 menu label boot diskless linux from iscsi
kernel vmlinuz_diskless
append initrd=initrd_diskless

label gpxe

 menu label boot diskless windows from iscsi
kernel gpxe.lkrn

后面会提到那两个启动文件vmlinuz_diskless, initrd_diskless如何获得

iscsi 环境设置
现在支持iscsi 服务的系统很多, 我用的是LHS-200 iscsi 存储器, 一个小巧的黑盒子, 装上硬盘,开机就可使用, 要高性能可以装一个PC 版本, 嫌麻
烦可以到他的网站http://www.linuxce.cn 抓一个已经配置好的虚拟机来用,

Linux Home Server 谈不上有什么复杂配置, 首先登录
Image:wuan-1-1.jpg
第一次运行时配置一下重建存储,然后为无盘工作站划分一部分存储空间
Image:wuan-1-2.jpg
然后为应用分配空间即可
Image:wuan-1-3.jpg
安装linux
和通常的linux 安装没有太多的区别,安装时只需要注意三点,安装源选ftp, 安装硬盘选iscsi, 分区必须手动指定,不能自动处理,发几张图就明白了,我用的是fedora 10,
  把安装光盘的iso 中image/pxeboot 中的vmlinuz 和initrd.img 拷贝到PXE 需要的目录即可,安装测试是在vmware workstation 中做,主要是方便截图
Image:wuan-1-4.jpg
Image:wuan-1-5.jpg
Image:wuan-1-6.jpg
Image:wuan-1-7.jpg
硬盘选项选Advanced Storage Configure,加上iscsi 盘
Image:wuan-1-8.jpg
Image:wuan-1-9.jpg
需要手工分区
Image:wuan-1-10.jpg
Image:wuan-1-11.jpg
在pxe 中配置启动菜单
  安装完成后,需要把启动用的vmlinuz, initrd.img 拷贝到PXE 环境, 由于这两个文件存储在iscsi 服务器上,所以先要连到iscsi 服务器,挂接硬盘,才能拷贝出来
  连接iscsi 服务器
  iscsiadm -m discovery -t st-–p 192.168.1.147 -l
  用fdisk -l 可以看到多出来的硬盘, 挂上/dev/sdc1, 看一下 grub 下的配置, 把对应的vmlinuz-xxx, initrd-xxx.img 拷贝到PXE 目录
  一直很奇怪启动程序是如何找到 iqn 的,看一下initrd-xxx.img 中的init 就明白了,原来是安装程序写死了

 #!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/fb c 29 0
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
/lib/udev/console_init tty0
daemonize --ignore-missing /bin/plymouthd
plymouth --show-splash
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo Creating character device nodes.
mkchardevs
echo "Loading crc32c module"
modprobe -q crc32c
echo "Loading iscsi_tcp module"
modprobe -q iscsi_tcp
echo "Loading mii module"
modprobe -q mii
echo "Loading pcnet32 module"
modprobe -q pcnet32
echo Bringing up eth0
network --device eth0 --bootproto dhcp
echo Attaching to iSCSI storage
/bin/iscsistart -t iqn.2008.com.linuxce:linuxce.linuxdiskless.20090210124113 -i
iqn.2005-03.com.max:01.c33d08 -g 1 -a 192.168.1.147
mkblkdevs
resume UUID=6e8af94c-e235-47e8-907b-fc4c2e907346
echo Creating root device.
mkrootdev -t ext3 -o defaults,ro UUID=316e2736-43b7-47b8-9b5d-40b89a52a192
echo Mounting root filesystem.
mount /sysroot
cond -ne 0 plymouth --hide-splash
echo Setting up other filesystems.
setuproot
echo Copying DHCP lease
cp /var/lib/dhclient/dhclient.leases /sysroot/dev/.dhclient-eth0.leases
loadpolicy
plymouth --newroot=/sysroot
echo Switching to new root and running init.
switchroot
echo Booting has failed.
sleep -1

由于启动程序只需要从网络获得 vmlinuz, initrd.img 两个文件就基本可以工作,所以传输量不大, 时间延迟还过得去,但从gpxe 启动时间就非常长,几乎不能忍受
Image:wuan-1-12.jpg

个人工具