下面的命令比仅内核版本3.13.0-35更通用。
1.挂载efi分区并在其中复制内核文件
$ mount /dev/sda3 /boot/efi
$ mkdir -pv /boot/efi/EFI/ubuntu/
$ cp -uv /boot/vmlinuz-* /boot/initrd.img-* /boot/efi/EFI/ubuntu/
'/boot/vmlinuz-3.13.0-35-generic' -> '/boot/efi/EFI/ubuntu/vmlinuz-3.13.0-35-generic'
'/boot/initrd.img-3.13.0-35-generic' -> '/boot/efi/EFI/ubuntu/initrd.img-3.13.0-35-generic'
2.更改内核文件名
通过删除来缩短内核文件名,-generic
因为似乎存在39个字符的长度限制,并重命名以结尾的内核文件.efi
,这确保了与大多数系统的兼容性
$ for f in /boot/efi/EFI/ubuntu/vmlinuz-*-generic; do mv -uv -- "$f" "${f//-generic/}.efi"; done
'/boot/efi/EFI/ubuntu/vmlinuz-3.13.0-35-generic' -> '/boot/efi/EFI/ubuntu/vmlinuz-3.13.0-35-generic.efi'`
上述名称内核文件名的缩写对于已dpkg
安装的主线内核是不够的,因为例如/EFI/ubuntu/vmlinuz-3.16.0-031600rc6.efi
,-generic
尚不超过40个字符长。
3.将新条目添加到EFI引导菜单
3.13.0-35
在此示例中,用您的特定内核版本替换
$ kv=3.13.0-35;efibootmgr -c -p 3 -L $kv -l \EFI\ubuntu\vmlinuz-$kv.efi -u root=/dev/sda1 initrd=\\EFI\\ubuntu\\initrd.img-$kv-generic ro rootfstype=ext4 debug ignore_loglevel libata.force=dump_id crashkernel=384M-:128M
此新的引导菜单项将成为您的默认新引导选项。
你可能不需要额外的调试参数debug
,ignore_loglevel
,libata.force=dump_id
和crashkernel=384M-:128M
。Initrd
必须存在,否则引导挂起在“ Switched to clocksource tsc。 ”处,因为无法打开根设备sda1。