刀片服务器硬盘启动Linux独立安装

ThinkInLinux 2009-06-14

 从两个系统开始:

・系统A用SLES10预加载,grub作为启动加载器。它有两个SCSI磁盘接口,但是只有第一个被使用。

・系统B是一个只有一个磁盘驱动器的空系统,它没有操作系统的加载。我们将用系统A给系统B准备自安装的硬盘驱动器。

首先是我们制作一个自安装的磁盘。用两个分区格式化磁盘:

・第一个(小一些的)分区将包含SUSE安装介质;我们把它称作安装分区。

・第二个(大一些的)分区是为操作系统准备的;我们称之为操作系统分区。

第一步:正确的cabling

将两个系统的电源都关闭,从系统B拔掉磁盘(磁盘B),把磁盘B插入系统A的第二个SCSI磁盘接口。然后从它自己的磁盘(磁盘A)启动系统,也就是第一个SCSI磁盘。

第二步:磁盘B分区

使用fdisk命令给磁盘B分区。如果你使用SCSI磁盘,磁盘名为/dev/sdb(如果你使用另一种类型的磁盘,例如,一个IDE磁盘,因此需要调整名称。)你可以使用fdisk Cl命令来查看你磁盘设备的名称。

a.运行fdisk /dev/sdb

b.输入d来删除已经存在的分区。如果你的磁盘为空你也可以跳过这一步。

c.输入n来添加一个新的分区。通过选择主分区和选择一号作为分区号,来创建安装分区作为主分区。接下来,分配一个扇区从1到900(大概6.3GB是合适的,因为SUSE安装介质需要大概4.3GB)来展示列表1。你可以根据需要来调整。

列表1:创建安装分区

blade8:~ # fdisk /dev/sdb
The 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): n
Command 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): a
Partition number (1-4) : 1

f.输入w来写入所有分区信息到表格并且退出分区,如列表4所示:

列表4:写入分区信息

Command (m for help): w
The partition table has been altered;

Calling ioctl() to re-read partition table.
Syncing disks.

这一步将把变化提交到磁盘。

现在就已成功地将磁盘B分区。

第三步:格式化分区

用ext3文件系统来格式化磁盘B的第一个分区:

列表5:格式化第一个分区

blade8:~ # mkfs.ext3 /dev/sdb1
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2) 
Fragment size=4096 (log=2)
904960 inodes, 1807304 blocks
90365 blocks (5.00%) reserved for the super user
First data block=0
56 block groups
32768 blocks per group, 32768 fragments per group
16160 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

The 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 -recheck
Probing 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:更新的启动管理器部分

...
  ramdisk_size=8192 install=hd://sda1/SUSE 
          autoyast=file:///mounts/extra/autoinst.xml splash=silent showopts(hd0,0)/boot/initrd(hd0,0)/boot/linux
3
SUSE Linux Enterprise Server 10 Installationinstall/dev/sda1image
...

注意:如果一个用户选择了从这个菜单启动,那么所有的在这个磁盘上的数据将会丢失,并且安装将会格式化这个用户的分区。

b.改变文件的分区部分来确保安装不会创建并格式化分区1;这也允许分区隐藏在系统里。下面是autoinst.xml文件1使用的分区部分:

列表8:更新的分区部分

/dev/sda

falseext3false
131

1

primary
7402719232

swaptrueswap
130

2

primary
auto

reisertrue/
131

3

primary
max

all

我们将使用整个磁盘,但是我们不能创建并格式化最初的分区。

 

你可以定制分区的配置,但是请记住:不要创建并格式化最初的分区。

第八步:复制安装配置文件

复制SUSE静默安装配置文件autoinst.xml到/mnt/sdb ,即磁盘B被挂载的文件夹。

第九步:创建/修改grub配置文件

创建grub配置文件/mnt/sdb/boot/grub/menu.lst,并且添加如下的内容:

列表9:更新grub配置文件

color white/blue black/light-gray
default
timeout 30

title 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。

这样我们就大功告成了!

相关推荐