我已经在 Chromebook 上安装了 Ubuntu,但它只能启动到 Chrome OS。我的目标是让我的 Chromebook 启动到 Ubuntu。
答案1
安装 Ubuntu 后,如果您重新启动 Chromebook,默认情况下它将继续启动到 Chrome OS,该操作系统位于其自己的专用分区中。
如果您希望将 ChrUbuntu 设为默认,请打开 ChrUbuntu 中的终端(或 Chrome OS 中的开发者控制台命令提示符),然后输入 sudo cgpt add -i 6 -P 5 -S 1 /dev/sda 以更改默认启动分区。将其改回 Chrome OS 非常简单,只需在启动 Chromebook 时禁用开发者模式,或者在终端输入 sudo cgpt add -i 6 -P 0 -S 1 /dev/sda 即可。
编辑我:
设置启动优先级
此时我们应该有以下情况:
- Image-A 是官方的 Google Chrome 操作系统,可以在正常模式或开发模式下启动。
- Image-B 是(或将在第一次自动更新后)另一个官方的 Google Chrome 操作系统,它可以在正常模式或开发模式下启动。
- Image-C 是带有修改后的命令行和 Ubuntu rootfs 的 Chrome OS 内核,只能在开发模式下启动。
接下来,我们调整镜像之间的优先级,以便可以试用我们的 Ubuntu 镜像。镜像优先级是其内核分区的一个属性。运行cgpt show /dev/sda
,查看内核优先级:
本地主机〜#cgpt显示/ dev / sda
...
4096 32768 2 Label: "KERN-A" Type: ChromeOS kernel UUID: D176DC60-81F1-654E-8953-E3D28019738C Attr: priority=3 tries=0 successful=1
...
36864 32768 4 Label: "KERN-B" Type: ChromeOS kernel UUID: F1A2C65C-CC22-FF4A-A8BC-67BA233F3D40 Attr: priority=0 tries=15 successful=0
...
12369920 32768 6 Label: "KERN-C" Type: ChromeOS kernel UUID: B6954485-4295-9749-956A-C315B01FB684 Attr: priority=0 tries=15 successful=0
优先级决定了 BIOS 尝试查找有效内核的顺序(优先级越高,零表示根本不尝试)。每次 BIOS 尝试启动内核时,尝试字段都会递减,如果为零,则内核被视为无效(这让我们可以启动新的映像,而不必在它们不起作用时无限循环)。成功字段会覆盖尝试字段,但只有在操作系统启动并运行时才会设置。
我们将 KERN-C 的优先级改为 5:
cgpt add -i 6 -P 5 -T 1 -S 0 /dev/sda
这使得 KERN-C 具有最高优先级,但只给我们一次启动它的机会。这样,如果它不工作,我们就不会完全陷入困境。
如果你现在重启,你应该进入 Ubuntu!请注意,计算机科学标准答案 #1 适用:它对我有用™
如果出现问题并且 Ubuntu 崩溃或者您关闭电源,KERN-C 的 tries 字段将减少到 0,并且您将恢复启动 Chrome OS。
假设 Ubuntu 已启动并且你可以登录,请转到应用程序->附件->终端以获取 shell,然后运行
sudo cgpt add -i 6 -P 5 -S 1 /dev/sda
这会将 Ubuntu 内核标记为有效,因此它将在下次继续启动。
现在,您只需拨动开发模式开关即可在官方 Chrome OS 版本和 Ubuntu 之间来回切换。从开发模式切换到正常模式会擦除 STATE (/dev/sda1),但速度要快得多。再次从正常模式切换到开发模式通常会缓慢擦除 /dev/sda1,但由于我们正在启动 Ubuntu,因此不会发生这种情况。
这种方法之所以有效,是因为尽管 KERN-C 具有最高优先级,但它并未获得 Google 的签名。在开发模式下,这没问题,但在正常模式下,BIOS 会拒绝它。由于我们将成功标志设置为 1,BIOS 不会将其标记为无效,而只是每次都会跳过它。这会使正常模式下的启动时间略长,但只会延长一两秒。
当然,您也可以在重新启动之前使用 cgpt 手动设置优先级,在开发模式下切换图像。
请注意,如果正常图像自动更新,它可能会更改内核优先级,以便 Image-C 不再是最高优先级,并且下次切换到开发模式时,您将 a) 需要长时间等待,b) 仍在运行 Chrome OS,并且 c) 必须使用 cgpt 再次提高 KERN-C 优先级。
但是,由于自动更新仅在 Image-A 和 Image-B 之间切换,因此 Ubuntu 内核和 rootfs 不会受到影响。
答案2
不幸的是,我没有足够的声誉来对上述帖子发表评论,并且我的帖子太长而无法发表评论,所以我将澄清你的控制台的问题,布莱恩。
您的问题是您甚至不在控制台中。这就是为什么您会收到“未知命令:sudo”和“未知命令:cgpt”的原因。您没有处于完整的 Linux shell 中。
解决方法:使用 ctrl+alt+T 进入控制台后,输入“shell”(不带引号)。然后,您就可以执行 Hans 提供的有用命令了。
谢谢,
Num
PS:Hans,我试过你的方法,但出现了一个小问题。我没有内核 C。但是,控制台接受了命令,cgpt add -i 6 -P 5 -T 1 -S 0 /dev/sda
没有出现错误。当我重新启动时,屏幕亮了,但一直黑着,然后熄灭,然后再次闪烁黑屏,然后显示“操作系统验证已关闭”消息。我按下 ctrl+D,在显示器快速关闭之间闪烁了几次黑屏后,它成功启动了……进入 ChromeOS。我需要 apt-get 标头或其他东西吗?我知道 KERN-C 应该在列表中cgpt show /dev/sda
。我的笔记本电脑是 Acer C710,如果有帮助的话。我意识到这个问题主要发生在 Acers 上。