这几天在做的一个项目中需要依赖 ubuntu 20.04.4 LTS 版本。本人的开发机器是 MacBook Pro M1 Pro 处理器版本的,使用 vmware fusion 技术预览版 (可以点击下载最新版本,可能需要注册账号) 安装虚拟机安装过程中,一直遇到无法启动的问题,一般是如下提示:
EFI stub: ERROR: FIRMWARE BUG: kernel image not aligned on 64k boundary
EFI stub: ERROR: FIRMWARE BUG: Image BSS overlaps adjacent EFI memory region
经过查找资料,发现可能是新版本内核与 M1 处理器的内存存在兼容性问题,目前暂无官方解决方案。只能退而求其次使用旧版本内核安装,然后再逐步更新至可用的最新内核版本,来避免安全问题、性能问题。
最终通过好几天的摸索,终于曲线救国可正常使用,特记录下来,帮兄弟们节省时间。
在断开虚拟机网络的情况下安装旧版本 ubuntu
更新内核以及其他组件,并锁定内核版本至 5.14.21 。
更新组件
sudo apt-get update
sudo apt-get upgrade
安装新内核
下载内核更新工具
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
此操作可能会由于国内特殊的网络环境而失败,自行解决。能看到这个文章的人应该不成问题。
将脚本安装只可执行目录:
sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
安装指定内核
sudo ubuntu-mainline-kernel.sh -i 5.14.21
经过多轮尝试,发现 5.14.21 目前可用的最新版本内核,从 5.15.0 开始就无法启动了。兄弟们有时间的话可以去看看 5.15.0 这个版本到底更新了啥 feature 。
漫长的下载安装之后,还需要执行以下操作,解决依赖缺失的问题。
sudo apt --fix-broken install
此时,新内核已经安装成功,可以重启系统了,不出意外的话就会出意外:启动失败。
启动失败,启动时手动选择指定内核
此时不要慌,在 grub 启动器页面按方向⬇️按键,选择带有 advanced 的条目, 此时可以看到有好多内核可以选择,选择 5.14.21 版本内核(非 64K 的那个),进入系统。
删除无用内核,并锁定内核版本至 5.14.21 。
列举所有已经安装的内核
dpkg --get-selections | grep linux
删除低版本内核+带 64K 的所有内核
sudo apt-get remove {把上个页面中列出来的旧版本内核+带 5.14.21- generic-64k 的内核全部填入,使用空格分开}
删除内核配置项目,防止干扰试听
sudo apt-get purge {此处跟上一个命令的一模一样,复制进来即可}
更新 grub
sudo update-grub
锁定内核版本,防止后续更新炸了。
sudo apt-mark hold 5.14.21-generic
安装 vmtools
sudo apt install open-vm-tools
关机,进行快照。此时你将获得一个可以启动的ubuntu 20.04.4 LTS
版本虚拟机
通过以上方式安装的系统时不带桌面的,可以额外安装桌面。
此时又遇到了一堆坑。梳理后,把完整流程记录下来:
安装 ubuntu 桌面,建议选精简版本。此处需要下载大量包,耐心等候。
sudo apt install ubuntu-desktop-minimal
将 gdm3 替换为 lightdm ,解决启动后黑窗口&不跳出登陆界面问题。猜测是内核不兼容导致的。
删除 gdm3 以及其他依赖
sudo apt-get remove gdm3
sudo apt autoremove
安装 lightdm
sudo apt-get install lightdm
修改 netplan 配置,解决 NetworkManager 识别不到网卡导致的执行卡顿问题&无法界面配置网络问题
修改 /etc/netplan/00-installer-config.yaml 文件,如果没有这个文件,则在该目录下寻找是否有其他 yaml 。
sudo vi /etc/netplan/00-installer-config.yaml
network:
renderer: NetworkManager (在这个位置添加此行)
ethernets:
⚠️只需添加一行即可,其他不要修改。
应用配置
sudo netplan apply
PS:这个问题很妖,如果不进行以上操作,进入桌面后进行任何操作都会延迟一会(可能是在检测网络)才执行。不理解这样设计的逻辑。
安装桌面的 vmtools ,与上文中安装的不冲突,直接安装。
sudo apt install open-vm-tools-desktop
然后重启系统即可,建议再打个快照,方便后续克隆。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.