WatchStor.com — 领先的中文存储网络媒体 | 51CTO旗下网站

评测导购 > FC SAN > 正文

无盘启动在Debian 4.0 Etch的实现方法简介

Watchstor.com  佚名丨2010-01-06 15:58 标签:FC SAN 

下面为大家详细介绍怎样把Debian 4.0 Etch安装到iSCSI服务器上并实现无盘启动?希望会对大家有所帮助。         

可以分以下几步来做:

1、在本地硬盘上安装一个Debian 4.0 Etch

2、编译两个必要的程序iscsistart 和 fwparam_ibft

3、安装其他必要的软件包

4、修改网络脚本

5、创建initramfs脚本

6、两个脚本的内容

1、在本地硬盘上安装一个Debian 4.0 Etch
我们假定如下的工作都已完成:

安装了Debian Etch的基本系统和全部安全升级,系统安装到单一分区"/"上,这个分区是/dev/sda1,在iSCSI服务器上已经建立了一个target,创建一个逻辑磁盘,容量不小于安装Debian的硬盘。一个正在工作的DHCP服务器。

2、编译iscsistart和fwparam_ibft

这两个程序源自open-iscsi,但并不包括在Debian的软件包系统内,因此必须要自己编译。

首先安装需要的开发工具包

apt-get build-dep open-iscsi

apt-get install libdb4.3-dev

下载open-iscsi的源代码解压编译所需部分:

wget http://www.open-iscsi.org/bits/open-iscsi-2.0-865.13.tar.gz

tar xzf open-iscsi-2.0-865.13.tar.gz

cd open-iscsi-2.0-865.13

make -C usr

make -C utils/fwparam_ibft

我们需要的两个程序是./usr/iscsistart和./utils/fwparam_ibft/fwparam_ibft, 把这两个程序都拷贝到/usr/sbin/下备用。

3、安装其他必要的无盘启动软件包

apt-get install iproute

4、禁止无盘启动的网络脚本

编辑文件/etc/network/interfaces,使之只包含回环界面(lookback)以及那些将来从iSCSI无盘启动时不使用的网卡界面,假如你只有一个网卡eth0,那么/etc/network/interfaces应该有下面一节:

auto eth0

iface eth0 inet manual

这样ifupdown就会报告网卡状态是“up”,否则某些脚本不能很好的工作,比如挂载网络文件系统。

5、创建initramfs脚本

要创建的两个脚本内容在下面的/etc/initramfs-tools/hooks/iscsi_tcp将把/usr/sbin/iscsistart和/usr/sbin/fwparam_ibft以及它们依赖的内核模块iscsi_tcp和ib_iser拷贝到初始化内存盘。

/etc/initramfs-tools/scripts/local-top/iscsi_tcp被拷贝到初始化内存盘,如果根设备字符是scsi磁盘(/dev/sd*),这个脚本在挂载根文件系统之前就会运行,它将建立与iSCSI服务器的连接,把逻辑磁盘映射为本地磁盘完成根文件系统的安装。做完这些后检查一下文件/etc/initramfs-tools/initramfs.conf,确保它包含这样一行:

BUSYBOX=y

升级初始化无盘启动的内存盘:

dpkg-reconfigure linux-image-$(uname -r)

现在应该把整个系统传到iSCSI服务器上了,可以临时安装上open-iscsi软件:

apt-get install open-iscsi

用iscsiadm程序连接iscsi服务器,连接到已经准备好的target的逻辑磁盘(它在本地的设备符号应该是/dev/sdb),然后用下面命令上传:

dd if=/dev/sda of=/dev/sdb

上传完成后用iscsiadm命令断开与iSCSI服务器的连接,停机后摘掉本地硬盘,准备从iSCSI服务器启动,记住将来从iSCSI服务器上启动成功后要删去open-iscsi软件,这个软件在无盘启动的系统上会发生冲突。

启动之前配置好DHCP服务器,DHCP服务器要支持gPXE无盘启动。有关gPXE的详细内容可查看etherboot.org的网站,我们自己设计的iSCSI服务器内置了支持gPXE的DHCP服务器,只需通过图形界面即可完成配置。

6、两个无盘启动脚本的内容
-------------------------------
脚本/etc/initramfs-tools/hooks/iscsi_tcp
-------------------------------
#!/bin/sh

set  -e

PREREQ=""

prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

[ -x /usr/sbin/iscsistart ] && copy_exec /usr/sbin/iscsistart /sbin
[ -x /usr/sbin/fwparam_ibft ] && copy_exec /usr/sbin/fwparam_ibft /sbin
[ -x /sbin/ip ] && copy_exec /sbin/ip /sbin
manual_add_modules iscsi_tcp
manual_add_modules ib_iser
-------------------------------
脚本/etc/initramfs-tools/scripts/local-top/iscsi_tcp
-------------------------------
#!/bin/sh

set -e

PREREQ="udev"

prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

case $ROOT in
/dev/sd*)
# Evaluate IBFT parameters
for i in $(fwparam_ibft -b); do export $i; done

#Bring up the interface used to boot
for i in $(ls /sys/class/net); do
IFADDR=$(cat /sys/class/net/$i/address)
if [ $IFADDR = $iSCSI_INITIATOR_HWADDR ]; then
echo "Using $i with MAC $IFADDR"
export iSCSI_INITIATOR_IF=$i
fi
done

modprobe -q iscsi_tcp
modprobe -q ib_iser

echo "Bringing up $iSCSI_INITIATOR_IF for iSCSI..."
ip link set $iSCSI_INITIATOR_IF up
echo "Setting up networking on $iSCSI_INITIATOR_IF..."
ip addr add $iSCSI_INITIATOR_IPADDR/$iSCSI_INITIATOR_MASK brd + dev $iSCSI_INITIATOR_IF
ip route add default via $iSCSI_INITIATOR_GATEWAY

echo "Connecting to iSCSI target $iSCSI_TARGET_NAME on $iSCSI_TARGET_IPADDR..."
iscsistart -i $iSCSI_INITIATOR_NAME -t $iSCSI_TARGET_NAME -g 1 -a $iSCSI_TARGET_IPADDR
sleep 5
;;
esac

【编辑推荐】

  1. 无盘安装指南
  2. 无盘工作站运行Windows2000技巧简介
  3. 固态硬盘在2010年发展是否会有飞跃
  4. 无盘网络特点简介
  5. 2009无盘网络服务器配置指南

相关资讯

今日微信独家

《华尔街日报》报道日前援引知情人士的消息称,由于被美国政府以国家安全问题为由进行调查,联想斥资23亿美元收购IBM低端服务器业务的交易陷入了停滞状态。
关注新浪官博 订阅微信订阅号

订阅焦点周刊

论坛与活动

2016中国数据加速峰会直播专题
2016中国数据加速峰会直播专题[详细]
点击查看

精彩视频

最新文章

1111111
1111111
asdasd
asdasd
同有科技应用型大数据存储在南京掀起智能风暴
同有科技应用型大数据存储在南京掀起智能风暴
斯蒂芬斯蒂芬
斯蒂芬斯蒂芬
京东双11技术备战 构建多中心交易系统
京东双11技术备战 构建多中心交易系统