本文将通过下面的九个步骤,为IBM BladeCenter® HS20刀片服务器去创建一个可启动的磁盘(驱动器),自安装硬盘驱动,运行SUSE Linux企业服务器10。(这些步骤也可以适用于其它的刀片服务器)。当系统第一次从这个驱动启动时,它将会自动地开始在磁盘上安装Linux®,这种操作可以减轻操作系统的预加负荷并且减轻用户的工作量。
从两个系统开始:
·系统A用SLES10预加载,grub作为启动加载器。它有两个SCSI磁盘接口,但是只有第一个被使用。
·系统B是一个只有一个磁盘驱动器的空系统,它没有操作系统的加载。我们将用系统A给系统B准备自安装的硬盘驱动器。
首先是我们制作一个自安装的磁盘。用两个分区格式化磁盘:
·第一个(小一些的)分区将包含SUSE安装介质;我们把它称作安装分区。
·第二个(大一些的)分区是为操作系统准备的;我们称之为操作系统分区。
第一步:正确的cabling
将两个系统的电源都关闭,从系统B拔掉磁盘(磁盘B),把磁盘B插入系统A的第二个SCSI磁盘接口。然后从它自己的磁盘(磁盘A)启动系统,也就是第一个SCSI磁盘。
第二步:磁盘B分区
使用fdisk命令给磁盘B分区。如果你使用SCSI磁盘,磁盘名为/dev/sdb(如果你使用另一种类型的磁盘,例如,一个IDE磁盘,因此需要调整名称。)你可以使用fdisk –l命令来查看你磁盘设备的名称。
a.运行fdisk /dev/sdb
b.输入d来删除已经存在的分区。如果你的磁盘为空你也可以跳过这一步。
c.输入n来添加一个新的分区。通过选择主分区和选择一号作为分区号,来创建安装分区作为主分区。接下来,分配一个扇区从1到900(大概6.3GB是合适的,因为SUSE安装介质需要大概4.3GB)来展示列表1。你可以根据需要来调整。
列表1:创建安装分区
blade8:~ # fdisk /dev/sdbThe number of cylinders for this disk is set to 8924.There is nothing wrong with that, but this is larger that 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): nCommand action e extended p primary partition (1-4) p Partition number (1-4) : 1 First cylinder (1-8924, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-8924, default 8924) : 900 Command (m for help):
d.输入n来创建另一个分区(操作系统分区)如下列列表2所示:
列表2:创建操作系统分区
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4) : 2 First cylinder (901-8924, default 901): Using default value 901 Last cylinder or +size or +sizeM or +sizeK (1-8924, default 8924) : Using default value 8924 Command (m for help):
但是在这个分区上不要存储任何数据;在SUSE安装过程中这个分区将被格式化。
e.输入a来在第一个分区(安装分区)切换启动标记,如下列列表3所示。选中使分区1可启动。
列表3:使安装分区可启动
Command (m for help): aPartition number (1-4) : 1
f.输入w来写入所有分区信息到表格并且退出分区,如列表4所示:
列表4:写入分区信息
Command (m for help): wThe partition table has been altered;Calling ioctl() to re-read partition table.Syncing disks.
这一步将把变化提交到磁盘。
现在就已成功地将磁盘B分区。
第三步:格式化分区
用ext3文件系统来格式化磁盘B的第一个分区:
列表5:格式化第一个分区
blade8:~ # mkfs.ext3 /dev/sdb1mke2fs 1.38 (30-Jun-2005)Filesystem label=OS type: LinuxBlock size=4096 (log=2) Fragment size=4096 (log=2)904960 inodes, 1807304 blocks90365 blocks (5.00%) reserved for the super userFirst data block=056 block groups32768 blocks per group, 32768 fragments per group16160 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThe filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -I to override.
第四步:安装grub 启动程序
如下所示在磁盘B的第一个分区安装grub启动程序:
a.挂载第一个分区到文件夹,例如/mnt/sdb. 运行 mount /dev/sdb1 /mnt/sdb.
b. 从/boot/grub文件夹复制grub 启动文件到/mnt/sdb/boot/文件夹;
包括grub进程文件和grub配置文件。
c.输入下面的命令来安装grub到磁盘B的第一个分区,如下列表六所示:grub-install --root-directory=/mnt/sdb /dev/sdb1 -recheck:
列表6:安装grub
blade8:~ # grub-install -root-directory=/mnt/sdb /dev/sdb1 -recheckProbing devices to guess BIOS drives. This may take a long time.Installation finished. No error reported.This is the contents of the device map /mnt/sdb/boot/grub/device.map.Check if this is correct or not. If any of the line is incorrect,Fix it and re-run the script 'grub-install'.(fd0) /dev/fd0(hd0) /dev/sda(hd1) /dev/sdb
你已经成功地制作了磁盘B的带grub的可启动的磁盘安装分区。接下来,当磁盘启动时你需要使grub开始SUSE安装程序。首先,你需要复制安装内核和initrd文件到安装分区,然后需要准备好grub配置文件。
第五步:为安装准备内核
通过从SUSE安装ISO文件来复制安装内核,从而为安装准备好内核。创造一个/mnt/sdb/boot文件夹,然后从ISO文件/boot/i386/loader/复制linux文件和initrd到新的文件夹。
第六步:准备Linux的安装镜像文件
通过创建一个/mnt/sdb/SUSE文件来为Linux安装镜像文件做准备,复制所有在SUSE ISO镜像里的文件到新的文件夹。
注意:你必须复制ISO的内容到指定目录。SUSE 10不支持直接调用ISO文件。如果你只把ISO文件放到这里,那么系统将不能找到安装资源文件。
第七步:为SUSE安装做准备
现在为SUSE安装准备autoinst.xml文件。使用yast 自动安装创建autoinst.xml文件。你需要改变文件的如下两部分:
a.在启动管理器部分添加一区,这样用户可以选择这个启动菜单来启动系统。系统将开始再一次安装操作系统,并且将回到最初状态。添加如下的代码到启动管理器部分:
列表7:更新的启动管理器部分
<bootloader> <sections>... <section> <append>ramdisk_size=8192 install=hd://sda1/SUSE autoyast=file:///mounts/extra/autoinst.xml splash=silent showopts</append> <initrd>(hd0,0)/boot/initrd</initrd> <kernel>(hd0,0)/boot/linux</kernel> <lines_cache_id>3</lines_cache_id> <name>SUSE Linux Enterprise Server 10 Installation</name> <original_name>install</original_name> <root>/dev/sda1</root> <type>image</type> </section>... </sections> </bootloader>
注意:如果一个用户选择了从这个菜单启动,那么所有的在这个磁盘上的数据将会丢失,并且安装将会格式化这个用户的分区。
b.改变文件的分区部分来确保安装不会创建并格式化分区1;这也允许分区隐藏在系统里。下面是autoinst.xml文件1使用的分区部分:
列表8:更新的分区部分
<partitioning config:type="list"> <drive> <device>/dev/sda</device> <partitions config:type="list"> <partition> <create config:type="boolean">false</create> <filesystem config:type="symbol">ext3</filesystem> <format config:type="boolean">false</format> <partition_id config:type="integer">131</partition_id> <partition_nr config:type="integer">1</partition_nr> <partition_type>primary</partition_type> <size>7402719232</size> </partition> <partition> <filesystem config:type="symbol">swap</filesystem> <format config:type="boolean">true</format> <mount>swap</mount> <partition_id config:type="integer">130</partition_id> <partition_nr config:type="integer">2</partition_nr> <partition_type>primary</partition_type> <size>auto</size> </partition> <partition> <filesystem config:type="symbol">reiser</filesystem> <format config:type="boolean">true</format> <mount>/</mount> <partition_id config:type="integer">131</partition_id> <partition_nr config:type="integer">3</partition_nr> <partition_type>primary</partition_type> <size>max</size> </partition> </partitions> <use>all</use> </drive> </partitioning>
我们将使用整个磁盘,但是我们不能创建并格式化最初的分区。
你可以定制分区的配置,但是请记住:不要创建并格式化最初的分区。
第八步:复制安装配置文件
复制SUSE静默安装配置文件autoinst.xml到/mnt/sdb ,即磁盘B被挂载的文件夹。
第九步:创建/修改grub配置文件
创建grub配置文件/mnt/sdb/boot/grub/menu.lst,并且添加如下的内容:
列表9:更新grub配置文件
color white/blue black/light-graydefaulttimeout 30title SUSE Linux Enterprise Server 10 Installation root (hd0,0) kernel /boot/linux root=/dev/sda1 ramdisk_size=8192 install=hd://sda1/SUSE autoyast=file:///mounts/extra/autoinst.xml splash=silent showopts initrd /boot/initrd
第九步需要注意:
·系统将从磁盘找到安装镜像,并且安装镜像协议位置是hd,这指的是硬盘。
·autoyast的协议应该是文件不是设备。(协议不生效,但是autoyast文档称它支持设备,估计是SUSE的一个bug)。
·系统将在安装的时候挂载最初的分区到文件夹/mounts/extra,这样系统需要在/mounts/extra文件夹中找到autoyast文件。
·这里我们不能使用附加来为内核添加参量。
完成第九步之后:
·关掉系统A的电源,并把磁盘B从中拔出。
·将磁盘B插入系统B做为驱动盘。
·打开系统B的电源,系统B将开始安装SUSE。等待系统B安装操作系统;在安装的时候系统B将再引导一次,并且自动完成安装。
·系统B现在就准备好了。
如果用户想要恢复到最初状态,用户可以在系统启动过程中选择菜单项SUSE Linux Enterprise Server 10 Installation,系统将格式化用户的分区并且在用户的分区安装SUSE。
这样我们就大功告成了!
结论:
这些步骤引导你准备一个可启动的自安装硬盘驱动。当系统启动时,系统用这个驱动自动地安装操作系统。并且安装进程将自动检测硬件,在需要改变的时候作出相应改变。这个进程比在磁盘上简单安装SUSE更灵活,并且可以使系统从它开始启动。