博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打造 Win10 + Kali + Ubuntu + WinPE + LiveCD + U盘存储多合一超级移动硬盘
阅读量:2121 次
发布时间:2019-04-30

本文共 7569 字,大约阅读时间需要 25 分钟。

SPHD 超级移动硬盘

零、效果图

1、grub 和 grub4dos

在这里插入图片描述

在这里插入图片描述

2、kali

在这里插入图片描述

一、原理

在 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的作用.。

在这里插入图片描述

二、准备

1、硬件

  • 一个移动硬盘
  • 一个 U 盘(可选)

2、软件

  • 、 二选一

3、镜像

三、具体步骤

1、创建分区

在这里插入图片描述

2、安装 Win10

① 虚拟机方式安装 Win10 ,当然也可以制作 WinPE 从 U 盘安装。

在这里插入图片描述
》》 下一步 》》

在这里插入图片描述

》》 下一步 》》

在这里插入图片描述

》》 下一步 》》
在这里插入图片描述
》》 下一步 》》下一步 》》 下一步 》》 下一步 》》
在这里插入图片描述
在这里插入图片描述
注意!不要选错磁盘,否则将无法启动虚拟机甚至给其他磁盘造成不可挽回的灾难。
在这里插入图片描述
》》 下一步 》》下一步 》》完成
在这里插入图片描述
开启虚拟机,在开机启动时快速按下 F2,同时按 Shift 和 + 号键将 CD-ROM Drive 移动到第一位,保存配置后重启虚拟机
在这里插入图片描述
在这里插入图片描述
正常安装 Windows 10 ,注意安装位置选之前创建的的 128GB 的分区,这里省略安装过程。

3、安装 Ubuntu 20.04

① U 盘方式安装 Ubuntu 20.04

从 U 盘安装 Ubuntu 20.04 和从虚拟机安装 Ubuntu 20.04 的过程是一样的,U盘安装速度更快,但是会添加多余的物理机的系统的引导条目。如果制作 Linux 启动盘,推荐使用 rufus 。

在这里插入图片描述

② 虚拟机方式安装 Ubuntu 20.04(推荐),下面开始创建虚拟机。

这种方式安系统后可能会出现引导丢失的情况,请参考文末 FAQ 重新生成 grub 引导。

在这里插入图片描述

》》下一步,然后稍后安装系统。
在这里插入图片描述
在这里插入图片描述
》》下一步》》 下一步》》 下一步 》》 下一步
在这里插入图片描述
在这里插入图片描述
注意!不要选错磁盘,否则将无法启动虚拟机甚至给其他磁盘造成不可挽回的灾难。
在这里插入图片描述
》》下一步》》 完成
在这里插入图片描述
虚拟机开机启动时快速按下 F2,同时按 Shift 和 + 号键将 CD-ROM Drive 移动到第一位,保存配置后重启虚拟机
在这里插入图片描述
不出意外会顺利进入 Ubuntu 20.04 安装过程,一路继续到安装类型:
在这里插入图片描述
在这里插入图片描述
因为我打算日常办公使用 Ubuntu 20.04,所以分区大一些,如果仅是学习体验 Linux 系统,10G 即可
在这里插入图片描述
》》现在安装 …

4、安装 Kali

Kali 和 Ubuntu 都是 Debain 的 Linux 发行版,安装过程几乎一样,只需要将启动的 ISO 改为 kali 后启动虚拟机即可开始安装,如果安装后其他系统引导丢失请查看文章最后 FAQ 解决。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、LiveCD

1、Linux

进入之前分区出来的的 64G U盘,我这里的驱动器是 E 盘。

  1. 递归新建文件夹 SPHD/LiveCD/Ubuntu/Ubuntu_20_04
  2. 递归新建文件夹 SPHD/LiveCD/Kali/Kali_2021_1
  3. 将 Ubuntu 和 Kali 镜像分别放在各自的文件夹下
  4. 将 Ubuntu 镜像内 casper内的 initrz 和 vmlinuz 提取出来
  5. 将 Kali 镜像中的 g2ldr.mbr 、 live/initrd.img 和 live/vmlinuz 提取出来

如果嫌麻烦直接将我配置好的 U盘(不带 ISO文件)文件夹内的所有内容拷贝到 E 盘根目录,然后记得把Ubuntu 、 Kali 和 老毛桃WinPE 的 ISO 镜像拷贝到对应的目录,就能直接完成 5、LiveCD 和 6、安装 grub4dos 步骤。

在这里插入图片描述

在这里插入图片描述

2、WinPE

进入之前分区出来的的 64G U盘,我这里的驱动器是 E 盘。

  1. 新建文件夹 /SPHD/WinPE
  2. 将老毛桃或者其它种类 WinPE 的 ISO 放在此目录下
    在这里插入图片描述
    在这里插入图片描述

6、安装 grub4dos

  1. 将 grub4dos.rar 解压得到 grldr 和 grub.exe 并复制到之前分区出来的的 64G U盘的根目录,我这里的驱动器是 E 盘。
  2. 新建文件夹 /SPHD/Fonts ,将 字体文件 unifont.hex.gz 放到该目录下
  3. 根目录新建 MENU.lst ,写入如下内容后保存:
# 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 盘根目录内容如下:

在这里插入图片描述

7、添加 grub 引导

虚拟机进入移动硬盘新安装的 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

四、FAQ

一、虚拟机无法挂载移动硬盘

解决办法:将硬盘脱机后再联机,如果还不行只能重启电脑了。

在这里插入图片描述

二、grub2 没有 Win10 引导项

解决办法: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

三、安装其它系统后或者误操作后导致 Ubuntu 等引导丢失如何修复

解决办法:建议系统安装顺序 Windows >> Centos >> Debian ,最后安装Debian 。因为 Debian 系统会扫描所有磁盘添加其它系统引导,而其它系统则没这么好心,尤其是 Windows 更新后就会破坏 Linux 的引导。如果 Windows 更新后或者安装 CentOS 后导致其他系统引导丢失,可以进入Debian LiveCD 手动修复引导或者使用 boot-repair 自动修复引导。

四、Ubuntu 更新引导把其他磁盘的系统引导也添加进去了

解决办法: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

五、grub2 和 grub4dos 默认样式太丑了,能不能美化下?

解决办法:

五、参考

六、资源

链接:https://pan.baidu.com/s/13tMvHYAmRguT8mgYi4QRcA

提取码:28p9
复制这段内容后打开百度网盘手机App,操作更方便哦

转载地址:http://bykrf.baihongyu.com/

你可能感兴趣的文章
Linux Python 2.7.15
查看>>
Nexus配置Linux Yum Repository
查看>>
Nexus Python pip Repository
查看>>
Linux Mysql 8.0.1
查看>>
Python pymqi 连接 IBM MQ
查看>>
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 详解
查看>>
Java - JVM TLAB、对象在内存中安置顺序、垃圾收集、回收算法
查看>>
转: 关于Linux与JVM的内存关系分析
查看>>
(转)Java 程序员必备的高效 Intellij IDEA 插件
查看>>
局域网(内网)docker安装及代理访问
查看>>
软考 英语学习
查看>>
maven 文件上传到远程服务器目录
查看>>
shell 脚本免密远程访问
查看>>
Linux平台Oracle多个实例启动说明
查看>>
在LINUX平台上手动创建数据库(oracle 10g)(在一个oracle服务器上启动两个实例)
查看>>
Oracle 10g 下载地址
查看>>
Linux 下 新增Oracle10g 实例
查看>>
LRM-00123 ORA-01078
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
专栏结语
查看>>