首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GRUB -无效扇区大小65535在硬盘上运行GParted

使用GRUB -无效扇区大小65535在硬盘上运行GParted
EN

Unix & Linux用户
提问于 2022-04-09 00:13:23
回答 1查看 844关注 0票数 1

我正在关注关于如何使用GRUB https://gparted.org/livehd.php在硬盘上安装GRUB Live的官方文章,但是我无法让它工作。我在/dev/sdb3上创建了一个FAT分区,挂载到/mnt上,从zip文件中提取所有文件,并将文件夹live重命名为live-hd,就像他们说的那样。接下来,我添加了引导条目:

代码语言:javascript
复制
menuentry "GParted live" {
  set root=(hd1,3)
  linux /live-hd/vmlinuz boot=live config union=overlay username=user components noswap noeject vga=788 ip= net.ifnames=0 live-media-path=/live-hd bootfrom=/dev/sdb3 toram=filesystem.squashfs
  initrd /live-hd/initrd.img
}

然后更新grub sudo update-grub2。但是,当我引导到GParted时,我会得到一个错误:

代码语言:javascript
复制
Invalid sector size 65535
You need to load kernel first

据我所知,(hd0,4)是指第一个磁盘,第4个分区,所以在我的例子中,这将是我的第二个磁盘,第三个分区,所以(hd1,3) /dev/sdb3。我做错了什么?

这是我的磁盘的布局:

代码语言:javascript
复制
$ parted -l
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system     Name                  Flags
 1      1049kB  135MB  134MB  linux-swap(v1)  linux-swap            swap
 2      135MB   673MB  538MB  fat32           EFI System Partition  boot, esp
 4      673MB   249GB  249GB  ext4            Ubuntu 20.04
 3      249GB   250GB  629MB  fat32           GPARTED               msftdata

更新

我查看了我在/boot/grub/grub.cfg中的其他GRUB条目,下面是我用来引导Ubuntu20.04和Windows的一个条目

代码语言:javascript
复制
# Ubuntu 20.04
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0f745246-0966-49bb-8aff-b832b71a53a0' {
  recordfail
  load_video
  gfxmode $linux_gfx_mode
  insmod gzio
  if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  insmod part_gpt
  insmod ext2
  set root='hd1,gpt4'
  if [ x$feature_platform_search_hint = xy ]; then
   search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt4 --hint-efi=hd1,gpt4 --hint-baremetal=ahci1,gpt4  0f745246-0966-49bb-8aff-b832b71a53a0
  else
   search --no-floppy --fs-uuid --set=root 0f745246-0966-49bb-8aff-b832b71a53a0
  fi
  linux /boot/vmlinuz-5.13.0-39-generic root=UUID=0f745246-0966-49bb-8aff-b832b71a53a0 ro  
  initrd  /boot/initrd.img-5.13.0-39-generic
}

# Windows
menuentry 'Windows Boot Manager (on /dev/sdb2)' --class windows --class os $menuentry_id_option 'osprober-efi-94C2-ECC1' {
  insmod part_gpt
  insmod fat
  set root='hd1,gpt2'
  if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  94C2-ECC1
  else
    search --no-floppy --fs-uuid --set=root 94C2-ECC1
  fi
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

所以我把GParted的条目改为

代码语言:javascript
复制
 menuentry "Gparted live" {
  insmod part_gpt
  insmod ext2
  insmod fat
  set root='hd1,gpt3'
  linux /live-hd/vmlinuz boot=live config union=overlay username=user components noswap noeject vga=788 ip= net.ifnames=0 live-media-path=/live-hd bootfrom=UUID=606E-0DF2 toram=filesystem.squashfs
  initrd /live-hd/initrd.img
}

我更改了条目

代码语言:javascript
复制
set root=(hd1,3)

代码语言:javascript
复制
set root='hd1,gpt3'

但是我得到了一个错误disk hd1,gpt3 not found

为了进行测试,我添加了一个单独的条目来引导我的Ubuntu进入救援模式:

代码语言:javascript
复制
menuentry "Ubuntu Runlevel 1" {
  insmod gzio
  insmod part_gpt
  insmod ext2
  set root='hd1,gpt4'
  linux /boot/vmlinuz-5.13.0-39-generic root=UUID=0f745246-0966-49bb-8aff-b832b71a53a0 ro 1
  initrd /boot/initrd.img-5.13.0-39-generic
}

因此,在这里,set root='hd1,gpt4'和分区UUID与我对Ubuntu的正常引导条目相同,但它不起作用。

EN

回答 1

Unix & Linux用户

发布于 2022-04-09 10:34:25

经过一段时间的调查,我终于找到了解决问题的办法。这是我最后一个GRUB2菜单条目。

代码语言:javascript
复制
menuentry "Gparted live" {
  insmod part_gpt
  insmod ext2
  insmod fat
  set root='hd1,gpt3'
  search --no-floppy --fs-uuid --set=root 606E-0DF2
  linux /live-hd/vmlinuz root=/dev/sdb3 boot=live config union=overlay username=user components noswap noeject vga=788 ip= net.ifnames=0 live-media-path=/live-hd toram=filesystem.squashfs
  initrd /live-hd/initrd.img
}

我对我的原始代码做了一些修改,所以我不知道到底是什么解决了它。我添加了search --no-floppy --fs-uuid --set=root 606E-0DF2行,并将root=/dev/sdb3移到linux的第一个参数

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/698550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档