建议
建议先看这个https://www.bilibili.com/read/cv23161386/
背景
新到了一块硬盘,想把这台主机做成双系统的,windows+manjaro系统。
为什么选择manjaro?
- win中的虚拟机已经有了日常使用的ubuntu。体验一下manjaro。
- ubuntu用来开发办公要比manjaro要稳定的,但是我这个机器是个人使用。
手边没有U盘,用现有硬盘的一个分区制作了一个启动器
前提条件:
windows关闭安全引导,快速启动,bios中硬盘的模式改为AHCI。
引导分区制作
windows中随便一个分区,计算机管理中磁盘管理压缩卷,压缩出来最少8g。用来代替U盘 大小最好选择一个和windows中其他分区大小不一样的大小,方便后期区分。
分区
新创建简单卷,分区的文件系统为FAT32,如果为NTFS有可能manajro无法引导。我这里盘符的名称为H 卷标为IMAGE
将下载的manjaro镜像拷贝进去。
记录以下信息
- 完整的镜像名
manjaro-gnome-22.1.1-230509-linux61.iso
- 镜像boot目录中的内核名称
vmlinuz-x86_64
- 镜像的发行版
MANJARO_GNOME_22
- 临时文件系统RAM的名称
initramfs-x86_64.img
使用GRUB2制作引导启动
下载grub2 grub-2.06-for-windows.zip
https://ftp.gnu.org/gnu/grub/
管理员模式运行cmd,切换到下载目录
Microsoft Windows [版本 10.0.19044.1706]
(c) Microsoft Corporation。保留所有权利。
# 切换盘符
C:\WINDOWS\system32>e:
# 切换目录
E:\>cd Downloads\grub-2.06-for-windows
E:\Downloads\grub-2.06-for-windows>
# 执行命令
grub-install.exe --target=x86_64-efi --efi-directory=h: --boot-directory=h:
# 这两个H,就是要创建grub引导的安装位置,也就是上面划分的U盘
创建的UEFI引导输出 如图1
可以通过以下命令找到分区划分的位置 图1 图2
打开image分区,能看到多了两个文件夹。 如图3
图一
图二
图三 U盘中的文件
windows中的基本准备到此完成
重启,进入bios启动菜单,正常情况下可以看到grub引导选项了,选它。
grub引导命令
grub> insmod ntfs
grub> insmod iso9660
grub> set isofile="/manjaro-gnome-22.1.1-230509-linux61.iso"
grub> search --no-floppy -f --set=root $isofile
grub> probe -u $root --set=pro
grub> loopback loop (hd4,gpt2)$isofile
grub> linux (loop)/boot/vmlinuz-x86_64 misolabel=MANJARO_GNOME_22 img_dev=/dev/disk/by-uuid/$pro img_loop=$isofile driver=nonfree
grub> initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img
grub> boot
详细解释
grub> insmod ntfs # 在GRUB引导程序中加载NTFS文件系统模块
grub> insmod iso9660 # 在GRUB引导程序中加载iso 9660文件系统模块,也就是光盘文件系统类型
grub> set isofile="/manjaro-gnome-22.1.1-230509-linux61.iso" # 设置变量
grub> search --no-floppy -f --set=root $isofile # 搜索$isofile,也就是上面定义的变量设置为根文件系统
grub> probe -u $root --set=pro # 探测上一步设置的根文件系统,将探测到的文件系统设置变量pro
grub> loopback loop (hd4,gpt2)$isofile # 将我们制作的u盘作为一个虚拟块设备挂载到grub中
grub> linux (loop)/boot/vmlinuz-x86_64 misolabel=MANJARO_GNOME_22 img_dev=/dev/disk/by-uuid/$pro img_loop=$isofile driver=nonfree # linux 加载内核命令 loop指定加载的路径 msolabel指定引导的操作系统名称 img_dev 指定要引导的操作系统所在的设备 img_loop 指定引导的操作系统所在的文件 driver指定使用的驱动程序
grub> initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img # 加载intel架构的cpu微码更新的文件 initramfs包含内核模块和文件系统的initramfs映像,在引导时被加载便于内核启动
grub> boot
在grub界面中可以通过ls查看所有的磁盘,但是linux或者grub中显示的是hd0,gpt1 hd0代表第一块硬盘,gpt1代表一个gpt分区。
-l参数可以查看所有分区的详细信息 通过管道 | less可以分页查看,通过对比在windows中设置的卷标可以方便找到镜像的存放位置,作为grub命令行中的参数
# 将镜像源切换为中国
~/下载 sudo pacman-mirrors -c China ✔ 4m 44s
[sudo] xxx 的密码:
::INFO Downloading mirrors from Manjaro
::INFO => Mirror pool: https://repo.manjaro.org/mirrors.json
::INFO => Mirror status: https://repo.manjaro.org/status.json
::ERROR Connection: HTTPSConnectionPool(host='repo.manjaro.org', port=443): Read timed out. (read timeout=2)
::INFO User generated mirror list
::------------------------------------------------------------
::INFO Custom mirror file saved: /var/lib/pacman-mirrors/custom-mirrors.json
::INFO Using default mirror file
::INFO Querying mirrors - This may take some time
0.306 China : https://mirror.nju.edu.cn/manjaro/
1.246 China : https://mirrors.ustc.edu.cn/manjaro/
1.593 China : https://mirrors.tuna.tsinghua.edu.cn/manjaro/
1.083 China : https://mirrors.tuna.tsinghua.edu.cn/manjaro/
0.474 China : https://mirrors.sjtug.sjtu.edu.cn/manjaro/
0.521 China : https://mirrors.jlu.edu.cn/manjaro/
::INFO Writing mirror list
::China : https://mirror.nju.edu.cn/manjaro/stable
::China : https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable
::China : https://mirrors.jlu.edu.cn/manjaro/stable
::China : https://mirrors.tuna.tsinghua.edu.cn/manjaro/stable
::China : https://mirrors.ustc.edu.cn/manjaro/stable
::China : https://mirrors.tuna.tsinghua.edu.cn/manjaro/stable
::INFO Mirror list generated and saved to: /etc/pacman.d/mirrorlist
问题
在manjaro中,重启,引导windows不成功,但是更改了bios的boot menu由可以,就很神奇。待解决
参考
https://www.bilibili.com/read/cv23161386/