5.1. 在 64-bit ARM 上引导安装程序

[注意] 注意

关于如何引导图形安装程序的信息,请参见第 5.1.6 节 “图形安装程序”

5.1.1. 控制台配置

arm64 的 debian-installer 映像支持图形安装程序(虽然是实验性的),但对于某些设备,您可能仍需要使用串口控制台。控制台设备应该会被固件自动检测到,但如果没有,那么从 GRUB 菜单引导 linux 后,您将看到一个 Booting Linux (正在引导 Linux)的消息,然后就没了。

如果遇到此问题,那么您需要在内核命令行上设置特定的控制台配置。在 GRUB 菜单中按 e,以编辑内核命令行,然后将

--- quiet

更改为

console=<device>,<speed>

,例如

console=ttyAMA0,115200n8

。完成后,按组合键 Control+x 来使用新设置继续引导。

5.1.2. Juno 安装

Juno 有 UEFI,所以安装很直接。最实际的方法是从 U 盘安装。您需要更新固件来使 USB-booting 工作。从 2015 年 3 月后的 http://releases.linaro.org/members/arm/platforms/latest/ 版本测试成功了。关于固件的更新请咨询 Juno 文档。

在 U 盘上准备一个标准的 arm64 的 CD/DVD 镜像。将其插入背面的一个 USB 端口。将串口线插入背面的 9 针串口。如果你需要联网(netboot 映像),请将以太网线插入机器前面的插口。

运行串行控制台,波特率 115200,8 位,无奇偶校验位,并引导 Juno。它应会从 U 盘引导到 GRUB 菜单。在 Juno 上检测不到正确的控制台配置,所以只是按下 Enter 将显示没有内核输出。将控制台设为

console=ttyAMA0,115200n8

(如在 第 5.1.1 节 “控制台配置” 中所述)。Control+x 启动,应该会显示 debian-installer 屏幕,然后您可以继续进行标准安装过程。

5.1.3. Applied Micro Mustang 安装

UEFI 可用于此机器,但通常随 U-Boot 一起提供,因此您首先需要安装 UEFI 固件,然后使用标准的引导/安装方法,或使用 U-Boot 引导方法。您必须使用串行控制台来控制安装,因为 arm64 架构上未启用图形安装程序。

推荐的安装方法是使用随机附带的 openembedded 系统,将 debian-installer 内核和 initrd 复制到硬盘驱动器上,然后从中引导以运行安装程序。或者替换使用 TFTP 来复制 kernel/dtb/initrd 并引导(第 5.1.4.1 节 “在 U-Boot 中引导 TFTP”)。在安装后,需要进行手动更改,从安装的映像来引导。

运行串行控制台,波特率 115200,8 位,无奇偶校验位,并引导机器。重新引导机器,当看到 Hit any key to stop autoboot: (按任意键停止自动引导:)时,按下任意键来获得 Mustang# 提示符。然后使用 U-Boot 命令来加载并引导内核、dtb 及 initrd。

5.1.4. 从 TFTP 引导

从网络引导需要网络连接和一台 TFTP 网络引导服务器(也可能是 DHCP、RARP 或 BOOTP 服务器,以进行自动网络配置)。

用于支持网络引导的服务器端设置在 第 4.4 节 “为使用 TFTP 网络引导准备文件” 中描述。

5.1.4.1. 在 U-Boot 中引导 TFTP

在系统上使用 U-Boot 固件进行网络引导包括三个步骤:a)配置网络,b)将映像(内核/初始虚拟硬盘/dtb)加载到内存中,以及 c)实际执行预加载的代码。

首先,您必须配置网络,或者通过运行

setenv autoload no
dhcp

由 DHCP 来自动配置,或者手动设置环境变量

setenv ipaddr <ip address of the client>
setenv netmask <netmask>
setenv serverip <ip address of the tftp server>
setenv dnsip <ip address of the nameserver>
setenv gatewayip <ip address of the default gateway>

。如果您愿意的话,可以永久设置它们,通过运行

saveenv

之后需要将映像(内核/初始虚拟硬盘/dtb)加载到内存中。这可以通过 tftpboot 命令来完成,该命令必须提供映像在内存中存储的地址。不幸的是,由于内存映射因系统而异,所以没有关于内存可以使用哪些地址的一般规则。

在某些系统上, U-Boot 预定义了一组带有适当的加载地址的环境变量:kernel_addr_r、ramdisk_addr_r和fdt_addr_r。您可以运行

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

来检查它们是否已定义。如果未定义,则必须查看系统文档以获取适当的值并手动设置。对于基于 Allwinner SunXi SOC 的系统(例如 Allwinner A10,架构名称为 sun4i 或 Allwinner A20,架构名称为 sun7i),您可以使用例如下面的值:

setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x47000000
setenv ramdisk_addr_r 0x48000000

定义加载地址后,将映像从之前定义的 tftp 服务器中加载到内存,可以使用

tftpboot ${kernel_addr_r} <内核映像文件名>
tftpboot ${fdt_addr_r} <dtb 文件名>
tftpboot ${ramdisk_addr_r} <初始化内存盘映像文件名>

第三部分是设置内核命令行并实际执行加载的代码。U-Boot 将 bootargs 环境变量的内容作为命令行传递给内核,因此内核和安装程序的任何参数——如控制台设备(请参见 第 5.3.1 节 “引导串口控制台”)或预设选项(请参见 第 5.3.2 节 “Debian 安装程序的参数”附录 B, 使用预置自动进行安装)——可以使用命令如

setenv bootargs console=ttyS0,115200 rootwait panic=10

来设置。执行先前加载的代码的确切命令取决于所使用的映像格式。要使用 uImage/uInitrd,命令是

bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

而要使用原生 Linux 映像,则是

bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

注意:当引导标准的 linux 映像时,重要的是在内核和 dtb 之后加载初始虚拟硬盘映像,因为 U-Boot 将 filesize 变量设置为最后一个加载的文件的大小,并且 bootz 命令需要虚拟硬盘映像的大小才能正常工作。在引导特定平台的内核时,也就是没有设备树的内核时,省略 ${fdt_addr_r} 参数即可。

5.1.5. 在 UEFI 下从 U 盘引导

如果您的计算机可以从 USB 引导,那么这可能是最简单的安装方法。假设已经从 第 3.6.1 节 “选择引导设备”第 4.3 节 “为从 U 盘引导准备文件” 准备好了所有步骤,那么只需将 U 盘插入一个空的 USB 口并重新引导计算机。系统应该引导,除非使用了灵活方式创建 U 盘并且不启用,应该(在支持的硬件上)看到图形引导菜单。这里可以选择各种安装程序选项,或只是按 Enter 按键。

5.1.6. 图形安装程序

安装程序的图形版本仅适用于有限数量的架构,包括 64-bit ARM。图形安装程序的功能被之上与基于文本的安装程序功能相同,因为它基本使用相同的程序,只是前端不同。

虽然功能相同,图形安装程序仍然有一些显著优点。主要优点在于它支持更多的语言,即在基于文本的 newt 前端上无法显示的字符集的语言也可以使用。它还具有一些可用性上的优点,如可以使用鼠标,并且在某些情况下还可以在单个屏幕上显示多个问题。

与基于文本的安装程序一样,当启动图形安装程序时可以添加引导参数。

[注意] 注意

与基于文本的安装程序相比,图形安装程序需要更多的内存才能运行:640MB。如果内存不足,它将自动返回到基于文本的 newt 前端。

如果系统中的内存量低于 260MB,图形安装程序可能无法启动,而基于文本的安装程序可能仍可以工作。对于可用内存很小的系统,推荐使用基于文本的安装程序。