在ThinkPad X280加装M.2硬盘上安装 Ubuntu 18.04.3 填坑记录
填坑背景
用了一段时间的X280后,突然想在M.2接口上加装一个 NVMe 2242 的SSD,发现 Lenovo 的BIOS设置的非常奇特。能够检测到这个硬盘,但是启动项里就是不能识别!或许是直接就给禁用从 NVMe0 启动也不一定,反正就是在 加装硬盘上安装了 Ubuntu 之后就再也找不到它的存在了。在原 Windows10 下只能看到几个需要格式化的盘符,或者连盘符也有可能看不到。
Ubuntu (GPT) 分区如下:@ /dev/nvme0n1
- /EFI - @ /dev/nvme0n1p1, 300 MB - EFI分区
- /MSR - @ /dev/nvme0n1p2, 700MB - 未知分区
- /boot - @ /dev/nvme0n1p3, 1024 MB - 主分区或者逻辑分区;
- swap - 16GB 或者 不用;在拥有不足 512 MB 内存的机器上,通常为 swap 分区分配2倍内存大小的空间。如果有更大的内存(大于 1024 MB),可以分配较少的空间甚至不需要swap 分区。(个人建议:感觉现在电脑的配置可以不要swap,但是也会用的着的,所以还是建议多少分点)
- / - @ /dev/nvmme0n1p4, 24GB 或者 剩下部分 - 逻辑分区或者主分区;
- /home - 剩下部分 - 逻辑分区或者主分区; 通常用于存放用户数据,下载的文件和媒体文件。在桌面系统中,/home 通常是最大的文件系统。
需要工具 DiskGenius 加载 GPT的分区盘 /EFI,发现在 /dev/nvme0n1 下的 /EFI 是空的, 在 /dev/sda1 下仅仅有 /EFI/Microsoft 和 /Boot 两个文件夹 —— 正常情况下至少还有一个 Ubuntu 的文件夹。
成功的解决办法:
使用工具 Rufurs 和 Ubuntu-18.04-LTS-amd64.iso 制作一个 GPT分区 的 UEFI 启动盘,然后把其中的 /EFI 下的 /boot/grub 和 /boot/grubx64.efi 和 /boot/bootx64.efi 等文件复制到 /dev/sda1 下的 /EFI/Ubuntu 的目录下。(例如:/EFI/Ubuntu/grubx64.efi 和 /EFI/Ubuntu/boot/)
使用下面的 命令 在windows10下 win+x +a, 更改 Window Boot Manager 的启动项:
bcdedit /enum firmware # 查看本机的启动项
# bcdedit /set {fwbootmgr} default {bootmgr}
# bcdedit /set '{bootmgr}' path \EFI\Microsoft\Boot\BOOTMGFW.EFI
bcdedit /set '{bootmgr}' path \EFI\Ubuntu\GRUBX64.EFI
bcdedit /set '{bootmgr}' path \EFI\Ubuntu\SHIMX64.EFI
或者新建一个 Ubuntu Boot Manager 的启动项:
efibootmgr -v
sudo efibootmgr -c -w -L "Ubuntu Boot Manager" -d /dev/sda -p 1 -l \\EFI\\Ubuntu\\shimx64.efi
# or
# sudo efibootmgr -c -w -L "Linux Boot Manager" -d /dev/sda -p 1 -l \\EFI\\Ubuntu\\grubx64.efi
- 参考链接:bcdedit 如何创建EFI 文件引导项
- 参考链接:直接用bcdedit创建bootmgr数据库和修复启动菜单
- 参考链接:用efibootmgr管理UEFI启动项,添加丢失的启动项
实操成功的方法:
(后来发现,其实这个过程也可以省略。可以使用工具 EasyBCD 工具新建一个 Ubuntu Linux 启动,在启动界面选择 Ubuntu Linux 引导启动,然后按 ESC 键盘进入 GRUB2 系统)
事先在/EFI/目录下建立 Ubuntu 文件夹,然后把 fw fwupx64.efi grub.cfg grubx64.efi mmx64.efi shimx64.efi 复制到目录(/EFI/Ubuntu/)下即可。
再进行Ubuntu登陆操作前,还需要使用U盘的Live系统去查看一下Ubuntu系统根目录所在的分区:
例如,/dev/nvm01n1p4
启动的时候,系统一般会直接跑到引导系统 grub2.02 下,然后输入下面的命令就可以进入 Unbuntu Linux 的登陆界面了。
grub> ls # 显示硬盘分区符
grub> ls (hd1,gpt1)/EFI/Ubuntu # 逐个盘符,确认分区盘位置
# 需要提前确认的信息
# a) EFI分区 (hd1,gpt1)
# b) Ubuntu 系统根目录 / 所在分区 /dev/nvme01n1p4
# 然后
root=(hd1,gpt1)//EFI/Ubuntu/boot
linux $root/vmlinuz-5.0.0.23-generic ro text root=/dev/nvme0n1p4
initrd $root/initrd.img-5.0.0.23-generic
boot
成功地 进入Ubuntu 系统登陆界面了,后面的事情就好办了。使用 efibootmgr 命令 把 (hd0, gpt1) 即 /dev/nvme0n1中 p1 分区的 /EFI/Ubuntu/shimx64.efi 链接到启动项:\\EFI\\Ubuntu\\shimx64.efi ,并给该启动项起个名字 "Ubuntu Boot Manager",命令如下:
$ sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -l \\EFI\\Ubuntu\\shim.efi -L "Ubuntu Boot Manager"
$ sudo efibootmgr -v
如果还不行,那就再次通过 GRUB2 进入系统,使用工具 repair-boot 修复。
更改启动顺序:
Ubuntu 引导修复成功后,在 /etc/default/grub 中可修改 默认启动项:
sudo gedit /etc/default/grub
将文件 grub 中的 GRUB_DEFAULT=0 根据需求作修改。
- 0代表默认从第一项启动
- 1代表从第二项启动
- 依次类推
将数字改成你想要启动的项,修改完保存关闭。然后再在终端中执行
sudo update-grub
手动生成 EFI 文件
首先,需要知道系统的 ESP (EFI System Partition) 在哪,然后在 Windows 和 Linuxs 系统下分别进行如下操作。
Windows 安装 EFI 引导:
#(没有盘符的情况下,程序自动识别)
bcdboot C:\Windows /l zh-cn #(假设已经知道 ESP 盘符为 X: ,一般建议在 Win PE 或 Win RE 中分配盘符)
bcdboot C:\Windows /s X: /f UEFI
Linux 安装 GRUB EFI 引导:
#(假设 ESP 挂在 /boot/efi 下)
grub-install --efi-directory=/boot/efi --boot-directory=/boot --target=x86_64-efi
Linux 下 UEFI 引导项管理:
列出所有引导项:
efibootmgr -v
删除指定引导项:
efibootmgr -b XXXX -B # XXXX 为对应的后四位数字
一般来说,每个系统的引导在 ESP 根目录下的 EFI 目录下都有自己的目录,像这样:
如果你不想要某个系统的引导,直接把它删掉就行了。
比如你想要删除 Windows 的引导,那就:
引导无论是在 Windows ,Win PE ,Win RE 还是 Linux,Live CD 下安装都是可以的。学会用这几条命令以及他们的相关参数,你想装哪都可以,装 U 盘上也没人管你,只要你的 UEFI BIOS 能识别出来就行了。
最后,这是我的 ESP:(那个 101MB 的 rescx64.efi 是因为它包含了一个完整的 GRUB 环境,还有 SystemRescueCD 的 vmlinuz 和 initramfs ,以及 SuperGRUB2Disk 的一些配置文件和我自己写的配置文件在里面,通过 grub-mkstandalone 命令制作。)
编辑于 2018-05-25
作者:知乎用户
链接:https://www.zhihu.com/question/276289613/answer/400414145
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
下面的这些内容没有实操成功过,仅供参考。
sudo gedit /etc/default/grub
sudo update-grub
Windows下设置Ubuntu引导项
折腾了很久,联系客服之后收到了一个明确的回复:X280 不能从 M.2接口的加装硬盘 引导启动。心中瞬时有 >> 10^4 头草泥马 往Lenovo 方向奔腾而去!
没法子,只能设法从 Windows10 启动,然后引导 ubuntu 起来干活了。
方法一:
使用easybcd。安装好Ubuntu后,按照教程设置EasyBCD,重启动。选择Linux,提示:
文件:\NST\AutoNeoGrub2.mbr
状态:0xc000007b
信息:无法加载应用程序或操作系统,原因是所需文件丢失或包含错误。
猝!
方法二:
来自《Windows下设置Ubuntu引导项》(Windows下设置Ubuntu引导项 - yhjoker - 博客园)
(我很奇怪,为什么很多人在windows下添加ubuntu引导时都用easybcd - Ubuntu中文论坛)
使用Windows自带的引导程序对linux进行引导,即将Ubuntu的相关引导信息加入Windows引导程序的配置文件中(一般是修改boot.ini文件),从而通过Windows的引导程序进行引导。这种方法对于Windows XP和Windows 7更为有效,因为这两个系统的引导程序和配置文件都位于活动分区中,对其的修改更简单,而之后的Windows引导程序好像不再使用boot.ini作为配置文件了,引导的设置更加复杂了。Windows 7下的具体引导设置可以参考这里。具体的操作流程包括将Linux的启动扇区作为一个文件拷贝至Windows的活动分区,并在boot.ini中设置一个指向该启动扇区文件的项目,从而使得引导程序可以根据该设置去引导Linux系统。借助安装有linux安装程序的U盘,选择试用linux,找到安装linux启动模块的设备名,如/dev0/sda5等,使用dd命令获得所需的文件。
dd if=/dev0/sdax of=ubuntu.mbr bs=512 count=1 //从指定文件/dev/sdax读取数据,读取512个字节,并输出到ubuntu.mbr文件中,从而得到linux启动的mbr
再将该文件放置到默认开机Windows系统的活动分区,修改相关的boot.ini文件即可。
该种方法笔者做过尝试但并未成功。个人认为这应该是最符合自身需求的方式,但失败原因不详,望能得到指点。(好像有结论说该种方式只能在Legacy BIOS模式系统中使用)
方法三:
通过Windows8.1 / Window10自带的工具bcdedit来进行开机启动设置。该工具在Windows NT之后的系统中提供。可通过bcdedit工具修改Win8.1下的BCD配置文件 和 设置对应的引导文件路径,这样Windows引导程序可以根据配置文件内容生成对应的引导菜单,引导程序也可根据设置路径信息找到对应的系统程序。bcdedit的操作指令在文章开始的链接中有介绍。或者可以直接通过图形界面工具easyBCD进行配置。
若自行手动配置,则需要新建一个启动引导项,给出相应的引导文件所在分区和路径、引导描述等参数。该种方式对于Windows系统引导其他Windows系统,如Win8.1引导Win10启动是有效的。但貌似在Windows8.1中引导Linux系统无法成功(最大的问题在于无法设置对应的path路径)。图示为笔者设备双系统Win10的相关信息。
方法四:
Ubuntu12.04以及后续版本引入了对EFI模式的支持,所以可以将Ubuntu的引导程序GRUB安装在设备的EFI分区中(原系统Win8.1在安装时会划分,可以在磁盘管理中定位),此操作会在EFI分区中生成引导Ubuntu的文件,从而可以引导Ubuntu,《EFI GPT 预装Win8下ubuntu12.04的安装与引导》原帖。但该贴的内容仍旧是通过Linux系统来引导Windows系统。笔者这里并没有使用Linux系统来引导Windows系统,而是让两个系统的引导程序相互独立,想要使用另一个系统时,则通过BIOS修改引导程序的使用顺序。
首先将Ubuntu安装至EFI分区,其中的目录内容会发生改变,在EFI文件夹下新增了ubuntu的引导程序。
linux下的启动分区即EFI分区挂载在/boot/efi下(可以通过df指令查看)
可以看到原EFI目录中新增了ubuntu目录
目录中的内容如图所示,其中的grubx64.efi和shimx64.efi均可进行Ubuntu系统的引导。其中前者无法在开启安全启动选项下进行启动。
此方法的实际原理是Ubuntu和Windows使用两个不同的引导系统,通过BIOS可以设置使用引导程序的顺序。当默认首先使用bootx64.efi作为引导程序时,则会引导Windows系统,而首先使用grubx64.efi作为引导程序时,则会引导Linux系统。这样的两个系统之间无法进行相互引导,但也保证了两个系统本身的情况不会相互干扰。设备开机时总是会默认载入BIOS中设置的第一顺序的引导程序对应的操作系统。这种方法相当于将Linux启动引导安装在EFI分区,从而多出一个启动文件grubx64.efi。通过选择grubx64.efi/bootx64.efi来对不同的系统进行引导。
方法五:
Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)
在ThinkPad X280加装M.2硬盘上安装 Ubuntu 18.04.3 填坑记录相关推荐
- 从硬盘中安装ubuntu 18,04
在easyBCD 软件中,配置neoGrub,文本如下 title Install Ubuntu root (hd0,0) kernel (hd0,0)/vmlinuzi boot=casper ...
- ThinkPad X1 Carbon 安装Ubuntu 18.04到移动硬盘 教程指南
ThinkPad X1 Carbon 安装Ubuntu 18.04到移动硬盘 教程指南 安装准备 步骤 下载ubuntu 制作启动盘 关闭Win系统快速启动 设置移动硬盘 设置BIOS 安全启动设置 ...
- 记一次安装 ubuntu 18.04 双系统 (双硬盘)
安装 ubuntu 18.04 奉劝那些没装双系统的都装装,昨天一个晚上+今天一个早上+一会下午就弄完了.虽然感觉不是百分百弄完了,但是起码可以用了- 简明要点 就直接说要点了,大话就不聊了.同时默认 ...
- win10环境向移动固态硬盘安装Ubuntu 18.04.3 LTS系统(即插即用)
win10环境向移动固态硬盘安装Ubuntu 18.04.3 LTS系统(即插即用) 一.从官网下载ubuntu18镜像 地址:https://ubuntu.com/download/desktop ...
- 戴尔(Dell)G3 3579(128 GB 固态硬盘+1 TB 机械硬盘)安装Ubuntu 16.04 LTS单系统(不是双系统,只装Ubuntu)
Table of Contents 硬件: 目标: 步骤: 1. 关于系统盘(在另外一台机子上操作U盘文件) 2. BIOS设置 3.安装系统 4. 安装完成后注意事项 5. 附安装过程中遇到的错误( ...
- VMware安装Ubuntu 18.04虚拟机(镜像下载、硬盘分区、创建虚拟机、安装系统、桥接模式网络配置)
1. VMware安装 安装VMware,Player免费,而且功能足够个人开发使用.(Pro的主要区别在于可以同时运行多个虚拟机,而Player只能同时运行一个) VMware Workstatio ...
- 通用pe 装linux系统,U盘“安装”Ubuntu 14.04操作系统详细教程(转)
Ubuntu是目前主流的Linux桌面操作系统,学习Linux系统的新手首选也是Ubuntu 系统.下面"孤狼"就以最新版的Ubuntu 14.04.1为例,制作U盘启动安装的详细 ...
- ubuntu服务器接入两块系统盘,两块硬盘Raid0安装ubuntu server11.04
身边有不少的破电脑,闲置的硬盘,这几天端午节放假,便凑活了一下自己组了一台双硬盘的 PC,废话不多说了,想用这台电脑做个文件服务器,所以想起来做个 raid0 来. 思路:对 Raid0 的理解就是两 ...
- xps15u盘装linux,Dell XPS 15 9560 安装 Ubuntu 18.04
按照这个教程https://github.com/yxrdydh/dell-xps-9560-ubuntu-respin,找一个linux机器或者使用虚拟机制作启动U盘,不然直接制作启动U盘,会卡死在 ...
最新文章
- springboot 订单重复提交_Spring Boot (一) 校验表单重复提交
- 3dmax导出fbx时如何带贴图_houdini | 第一章 第三节 贴图与顶点动画
- php mysql 查询 where_PHP MySQL Where 子句
- TPL中Task执行的内联性线程重入
- Qt修炼手册6_图形:图形视图框架
- Linux c中使用系统时间
- 【zabbix】安装、配置agent,配置被监控端
- 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】
- 计算机世界的虚拟机,容器和医学界的人工硬脑膜
- Thinkphp5.0 阿里云OSS扩展类上传示例(轮子)
- Android 系统(135)---Android anr 分析步骤总结
- android传感器_Android传感器
- 字符集_一文搞清楚unicode字符集的三种实现方式
- 【2016.4.6】结对编程 第二章 基础设计
- JAVA基础(1/17)-JAVA语言概述
- Windows电脑把蓝牙耳机识别成未知设备怎么办?(无法识别蓝牙耳机)
- 2019年nodejs凉了吗?凉到什么程度了?
- 海外自媒体多账号运营注意事项看这里!
- macOS Ventura 13.1 系统问题:掉电快 充电慢
- 笔记本电脑很久没用键盘不灵解决方案