grub2 安装 ubuntu(ubuntu安装分区)
大家好,今天来为大家解答grub2 安装 ubuntu这个问题的一些问题点,包括ubuntu安装分区也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
grub引导u盘安装ubuntu
grub引导u盘安装ubuntu(grub u盘安装)
上次给大家分享开源软件的时候说过,我们公司所有的电脑安装都是ubuntu系统。工作中使用的所有软件都是免费开源的项目。今天我们测试兼容性的时候需要一台windows系统的电脑,需要制作usb启动盘,在linux上面推荐使用 WoeUSB这个开源软件。
WoeUSB是一个开源免费的小工具,用于从Linux系统上的ISO文件或DVD创建Windows USB启动盘。该这个工具支持Windows 7,Windows 8.1和Windows 10 ISO系统文件。
本来ubuntu应用商店里是有款软件的,之间点击就能安装,但是如果要是那么简单我就不会写这篇文章了。
安装后发现在应用列表根本不显示,也搜索不到。我还以为是命令行版本呢!在终端输入命令也提示没有此命令。没办法只能手动安装了。
本次我一共整理了三种安装方法,我个人更倾向于使用命令行,故而给大家推荐第一种安装方式!
第一种(命令行版本 WoeUSB-bash):
在github上下载最新版本:
安装 WoeUSB-ng的依赖项,和第一种方法要安装的依赖项是一样的!
chmod+x woeusb-5.2.4.bash
然后还需要安装一些依赖项
sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin wimtools
现在就可以执行这个文件了./woeusb-5.2.4.bash可以看到命令提示,只需要制定一个windows镜像文件地址和 u盘的位置即可
sudo./woe-usb.woeusb--device Win10.iso/dev/sdd第二种(图形化界面的 WoeUSB-ng):
安装 WoeUSB-ng的依赖项,和第一种方法要安装的依赖项是一样的!
sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin wimtools
添加存储库
echo'deb '| sudo tee/etc/apt/sources.list.d/home:Provessor.list
添加 GPG密钥
curl-fsSL \Release.key| gpg--dearmor| sudo tee/etc/apt/trusted.gpg.d/home_Provessor.gpg>/dev/null
运行软件列表并安装
sudo apt updatesudo apt install woeusb
到这里就安装完成了,就可以在你电脑的应用列表看到这个软件了。
第三种(仅限ubuntu系统):
添加存储库并更新和安装,依次执行下面三个命令!
sudo add-apt-repository ppa:nilarimogard/webupd8sudo apt updatesudo apt install woeusb
在ubuntu20系统下会报错误提示:
下列软件包有未满足的依赖关系:
woeusb:依赖: libwxgtk3.0-0v5(>= 3.0.4+dfsg)但无法安装它
E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
看到这个提示,我们就需要手动安装 libwxgtk3.0。首先使用wget命令下载 libwxgtk3.0安装包,然后使用 dpkg安装下载后的deb包。
wget dpkg-i ibwxgtk3.0-0v5_3.0.4+dfsg-3_amd64.deb
安装成功后,再重新 woeusb安装命令
sudo apt updatesudo apt install woeusb
安装成功就可以在你电脑里的软件列表里看到这个软件。
关于ubuntu的grub2引导
步骤如下:
a进入grub的命令模式。进入grub界面后按C键进入命令行界面。
b先熟悉一下grub的一些命令 grub>help
c熟悉一下cat命令
d root指令来指定/boot所在的分区
e kernel指令来指定linux的内核,及所在的分区
f用initrd命令来指定initrd文件
g boot引导系统
cat命令的用法
cat指令是用来查看文件内容的,有时不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,就要用到cat(hd[0-n],y)/etc/fstab来获得这些内容;注意要学会用tab键命令补齐的功能;
grub> cat(按tab键会出来hd0或hd1之类的;
grub> cat(hd0,注:输入hd0,然后再按tab键;会出来分区之类的;
grub> cat(hd0,6)
Possible partitions are:
Partition num: 0, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is fat, partition type 0xb
Partition num: 5, Filesystem type is reiserfs, partition type 0x83
Partition num: 6, Filesystem type is ext2fs, partition type 0x83
Partition num: 7, Filesystem type unknown, partition type 0x83
Partition num: 8, Filesystem type is reiserfs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82
grub> cat(hd0,6)/etc/fstab注:比如我想查看一下(hd0,6)/etc/fstab的内容就这样输入;
LABEL=// ext3 defaults 1 1
/dev/devpts/dev/pts devpts gid=5,mode=620 0 0
/dev/shm/dev/shm tmpfs defaults 0 0
/dev/proc/proc proc defaults 0 0
/dev/sys/sys sysfs defaults 0 0
LABEL=SWAP-hda1 swap swap defaults 0 0
/dev/hdc/media/cdrecorder auto pamconsole,exec,noauto,
managed 0 0
主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和 Linux的/处于同一个硬盘分区;比如上面的例子中LABEL=/这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;
如果您的Linux系统/boot和/没有位于同一个分区,可能cat(hd[a-n],y)查到的是类似下面的;
LABEL=// ext3 defaults 1 1
LABEL=/boot/boot ext3 defaults 1 2
root(hd[0-n,y)指令来指定/boot所在的分区;
其实这个root(hd[0,n],y)是可以省略的,如果省略了,要在kerenl命令中指定;前面已经说过(hd[0-n],y)硬盘分区的表示方法的用途;主要是用来指定/boot所在的分区;
eg:
grub> root(hd0,0)
kernel指令,用来指定Linux的内核,及/所在的分区;
kernel这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;
如果已经通过root(hd[0-n],y)指定了/boot所在的分区,语法有两个:
如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;
kernel/boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
如果/boot有自己独立的分区,应该是;
kernel/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
在这里 root=/dev/hd[a-z]X是Linux的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat(hd[0-n],y)/etc/fstab中得到Linux的/所在的分区或分区的标签;
grub> kernel/boot/在这里按tab键;这样就列出/boot中的文件了;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz
grub> kernel/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
注解: root=LABEL=/是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;
grub> kernel/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
也可以把/boot所在的分区的指定 root(hd[0-n],y)这行省掉,直接在kernel中指定/boot所在的分区;所以就在下面的语法;
如果是/boot和Linux的根同处一个分区;
kernel(hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X
比如:
grub>kernel
如果是/boot和Linux所在的根不在一个分区;则是;
kernel(hd[0-n],y)/vmlinuz ro root=/dev/hd[a-z]X
grub> kernel(hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
[Linux-bzImage, setup=0x1e00, size=0x18e473]
或下面的输入,以cat出/etc/fstab内容为准;
grub> kernel(hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
initrd命令行来指定initrd文件;
grub> initrd/boot/initrd在这里tab来补齐;
grub> initrd/boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd@ 0x2e1000, 0x10e685 bytes]
如果/boot是独立的一个分区,应该是如下样子的语法;比如下面的;
grub> initrd/initrd在这里tab来补齐;
grub> initrd/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd@ 0x2e1000, 0x10e685 bytes]
boot引导系统;
grub>boot
下面是在我机器上的命令:
grub> cat(hd0,0)/etc/fstab
# This file is edited by fstab-sync- see'man fstab-sync' for details
LABEL=// ext3 defaults 1 1
/dev/devpts/dev/pts devpts gid=5,mode=620 0 0
/dev/shm/dev/shm tmpfs defaults 0 0
/dev/proc/proc proc defaults 0 0
/dev/sys/sys sysfs defaults 0 0
LABEL=SWAP-hda1 swap swap defaults 0 0
/dev/hdc/media/cdrecorder auto pamconsole,exec,noauto,managed 0 0
grub> root(hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> kernel/boot/在这里按tab补齐,全列出/boot所有的文件;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1 xen-syms xen.gz
grub> kernel/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
grub> initrd/boot/在这里按tab补齐
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK
memtest86+-1.55.1 xen-syms xen.gz
grub> initrd/boot/initrd-2.6.11-1.1369_FC4.img注;输入intrd文件名的全名;
[Linux-initrd@ 0x2e1000, 0x10e685 bytes]
grub> boot
ubuntu重新安装grub2:新建EFI分区,并重做
两块磁盘:最初,只有一个操作系统:windows 11,安装在/dev/sda。用了一段时间之后,安装了linux操作系统:ubuntu 22.04,安装在/dev/nvme0n1。安装之后,发现ubuntu的引导程序安装在了磁盘/dev/sda中。这不符合预期。预期中,一块磁盘一个操作系统,各自的引导程序都在各自的磁盘上,要互不干扰。现在,ubuntu的引导程序和windows的引导程序挤在一起了,不好,需要改。
系统引导程序,要安装在EFI分区中。EFI分区的文件系统FAT。所以,要建立EFI分区。
ubuntu通过grub2进行引导。在分区调整之后,需要重建grub2配置。
安装ubuntu的过程中,需要对磁盘进行分析,建立了4个分区:现在,需要将/boot分区一份为二。直接在ubuntu中无法调整,因为/boot正在使用中。所以,插上U盘,U盘中有ubuntu的安装系统,然后电脑重启,进入live模式。建立EFI分区,操作如下:整个过程中,要注意数据安全,一定要将原有/boot分区下的全部数据复制到新的/boot分区。磁盘相关操作,直接使用系统自带的图形化界面工具:磁盘。
此时,磁盘/dev/nvme0n1的分区如下。重建GRUB2的命令如下,要注意设备名称,不要错了:这个时候,重启电脑,可以进入引导程序,但是无法进入系统。因为磁盘分区改变了,但是mount配置文件并没有随之改变。所以,还需要修改mount配置文件/etc/fstab。
fstab的内容:需要更新的点:设备UUID,可以通过命令blkid来查询。此时重启,进入主板的BIOS,更改启动项到ubuntu所在的磁盘。然后保存,重启,就可以正常进入系统。
参考