3.3. PALO 管理工具使用

这里我们将展示 PALO 启动介质管理工具可以做什么。关于 palo 使用的深入信息,我们强烈建议您查看 PALOREADME文件,该文件可以在palo/目录中找到,位于 http://cvs.parisc-linux.org/

对于接下来的两个步骤,您将需要一个编译器工具链,请参阅 第 5.1 节

3.3.1. 制作一个lifimage使用RAMDISK

首先要弄清楚:您应该在什么时候这样做?

在 PA/Linux 项目的早期阶段,lifimage非常有用。事实上,只需将此文件放在启动服务器树中,您就可以使用 boot lan 指令启动您的 PA 主机,而无需任何进一步的参与(请参阅 第 4.3 节)。RAMDISK的主要优点是它会在 RAM 中解压缩自己的文件系统,因此完全独立于机器的 I/O 能力(硬盘驱动器等)。主要缺点是您必须构建自己的RAMDISK,如果您有内存限制或需要一些自定义文件。现在,让我们看看如何获得一个lifimage使用RAMDISK.

我们假设您获得了 PA/Linux 内核树的最新源代码(以下简称 "linux/目录"),并且您对内核配置有所熟悉。查看 第 5.2 节 以了解 PA-RISC 特定的选项。主要是,您需要一个(交叉)编译器、linux/目录和已安装的 PALO 包。如果您没有安装,请以 root 身份运行 apt-get install palo。一切都可以在 http://www.parisc-linux.org/ 找到。完成内核配置步骤。然后,运行 make palo,如果 PALO 已安装,则编译结束时应出现以下消息

A generic palo config file (./palo.conf) has been created for you.
You should check it and re-run "make palo".
WARNING: the "lifimage" file is now placed in this directory by default!
					
因此,编辑palo.conf文件
# This a generic Palo configuration file.  For more information about how
# it works try 'palo -?'.
#
# Most people using 'make palo' want a bootable file, usable for
# network or tape booting for example.
--init-tape=lifimage
--recoverykernel=vmlinux

########## Pick your ROOT here! ##########
# You need at least one 'root='!
#
# If you want a root ramdisk, use the next 2 lines
#   (Edit the ramdisk image name!!!!)
--ramdisk=ram-disk-image-file
--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk

# If you want NFS root, use the following command line (Edit the HOSTNAME!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=HOSTNAME ip=bootp

# If you have root on a disk partition, use this (Edit the partition name!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/sda1
					
如您所见,RAMDISK模式是默认模式。字符串ram-disk-image-file应向 PALO 提供您的RAMDISK文件的路径。您不应更改此文件的任何其他内容。编辑完palo.conf后,您可以再次运行 make palo。结果,lifimage文件,正在linux/目录中等待您。

3.3.2. 制作一个lifimage使用NFSROOT

此方法被广泛使用,因为内核和文件系统可以直接在您的启动服务器上访问。测试新内核也很容易。您只需生成内核并将其放入正确的目录中。启动时,PA 主机将在 BOOT_ADMIN 中输入 boot lan 来启动新内核。最后,这是 I/O 设备不受支持的系统(例如,撰写本文时的 E 类)的唯一方法。

启用NFSROOT支持比RAMDISK更容易。您必须编辑palo.conf以指定启动服务器 IP 地址,而不是字符串HOSTNAME。例如,如果您的服务器的 IP 地址为 10.10.10.2,则palo.conf文件应包含

# This a generic Palo configuration file.  For more information about how
# it works try 'palo -?'.
#
# Most people using 'make palo' want a bootable file, usable for
# network or tape booting for example.
--init-tape=lifimage
--recoverykernel=vmlinux

########## Pick your ROOT here! ##########
# You need at least one 'root='!
#
# If you want a root ramdisk, use the next 2 lines
#   (Edit the ramdisk image name!!!!)
#--ramdisk=ram-disk-image-file
#--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk

# If you want NFS root, use the following command line (Edit the HOSTNAME!!!)
--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=10.10.10.2 ip=bootp

# If you have root on a disk partition, use this (Edit the partition name!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/sda1
					
如果您有其他 IP,则必须使用正确的数据填写此字段。您不应更改此文件的任何其他内容。正确配置palo.conf后,您可以进入linux/目录并执行 make palo。结果,lifimage文件,通常在linux/目录中等待您。

中等待您。NFSROOT有关

3.3.3. 制作可启动分区

在本部分中,PALO 可以被视为 LILO 克隆。palo 主要是一个程序,它使 PA 主机能够启动其硬盘驱动器上的内核。本节将解释如何使其工作。

安装 PALO 包后,默认palo.conf的副本可以在/usr/share/doc/palo/palo.conf找到。我们将在此处解释如何自定义它以满足您的需求。

要设置可启动硬盘,您必须正确地对其进行分区(也就是说,如果您想将其用作您的主要启动设备)。这意味着只有在您已经在您的 PA-RISC 主机上启动了一个最小系统(从 CD 或网络,请参阅 第 4 章)或者您打算使用目标计算机以外的另一台计算机准备您的硬盘驱动器(这对于解压缩和设置下载的文件系统对于速度较慢的主机来说很有用)时,才能实现此步骤。本 HOWTO 的目的不是教您如何使用 fdisk 及其朋友,所以这里是您必须知道的一些事情

Warning

小心!vmlinux实际启动的文件也必须位于硬盘驱动器的前 2GB 内。我们强烈建议要么(在*旧*方案中)在磁盘的开头创建一个单独的/boot分区(除非您计划每次都启动恢复内核),要么使用*新*方案并将 PALO 分区挂载为/boot,因为如果您的 vmlinux 二进制文件被物理存储在磁盘的前 2GB 之后(例如,当使用数据填充 '/' 时),主机将不再启动。

事实上,PALO 的第三种用法是最常见的,因为默认的/etc/palo.conf使得配置很容易。

3.3.3.1. 旧方案:隐藏分区

隐藏分区已弃用。不要将此用于新设置。请改用新方案(请参阅 第 3.3.3.2 节)。记录隐藏分区方法是为了后代着想。

这是 fdisk 的输出,它代表一个具有 16MB PALO 空间、128MB 交换空间和大约 1GB '/' 分区的主机的硬盘驱动器


bash# fdisk -l /dev/sda

Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders
Units = cylinders of 8246 * 512 bytes

	 Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1         4     16461   f0  Linux/PA-RISC boot
/dev/sda2             5        34    123690   82  Linux swap
/dev/sda3            35       277   1001889   83  Linux
					

现在让我们处理 PALO 配置。以下是您可以更改的各种参数

  • recoverykernel(顾名思义)是您想要在故障保护会话中启动的内核的路径,它将存储在 'f0-type' 分区中。

  • bootloaderiplboot引导加载程序实用程序的路径,该实用程序由 PALO 在您执行 make iplboot 时创建。

    Note

    通常您不想更改甚至指定此项。

  • init-partitioned用于指示 palo 将写入其启动参数的预分区设备。效果是立竿见影的。这意味着 PALO 将写入(并擦除)此设备的 'f0' 分区的内容,该分区必须存在。

  • commandline:第一个数字是您的 ext2/ext3 分区的编号,内核文件位于该分区,如 fdisk 报告的那样。从逻辑上讲,下一个字符串是从此分区的根目录到内核的绝对路径 [1]。以下空格分隔的参数(请勿使用任何引号!)将作为其参数传递给内核。例如HOME=TERM=是启动时传递给 init 的环境变量。它们不是强制性的,但它们可能很有用。root=告诉内核必须在启动时将哪个分区挂载为根文件系统。当您有多个磁盘时,这可能会很棘手,并且是强制性参数。命令行的最大长度为 127 个字符。

    您也可以添加console=,以强制指定输出控制台。您应该记住console=ttyS0用于串行控制台,而console=tty0用于 STI(图形)控制台。已添加对 MUX 控制台的支持(如果在内核中启用,请参阅 第 5.2 节),使用console=ttyB0PALO 的最新版本会自动检测正确的控制台路径(除了 MUX),并且可以确定应该使用 32 位还是 64 位内核。如果没有,请发送邮件到邮件列表。最后但并非最不重要的是,如果您使用的是 Debian 2.6 内核,您还需要添加initrd=X/path/to/initrd,遵循与内核路径[1]相同的规则,请参见上文。

根据上面的 fdisk 示例,我们想使用/dev/sda3作为我们的根分区。因此,配置文件应如下所示

# The following arguments are set up for booting from /dev/sda, specifically
# mounting partition 3 as root, and using /boot/vmlinux as both the
# recovery kernel, and the default dynamically-booted kernel.
--recoverykernel=/boot/vmlinux
--init-partitioned=/dev/sda
--commandline=3/boot/vmlinux root=/dev/sda3
						

3.3.3.2. 新方案:挂载分区

以下是使用新方法做事的一个实际示例,通过使用格式化的 PALO 分区。该方案应该是新安装的首选方案。

查看前面的示例(第 3.3.3.1 节),只需要更改很少的东西。基本上,如果您需要一个单独的/boot分区,它将在下面详细介绍的方案中消失。 PALO 的配置也会略有不同,但仅此而已。

这是 fdisk 的输出,它代表一个具有 100MB PALO 空间(将挂载为/boot)、128MB 交换空间和大约 1GB '/' 分区的主机的硬盘驱动器(请记住f0分区仍然必须完全包含在磁盘的前 2GB 中)


bash# fdisk -l /dev/sda

Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders
Units = cylinders of 8246 * 512 bytes

	 Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        26    100461   f0  Linux/PA-RISC boot
/dev/sda2            27        36    123690   82  Linux swap
/dev/sda3            37       277    917889   83  Linux
					

现在让我们处理 PALO 配置。与前面的示例相反,配置文件中需要放置的选项要少得多,并且设置是一个单步操作:初始化步骤,只需要完成一次。

要首次将 PALO 分区初始化为 Linux 系统可以理解的东西(ext2ext3文件系统),您需要运行以下命令(作为root):

[user@machine ~/dir]> palo --format-as=N --init-partitioned=target_disk
					

其中N2ext23ext3target_disk是包含 PALO 分区的设备,/dev/sda在当前示例中。继续使用此示例,假设我们想要一个ext3分区,我们将使用

[user@machine ~/dir]> palo --format-as=3 --init-partitioned=/dev/sda
					

Warning

不要使用 mkfsmke2fs 在此分区上生成文件系统。 PALO 将块标记为已使用,其中 PALO 的引导加载程序部分存储在磁盘上。这些工具不知道 PALO 引导加载程序!

Note

这只需要运行一次,因为它会擦除f0分区上的任何现有数据。

最后,我们需要告诉 PALO 关于分区、我们希望如何使用它以及我们不希望在每次运行 PALO 时都将其擦除。因此,与我们当前的示例保持同步,配置文件应如下所示

# The following arguments are set up for booting from /dev/sda, specifically
# mounting partition 3 as root and booting the vmlinux file in /dev/sda1, palo
# partition formatted as ext3.
--update-partitioned=/dev/sda --format-as=3
--commandline=1/vmlinux root=/dev/sda3
						

正如人们所见,因为我们将直接在f0分区上存储我们的内核,所以我们告诉 PALO 从中加载它们(因此1中的commandline参数。

Note

在前一节 (3.3.3.1节) 中,我们讨论了init-partitioned参数。在这里,我们使用update-partitioned代替,与前者相反,它告诉 PALO 运行时不要擦除分区的内容[2]

注意

[1]

例如:/boot 从一个单独的分区挂载,根据 fdisk 来说,该分区号是 4。从 Linux 的角度来看,该文件的绝对路径是/boot/vmlinux,但从分区的角度来看,它是/vmlinux。因此,命令行将以 "4/vmlinux" 开头。我们希望这足够清楚了!

[2]

format-as开关有点容易误导。当与init-partitioned一起使用时,它是用来指定格式化新分区的文件系统类型,但与update-partitioned一起使用时,它是用来告诉 PALO 已经格式化的分区上使用的文件系统类型。