本文共 7569 字,大约阅读时间需要 25 分钟。
在 Kali 上安装并管理 grub2 ,从而引导所有系统、LiveCD 和 grub4dos 下的 WinPE,如果想了解操作系统详细启动流程和 grub2 原理,可以参考文档:,下面引用该文档内概述部分内容:
计算机系统上电之后由固化到 ROM 中的 BIOS(UEFI) 进行操作,然后导入硬盘 MBR 中 Boot Loader 并调到其运行,由 Boot Loader 对操作系统内核进行加载,并将控制权交给操作系统.下图简单描述了 CentOS7 的启动过程 (CentOS7使用GRUB2作为Boot Loader):
现在的 Boot Loader 有很多类型,大致如下: 1.对Linux来说GRUB2 占据了统治地位 2.对 Windows 来说 Bootmgr/BCD 占据了统治地位 3.对 Apple 系统缺省的是 BootX 作为一名计算机工程师,了解 Boot Loader 的原理是很重要。本文着重介绍 GRUB2 及其启动流程.读完本文,相信读者能够对Boot Loader原理有一定深刻理解,并能大致知道其他Boot Loader的作用.。
① 虚拟机方式安装 Win10 ,当然也可以制作 WinPE 从 U 盘安装。
》》 下一步 》》》》 下一步 》》
》》 下一步 》》 》》 下一步 》》下一步 》》 下一步 》》 下一步 》》 注意!不要选错磁盘,否则将无法启动虚拟机甚至给其他磁盘造成不可挽回的灾难。 》》 下一步 》》下一步 》》完成 开启虚拟机,在开机启动时快速按下 F2,同时按 Shift 和 + 号键将 CD-ROM Drive 移动到第一位,保存配置后重启虚拟机 正常安装 Windows 10 ,注意安装位置选之前创建的的128GB 的分区
,这里省略安装过程。 ① U 盘方式安装 Ubuntu 20.04
② 虚拟机方式安装 Ubuntu 20.04(推荐),下面开始创建虚拟机。从 U 盘安装 Ubuntu 20.04 和从虚拟机安装 Ubuntu 20.04 的过程是一样的,U盘安装速度更快,但是会添加多余的物理机的系统的引导条目。如果制作 Linux 启动盘,推荐使用 rufus 。
》》下一步,然后稍后安装系统。 》》下一步》》 下一步》》 下一步 》》 下一步 注意!不要选错磁盘,否则将无法启动虚拟机甚至给其他磁盘造成不可挽回的灾难。 》》下一步》》 完成 虚拟机开机启动时快速按下 F2,同时按 Shift 和 + 号键将 CD-ROM Drive 移动到第一位,保存配置后重启虚拟机 不出意外会顺利进入 Ubuntu 20.04 安装过程,一路继续到安装类型: 因为我打算日常办公使用 Ubuntu 20.04,所以分区大一些,如果仅是学习体验 Linux 系统,10G 即可 》》现在安装 …这种方式安系统后可能会出现引导丢失的情况,请参考文末 FAQ 重新生成 grub 引导。
Kali 和 Ubuntu 都是 Debain 的 Linux 发行版,安装过程几乎一样,只需要将启动的 ISO 改为 kali 后启动虚拟机即可开始安装,如果安装后其他系统引导丢失请查看文章最后 FAQ 解决。
进入之前分区出来的的 64G U盘,我这里的驱动器是 E 盘。
如果嫌麻烦直接将我配置好的 U盘(不带 ISO文件)文件夹内的所有内容拷贝到 E 盘根目录,然后记得把Ubuntu 、 Kali 和 老毛桃WinPE 的 ISO 镜像拷贝到对应的目录,就能直接完成 5、LiveCD 和 6、安装 grub4dos 步骤。
进入之前分区出来的的 64G U盘,我这里的驱动器是 E 盘。
unifont.hex.gz
放到该目录下# This is a sample menu.lst file. You should make some changes to it.# The old install method of booting via the stage-files has been removed.# Please install GRLDR boot strap code to MBR with the bootlace.com# utility under DOS/Win9x or Linux.## It must be UTF-8 encoding for multi-lingual support. Font lines can be# appended to the file. The font lines should be in the unifont.hex format.color blue/green yellow/red white/magenta white/magentatimeout 30## menu border colorcolor border=0xEEFFEE## set vbe modegraphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32## loading splashimagesplashimage /boot/grub/splashimage.xpm || splashimage /boot/grub/splashimage.bmpdefault 0## Menu AutoNumberwrite 0x8274 0x2001## Fontsfont /SPHD/Fonts/unifont.hex.gztitle 【1】 启动 老毛桃 WinPEfind --set-root /SPHD/WinPE/LaoMaoTao.isomap --mem /SPHD/WinPE/LaoMaoTao.iso (0xff)map --hookchainloader (0xff)title 【2】 启动 Ubuntu 20.04 Livefind --set-root /SPHD/LiveCD/Ubuntu/Ubuntu_20_04/vmlinuzkernel /SPHD/LiveCD/Ubuntu/Ubuntu_20_04/vmlinuz boot=casper iso-scan/filename=/SPHD/LiveCD/Ubuntu/Ubuntu_20_04/ubuntu-20.04.2.0-desktop-amd64.iso ro quietsplash? locale=zh_CN.UTF-8initrd /SPHD/LiveCD/Ubuntu/Ubuntu_20_04/initrdtitle 【3】 启动 Kali Livefind --set-root /SPHD/LiveCD/Kali/Kali_2021_1/g2ldr.mbrkernel /SPHD/LiveCD/Kali/Kali_2021_1/vmlinuz boot=live noconfig=sudo username=kali hostname=kaliinitrd /SPHD/LiveCD/Kali/Kali_2021_1/initrd.imgtitle 【4】 启动 Kali Live (failsafe)find --set-root /SPHD/LiveCD/Kali/Kali_2021_1/g2ldr.mbrkernel /SPHD/LiveCD/Kali/Kali_2021_1/vmlinuz boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normalinitrd /SPHD/LiveCD/Kali/Kali_2021_1/initrd.imgtitle 【5】 启动 Kali Live (forensic mode)find --set-root /SPHD/LiveCD/Kali/Kali_2021_1/g2ldr.mbrkernel /SPHD/LiveCD/Kali/Kali_2021_1/vmlinuz boot=live noconfig=sudo username=root hostname=kali noswap noautomountinitrd /SPHD/LiveCD/Kali/Kali_2021_1/initrd.imgtitle 【6】 commandline(命令行)commandlinetitle 【7】 reboot (重启)reboottitle 【8】 halt (关机)halt
最终 E 盘根目录内容如下:
虚拟机进入移动硬盘新安装的 Kali ( 如果最后安装的是 Ubuntu 20.04,就进入 Ubuntu 添加引导,命令是一样的 ),添加 grub 引导所有系统、LiveCD 和 grub4dos 下的 WinPE。
CTRL+ALT+T打开终端,sudo gedit /etc/grub.d/40_custom
,末尾追加:
#!/bin/shexec tail -n +3 $0# This file provides an easy way to add custom menu entries. Simply type the# menu entries you want to add after this comment. Be careful not to change# the 'exec tail' line above.submenu "超级移动硬盘工具箱"{ submenu "Grub4dos"{ menuentry "grub4dos 0.4.4_grub.exe" { insmod ntfs set root='(hd0,msdos1)' linux /grub.exe } menuentry "grub4dos 0.4.4_grldr" { insmod ntfs insmod ntldr set root='(hd0,msdos1)' ntldr /grldr } } submenu "Linux live"{ menuentry "Ubuntu 20.04 Live" { set root='hd0,1' linux /SPHD/LiveCD/Ubuntu/Ubuntu_20_04/vmlinuz boot=casper iso-scan/filename=/SPHD/LiveCD/Ubuntu/Ubuntu_20_04/ubuntu-20.04.2.0-desktop-amd64.iso ro quietsplash? locale=zh_CN.UTF-8 initrd /SPHD/LiveCD/Ubuntu/Ubuntu_20_04/initrd boot } menuentry 'Kali Live'{ insmod ntfs set isofile="/SPHD/LiveCD/Kali/Kali_2021_1/kali-linux-2021.1-live-amd64.iso" loopback loop (hd0,1)$isofile #linux (loop)/live/vmlinuz boot=live noconfig=sudo username=kali hostname=kali findiso=$isofile --verbose debug nomodeset linux (loop)/live/vmlinuz boot=live noconfig=sudo username=kali hostname=kali findiso=$isofile --verbose initrd (loop)/live/initrd.img boot } #menuentry 'Kali Live (failsafe)'{ # insmod ntfs # set isofile="/SPHD/LiveCD/Kali/Kali_2021_1/kali-linux-2021.1-live-amd64.iso" # loopback loop (hd0,1)$isofile # linux (loop)/live/vmlinuz boot=live vga=normal findiso=$isofile config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash # initrd (loop)/live/initrd.img # boot #} menuentry 'Kali Live (forensic mode)'{ insmod ntfs set isofile="/SPHD/LiveCD/Kali/Kali_2021_1/kali-linux-2021.1-live-amd64.iso" loopback loop (hd0,1)$isofile linux (loop)/live/vmlinuz boot=live noconfig=sudo username=kali hostname=kali findiso=$isofile noswap noautomount --verbose initrd (loop)/live/initrd.img boot } } menuentry "commandline(命令行)" { commandline } menuentry "reboot (重启)" { reboot } menuentry "halt (关机)" { halt }}
sudo update-grub
解决办法:将硬盘脱机后再联机,如果还不行只能重启电脑了。
解决办法:sudo grub-mkconfig -o /boot/grub/grub.cfg
这个命令将自动扫描所有硬盘内的其他系统。如果还没有解决,则需要手动新增 Win10 启动项,然后更新 grub2。具体如下:CTRL+ALT+T打开终端,sudo gedit /etc/grub.d/40_custom
,末尾追加:
menuentry 'Windows 10' --class windows --class os { insmod part_msdos insmod ntfs set root='(hd0,msdos2)' chainloader +1}
sudo update-grub
解决办法:建议系统安装顺序 Windows >> Centos >> Debian ,最后安装Debian 。因为 Debian 系统会扫描所有磁盘添加其它系统引导,而其它系统则没这么好心,尤其是 Windows 更新后就会破坏 Linux 的引导。如果 Windows 更新后或者安装 CentOS 后导致其他系统引导丢失,可以进入Debian LiveCD 手动修复引导或者使用 boot-repair
自动修复引导。
解决办法:sudo gedit /boot/grub/grub.cfg
把多余引导删除,但不要执行 sudo grub-mkconfig -o /boot/grub/grub.cfg 或者 sudo update-grub
命令,/boot/grub/grub.cfg
为系统自动生成,执行该命令后生成的新文件会将修改的配置覆盖,但不影响 /etc/grub.d/40_custom
。
解决办法:
链接:https://pan.baidu.com/s/13tMvHYAmRguT8mgYi4QRcA
提取码:28p9 复制这段内容后打开百度网盘手机App,操作更方便哦转载地址:http://bykrf.baihongyu.com/