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

[注意] 注意

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

5.1.1. 控制台配置

The graphical installer is (experimentally) enabled on the arm64 debian-installer images, but on some devices you may still have to use the serial console. The console device should be detected automatically from the firmware, but if it is not then after you boot linux from the GRUB menu you will see a Booting Linux message, then nothing more.

如果遇到此问题,那么您需要在内核命令行上设置特定的控制台配置。在 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,图形安装程序可能无法启动,而基于文本的安装程序可能仍可以工作。对于可用内存很小的系统,推荐使用基于文本的安装程序。