背景
这几天在做的一个项目中需要依赖 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
- 目前可使用的版本为 ubuntu-20.04-live-server-arm64.iso 点击应该就可以下载这个官方镜像,后面带小版本的均无法正常启动。
- 注意⚠️:联网状态下安装系统会自动更新,导致安装成功后直接无法启动。务必在虚拟机设置中断开网络链接
- 安装完成后,确认可以进入系统时,建议关机&进行快照,方便回滚,防止后续操作失败导致前功尽弃。
-
更新内核以及其他组件,并锁定内核版本至 5.14.21 。
-
更新内核至 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
-
-
-
更新内核至 5.14.21 (或更低版本),并更新其他组件
-
安装 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.yamlnetwork: renderer: NetworkManager (在这个位置添加此行) ethernets:⚠️只需添加一行即可,其他不要修改。
-
应用配置
sudo netplan apply
PS:这个问题很妖,如果不进行以上操作,进入桌面后进行任何操作都会延迟一会(可能是在检测网络)才执行。不理解这样设计的逻辑。
-
-
安装桌面的 vmtools ,与上文中安装的不冲突,直接安装。
sudo apt install open-vm-tools-desktop -
然后重启系统即可,建议再打个快照,方便后续克隆。