注意 | |
---|---|
关于如何引导图形安装程序的信息,请参见第 5.1.6 节 “图形安装程序”。 |
arm64 的 debian-installer
映像支持图形安装程序(虽然是实验性的),但对于某些设备,您可能仍需要使用串口控制台。控制台设备应该会被固件自动检测到,但如果没有,那么从 GRUB 菜单引导 linux 后,您将看到一个 “Booting Linux” (正在引导 Linux)的消息,然后就没了。
如果遇到此问题,那么您需要在内核命令行上设置特定的控制台配置。在 GRUB 菜单中按 e
,以“编辑内核命令行”,然后将
--- quiet
更改为
console=<device>,<speed>
,例如
console=ttyAMA0,115200n8
。完成后,按组合键 Control+x 来使用新设置继续引导。
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
屏幕,然后您可以继续进行标准安装过程。
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。
从网络引导需要网络连接和一台 TFTP 网络引导服务器(也可能是 DHCP、RARP 或 BOOTP 服务器,以进行自动网络配置)。
用于支持网络引导的服务器端设置在 第 4.4 节 “为使用 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} 参数即可。
如果您的计算机可以从 USB 引导,那么这可能是最简单的安装方法。假设已经从 第 3.6.1 节 “选择引导设备” 和 第 4.3 节 “为从 U 盘引导准备文件” 准备好了所有步骤,那么只需将 U 盘插入一个空的 USB 口并重新引导计算机。系统应该引导,除非使用了灵活方式创建 U 盘并且不启用,应该(在支持的硬件上)看到图形引导菜单。这里可以选择各种安装程序选项,或只是按 Enter 按键。
安装程序的图形版本仅适用于有限数量的架构,包括 64-bit ARM。图形安装程序的功能被之上与基于文本的安装程序功能相同,因为它基本使用相同的程序,只是前端不同。
虽然功能相同,图形安装程序仍然有一些显著优点。主要优点在于它支持更多的语言,即在基于文本的 “newt” 前端上无法显示的字符集的语言也可以使用。它还具有一些可用性上的优点,如可以使用鼠标,并且在某些情况下还可以在单个屏幕上显示多个问题。
与基于文本的安装程序一样,当启动图形安装程序时可以添加引导参数。
注意 | |
---|---|
与基于文本的安装程序相比,图形安装程序需要更多的内存才能运行:640MB。如果内存不足,它将自动返回到基于文本的 “newt” 前端。 如果系统中的内存量低于 260MB,图形安装程序可能无法启动,而基于文本的安装程序可能仍可以工作。对于可用内存很小的系统,推荐使用基于文本的安装程序。 |