[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
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中 |
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
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/fstab。yabootconfig会接着扫描你的系统设置,创建/etc/yaboot.conf并运行mkofboot。mkofboot是格式化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 |
boot=/dev/sda2
device=hd:
delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
image=/boot/kernel-2.6.24-gentoo-r5
label=Linux
root=/dev/sda3
partition=3
read-only
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
# nvsetenv output-device video
# nvsetenv input-device kbd
# nvsetenv boot-device scsi/sd@1:0
# nvsetenv boot-device ata/ata-disk@0:0
# nvsetenv boot-file /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda4
# nvsetenv boot-command 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配置文件 |
[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安装来完成剩下的工作。
[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|