在为 Raspberry Pi 4 安装 Ubuntu 19.10.1 64 位服务器映像、安装 kubuntu-desktop 并重新启动后,系统在启动过程中挂起。似乎无法进入桌面 GUI。(笔记:我尝试过所有可用的桌面,尽管我更喜欢 Kubuntu。所有桌面的结果都一样。)重现问题的步骤如下。
材料
- Raspberry Pi 4B 4GB Model B,配备 1.5GHz 64 位四核 ARMv8 CPU(4GB RAM)
- 32GB SD 卡
- 500 GB 外置 SSD
- ubuntu-19.10.1-preinstalled-server-arm64-raspi3.img 映像文件从以下位置下载https://ubuntu.com/download/raspberry-pi。
重现步骤
- 下载图像文件并使用 Balena 蚀刻机(格式 FAT32)刻录到 SD 卡。
- 还可以使用 Balena 蚀刻机(格式 EXT4)将图像文件刻录到外部 SSD。
- 将两个存储设备连接/插入到 Raspberry Pi 4。
- 启动 Raspberry Pi 4。更改 ubuntu 用户密码后,启动成功,没有任何问题。事实上,此时,我可以通过 SSH 进入 RPi,并从 PuTTY 终端执行几乎所有我想做的事情。只有当我尝试添加 GUI 时,整个系统才会开始崩溃。
- 使用 安装 Kubuntu 桌面
sudo apt install kubuntu-desktop
。安装过程中未报告任何错误。(笔记:对 ubuntu-desktop、xubuntu-desktop 和许多其他桌面执行了相同的步骤。所有结果都相同。) 使用 重新启动 Raspberry Pi
sudo reboot
。重新启动一直持续到它挂在 [ 28.5791341] cloud-init[1547]: cloud-init v. 19.2-36。… 此时系统冻结(抱歉,冻结时没有完整的行。它显然在另一台机器上,有很多字符串字母和数字,因此复制和粘贴是不可能的。它确实报告了 cloud-init 已完成以及完成的正确时间。cloud-init
snap 应用程序服务成功启动后,该过程立即开始lxd.activate
。
此时系统挂起,光标停留在上面第 6 项中描述的行上。我尝试过按 [Enter]、输入 Ctrl+C 以及我能想到的所有其他方法;但都无法移动光标或重新启动进程。
有趣的是,此时我可以通过 SSH(使用 PuTTY)成功进入 Raspberry PI,并且可以毫无问题地输入和执行各种终端命令。因此,很明显是某个进程(cloud-init?)挂了,而不是系统。
此外,从具有 SSH 条目的机器上,我可以sudo reboot
多次执行 ,它将成功完成重启过程,直到它到达之前挂起的相同点,此时,它将再次挂起,就像以前一样。
请注意,我使用外部 SSD 作为操作系统。使用这种方法,系统使用 32 Gb SD 卡作为引导加载程序,然后自动切换到 sdb 上的 500 Gb SSD 进行操作。Ubuntu 在自动实现这一点方面做得很好。配置和运行它曾经是一项可怕的考验。任何试图通过 SD 卡运行系统的人一定是个鲁莽的人,他们会以失败告终,尤其是自从 SSD 变得非常便宜以来。 (即便如此,Raspberry Pi 的开发人员也对 RPi 识别和接受的外部驱动器控制器非常挑剔,这让事情变得很困难。幸运的是,像 James Chambers 这样的人给了我们一些可以工作的控制器列表。在使用外部驱动器的几十年里,我从来没有遇到过任何外部驱动器的问题,直到 RPi 4B。而且我们仍然必须有 SD 卡来启动引导程序,而不是直接启动到 SSD — RPi 3 在这方面做得很好。谈论 RPi 的一小步,却是一次巨大的、巨大的倒退!但我离题了。)我以前用过这个功能。只是想让你知道它确实有效。
另外,对于标签使用不当,我深表歉意。StackOverflow 的标签规则禁止我使用 之类的标签,19.10.1
而不是19.10
,这一区别在这个问题中至关重要。许多其他标签也是如此。
答案1
我很高兴看到其他人也遇到了和我完全一样的问题!这是我找到的解决方法——虽然不是解决方案,但可以让 Kubuntu 正常工作。当系统挂起时,您可以切换到另一个 TTY。我相信系统从 TTY1 启动,它应该是用于图形界面的 TTY。您可以按 CTL+ALT+F2 切换到 TTY2,然后您应该会收到登录提示。以 Ubuntu 身份登录,当收到提示时,执行“startx”。这将打开 Kubuntu 桌面,您已经登录到桌面。每次启动系统时我都必须这样做。我认为这一定是 Kubuntu 安装程序中的一个错误,但我还没有找到解决方法。如果有人能修复它,那当然会很好。应该有一个文件,您可以在其中插入“startx”命令并让它在启动时运行,但我对 Ubuntu 了解不够,无法做到这一点。
答案2
我刚刚安装了最新的 20.04 版本,Kubuntu 和 Lubuntu 也出现了同样的问题。删除 cloud-init 并不能解决问题。按 CTL+ALT+F2 切换到 TTY2 确实有效,并允许运行 startx。
但是,您可能正在寻找的解决方案是将以下内容添加到 /boot/firmware/syscfg.txt (或 usercfg.txt):
dtoverlay=vc4-fkms-v3d
这将加载“假”KMS 帧缓冲区,从而改善桌面使用率并修复启动顺序,使其直接进入桌面。顺便说一句,这有效,但它导致我的 1080p 显示器扫描不足,我通过在 syscfg.txt 中添加一个条目来修复此问题,如下所示:
disable_overscan=1
答案3
谢谢你的信息。我想也许我需要将其设置为以图形模式启动,因此从上面提到的 TTY2 发出:
$sudo systemctl set-default graphical
然后我重启,又卡在了同一个地方。所以我选择了手动方式:
$sudo systemctl set-default multi-user
然后我登录并发出startx
命令。
答案4
我也遇到了同样的问题。我刚刚卸载了 cloud-init,kubuntu 就可以正常加载了。
sudo apt remove cloud-init