Gentoo Logo

[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


10. 配置引导程序

内容:

10.a. 选择一个引导程序

介绍

现在,您已经配置并编译好了内核,你将需要一个引导程序来启动你新安装的Linux。接下来将要使用的引导程序与你所拥有PPC机器的类型有关。

如果你使用的是NewWorld架构的Apple或IBM机器,你需要使用yaboot。OldWorld架构的Apple机器有两个选择,BootX(推荐)和quik。虽然Pegasos机器并不需要一个引导程序,但是你仍然需要emerge bootcreator来创建SmartFirmware启动菜单。

10.b. 默认:使用yaboot

介绍

重要: yaboot只能用于NewWorld架构的Apple和IBM系统中!

为了能找到启动设备,yaboot需要能访问到在启动中由udev创建的设备节点以及sysfs文件系统。这两个文件系统分别可以在/dev以及sys下找到。为了达到这样的效果,你需要把安装光盘中根目录下的这两个文件系统“bind mount”到chroot环境中的/dev/sys挂载点上。如果你已经bind mount了这些文件系统,那就没有必要再做了。

代码 2.1: Bind mount device和sysfs文件系统

# exit  # 这个命令会退出chroot
# mount -o bind /dev /mnt/gentoo/dev
# mount -o bind /sys /mnt/gentoo/sys
# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile 

为了设置yaboot,你可以使用yabootconfig来为你自动创建一个配置文件。如果你在一台G5上安装了Gentoo(在这上面yabootconfig可能并不能正常工作),或者你计划从firewire或USB设备启动,那么你就需要手动配置yaboot了。

注意: 当使用genkernel的时候,你需要手动修改yaboot.conf,即使yabootconfig已经使用过也需要修改。内核镜像中的yaboot.conf需要做如下修改(使用vmlinux和initrd作为内核和initrd镜像文件的名字):

代码 2.2: 将genkernel启动参数加到yaboot.conf中

###########################################################
## 如果你有超过一个内核或是一组启动选项,这部分内容可以被复制
## -用你内核和initrd镜像的确切名字替换image和initrd的值。
###########################################################
image=/boot/kernel-genkernel-ppc-2.6.24-gentoo-r5
  label=Linux
  root=/dev/ram0
  partition=3
  initrd=/boot/initramfs-genkernel-ppc-2.6.24-gentoo-r5
  # 你可以在此附加上额外的内核参数比如rootdelay=10用于USB/Firewire启动
  append="real_root=/dev/sda3 init=/linuxrc"
  read-only
##########################################################

默认:使用yabootconfig

yabootconfig会自动侦测在你机器上的分区并会设置诸如Linux、Mac OS和Mac OS X这样的双重或三重的启动组合。

为了能使用yabootconfig,你的硬盘上必须拥有一个Apple_Bootstrap分区,并且/etc/fstab必须能反映出你的Linux分区状况(请注意Bootstrap分区应该在你的fstab文件中)。虽然这些步骤应该已经完成了,但是还是请检查/etc/fstab后再进行下一步。现在可以安装yaboot了。

代码 2.3: 安装yaboot

# emerge yaboot

现在退出chroot并运行yabootconfig --chroot /mnt/gentoo。首先,程序会确认bootstrap分区的位置。如果你使用了建议的磁盘分区布局,那你的bootstrap分区应该是/dev/sda2。如果输出正确请键入Y。如果出现错误,请再次仔细检查你的/etc/fstabyabootconfig会接着扫描你的系统设置,创建/etc/yaboot.conf并运行mkofbootmkofboot是格式化Apple_Bootstrap分区以及安装yaboot的配置文件用的。在此之后请再次进入chroot。

代码 2.4: 重新进入chroot

# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile

你可能需要校验/etc/yaboot.conf的内容。如果你在/etc/yaboot.conf中做了些更改(比如设置默认/启动的操作系统),请确保再次运行一次ybin -v以便将这些更改应用到Apple_Bootstrap分区中去。无论何时你对yaboot.conf做了任何改动,比如测试一个新内核时,永远记得要运行ybin -v来用以更新bootstrap分区。

接下来请阅读重启系统

备选:手动yaboot配置

首先确保你已经在系统上安装了yaboot

代码 2.5: 安装yaboot

# emerge yaboot

虽然下面给出了一个yaboot.conf示例文件,但是你仍然需要通过修改它来满足你自己的要求。

代码 2.6: /etc/yaboot.conf

## /etc/yaboot.conf
##
## 运行:“man yaboot.conf”可以得到更多详细帮助。在未看帮助前请不要做任何改动!!
## 也可以参考:/usr/share/doc/yaboot/examples可以得到一些配置的示例。
##
## 如果需要双重启动菜单,请添加以下一项或多项:
## bsd=/dev/sdaX, macos=/dev/sdaY, macosx=/dev/sdaZ

## bootstrap分区:

boot=/dev/sda2

## ofboot是Open Firmware指定bootstrap分区的方式。
## 如果没有定义过这个变量,则yaboot会在G5和某些G4机器上失效(除非
## 你将一些必要的参数传给mkofboot/ybin程序)。
## hd:X表示/dev/sdaX。
 
## G5用户应该去掉这一行的注释!!

#ofboot=hd:2

## 使用firewire启动的用户应该使用类似下面这行的指定方式:
# ofboot=fw/node/sbp-2/disk@0:

## 使用USB启动的用户应该使用类似下面这行的指定方式:
# ofboot=usb/disk@0:

## hd:代表OpenFireware能看到的第一个硬盘的缩写
device=hd:

## Firewire和USB用户需要指定整个OF设备名
## 这个可以通过使用ofpath找到,它也同时包含在yaboot中。

# device=fw/node@0001d200e00d0207/sbp-2@c000/disk@0:


delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot

###########################################################
## 如果你有一个以上的内核或是启动选项的组合,这部分内容可以被复制
## ——用你内核和initrd镜像的确切名字替换image和initrd的值。
###########################################################
image=/boot/kernel-2.6.24-gentoo-r5
  label=Linux
  root=/dev/sda3
  partition=3
#  append="rootdelay=10"  # 从USB/Firewire启动时必需
  read-only
##################

## G5用户和某些G4用户需要设置
##   macos=hd:13
##   macosx=hd:12
## 用以替代示例值。
macos=/dev/sda13
macosx=/dev/sda12
enablecdboot
enableofboot

一旦yaboot.conf配置完成,运行mkofboot -v来格式化Apple_bootstrap分区并安装配置好的设定。如果你在Apple_bootstrap分区创建好后修改了yaboot.conf,你可以运行ybin -v来更新设定。

代码 2.7: 配置bootstrap分区

# mkofboot -v

更多关于yaboot的信息,你可以参看yaboot项目。现在,请阅读重启系统来继续安装。

10.c. 备选:BootX

重要: BootX只能用于使用MacOS 9及更早的操作系统的OldWorld架构的Apple机器!

因为BootX需要从运行着的MacOS里启动Linux,所以需要将内核从Linux分区拷贝到MacOS分区。首先,从chroot环境外挂载MacOS分区。使用mac-fdisk -l来查找MacOS分区号,这里使用sda6作为示例。当这个分区被挂载起来后,我们就要将内核拷贝至系统目录以便BootX能够找得到它。

代码 3.1: 将内核拷贝至MacOS分区

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/usr/src/linux/vmlinux "/mnt/mac/System Folder/Linux Kernels/kernel-2.6.24-gentoo-r5"

如果使用的是genkernel,内核和initrd都需要拷贝至MacOS分区。

代码 3.2: 将genkernel生成的内核和initrd拷贝至MacOS分区

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/boot/kernel-genkernel-ppc-2.6.24-gentoo-r5 "/mnt/mac/System Folder/Linux Kernels"
cdimage ~# cp /mnt/gentoo/boot/initramfs-genkernel-ppc-2.6.24-gentoo-r5 "/mnt/mac/System Folder"

现在内核已经拷贝完毕,我们需要重启来设置BootX。

代码 3.3: 卸载掉所有的分区并重启

cdimage ~# cd /
cdimage ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo /mnt/mac
cdimage ~# reboot

当然,请不要忘记将可启动的CD从光驱中取出,否则机器会再次启动CD,而不是MacOS。

一旦机器启动至MacOS,打开BootX控制面板。如果你没有使用genkernel,选择Options后取消掉Use specified RAM disk。如果你使用了genkernel,请确认你使用的是genkernel生成的initrd而不是安装CD中的initrd。如果你使用的不是genkernel,这儿有个选项用于指定机器的Linux根磁盘和分区。请用适当的值将这些都填好。根据内核的配置情况,可能还会增加一些额外的启动参数。

您可以配置BootX让MacOS在启动时自动启动Linux。如果你这样做了,你将会先看到你的机器启动了MacOS,然后在启动时,BootX会装载并启动Linux。更多详细信息请看BootX主页

重要: 确保在你的内核中已经有了HFS和HFS+文件系统的支持,否则你将无法升级或改变位于你MacOS分区中的内核。

现在重新启动并启动至Linux中,并请继续阅读结束你的Gentoo安装

10.d. 备选:quik

quik允许OldWorld架构的Mac机器不需要MacOS就能启动。然而,这个功能的实现并不完美而且有一些古怪行为。如果你能用BootX,我们建议你还是用BootX而不要用它,毕竟前者比起后者更可靠且易于设置。

首先,我们需要安装quik:

代码 4.1: Emerge quik

# emerge quik

接下来,我们需要设置它。修改/etc/quik.conf并把image设置为已经拷贝至你的启动分区中的那个内核镜像。

代码 4.2: 配置quik.conf

# quik.conf示例
init-message = "Gentoo 2008.0\n"
# 这个是启动分区
partition = 2
root = /dev/sda4
timeout = 30
default = gentoo
# 这个是你的内核
image = /kernel-2.6.24-gentoo-r5
  label = gentoo

你的quik.conf文件必须和quik启动镜像存放在相同的磁盘上,它也可以是在相同磁盘的不同分区上,推荐你将它移动到你的启动分区上。

代码 4.3: 将quik.conf移动至/boot

# mv /etc/quik.conf /boot/quik.conf

现在我们将设置你的启动变量,因为quik在启动时需要加载它们。为此,我们需要使用一个叫做nvsetenv的程序。你想设置的这些变量随机器的不同而有所变化,在尝试这步之前最好先查找你机器的quirk

代码 4.4: 设置启动变量

# nvsetenv auto-boot true # 如果你想要启动至OF请设置成false,并不是所有的型号都能显示OF输出
# nvsetenv output-device video # 请检查quirks页面,在那儿你可以找到很多变化
# nvsetenv input-device kbd
# nvsetenv boot-device scsi/sd@1:0 # 对应SCSI
# nvsetenv boot-device ata/ata-disk@0:0 # 对应ATA
# nvsetenv boot-file /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda4 第一项是内核的路径,第二项是root分区。你可以在这一行末尾附加任何的内核选项。
# nvsetenv boot-command boot # 对于MacOS来说设置成bye,对于Linux来说设置成boot

注意: 在MacOS中也可以改变你的启动变量。根据不同的型号,有可能需要用bootvars或是 Apple系统磁盘。请参看以上的quik quirks页面以获得更多的信息。

现在我们的机器已经设置好并能启动,我们需要确保已经正确安装了启动镜像文件。运行quik -v -C /boot/quik.conf。它会告诉你第一阶段QUIK启动块已经安装好了。

注意: 如果出了什么错,你可以通过在通上电源前按住command + option + p + r来重设你的PRAM到默认值。这样会清除掉你用nvsetenv设置的值而且会允许你启动MacOS的启动盘或是Linux的启动盘。

现在,请阅读重启系统来继续安装。

10.e. 备选:BootCreator

重要: BootCreator会为Pegasos创建一个漂亮的由Forth写成的的SmartFireware启动菜单。

首先确保你已经在系统上安装好bootcreator

代码 5.1: 安装bootcreator

# emerge bootcreator

现在拷贝文件/etc/bootmenu.example/etc/bootmenu并且根据你的需要修改它:

代码 5.2: 修改bootcreator配置文件

# cp /etc/bootmenu.example /etc/bootmenu
# nano -w /etc/bootmenu

以下是一个完整的/etc/bootmenu配置文件。应该用你所使用的内核和initrd镜像的文件名来替换掉vmlinux和initrd。

代码 5.3: bootcreator配置文件

#
# bootcreator 1.1的示例配置文件
#

[VERSION]
1

[TITLE]
Boot Menu

[SETTINGS]
AbortOnKey = false
Timeout    = 9
Default    = 1

[SECTION]
Local HD -> Morphos      (Normal)
ide:0 boot2.img ramdebug edebugflags="logkprintf"

[SECTION]
Local HD -> Linux (Normal)
ide:0 kernel-2.6.24-gentoo-r5 video=radeonfb:1024x768@70 root=/dev/sda3

[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernel-genkernel-ppc-2.6.24-gentoo-r5 root=/dev/ram0 real_root=/dev/sda3 init=/linuxrc initrd=initramfs-genkernel-ppc2.6.24-gentoo-r5

最终bootmenu必须转成Forth并被拷贝至你的启动分区,这样SmartFirmware才能读取它。因此你需要调用bootcreator

代码 5.4: 安装bootmenu

# bootcreator /etc/bootmenu /boot/menu

注意: 当你重启时请确认一下SmartFirmware的设置,menu文件就是那个会被默认加载的文件。

现在,继续安装请看重启系统

10.f. 重启系统

退出chroot环境且卸载掉所有已挂载的分区。随后键入那个已经等待多时的魔幻命令:reboot

代码 6.1: 退出chroot,卸载所有的分区并重启

# exit
livecd ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo
livecd ~# reboot

当重启进入到您新装的Gentoo系统之后,请阅读结束您的Gentoo安装来完成剩下的工作。


[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


打印

查看全部

更新于2008年 7月 7日

总结: 本架构存在几种引导程序。它们中的每一种都有自己的配置方法。我们会一步步来告诉你怎样根据你的需求来配置一个引导程序。

Sven Vermeulen
作者

Grant Goodyear
作者

Roy Marples
作者

Daniel Robbins
作者

Chris Houser
作者

Jerry Alexandratos
作者

Seemant Kulleen
Gentoo x86开发人员

Tavis Ormandy
Gentoo Alpha开发人员

Jason Huebel
Gentoo AMD64开发人员

Guy Martin
Gentoo HPPA开发人员

Pieter Van den Abeele
Gentoo PPC开发人员

Joe Kallar
Gentoo SPARC开发人员

John P. Davis
编辑

Pierre-Henri Jondot
编辑

Eric Stockbridge
编辑

Rajiv Manglani
编辑

Jungmin Seo
编辑

Stoyan Zhekov
编辑

Jared Hudson
编辑

Colin Morey
编辑

Jorge Paulo
编辑

Carl Anderson
编辑

Jon Portnoy
编辑

Zack Gilburd
编辑

Jack Morgan
编辑

Benny Chuang
编辑

Erwin
编辑

Joshua Kinard
编辑

Tobias Scherbaum
编辑

Lars Weiler
编辑

Jochen Maes
编辑

Xavier Neys
编辑

Joshua Saddler
编辑

Joseph Jezak
编辑

Gerald J. Normandin Jr.
审校

Donnie Berkholz
审校

Ken Nowack
审校

张乐
译者

沈辰俊
译者

杨珂
译者

叶宝泰
译者

杨小广
译者

vivian.ye
译者

余雷
译者

陈永骥
译者

王国辉
译者

娄东斌
译者

贾震
译者

余鈺炜
译者

陈代焱
译者

范华
译者

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Edurium
Copyright 2001-2010 Gentoo Foundation, Inc. Questions, Comments? Contact us.