了解 syslinux 和分区

了解 syslinux 和分区

我正在尝试学习,特别是了解分区和引导加载程序是如何工作的。问题是我脑子里把这一切都扭曲了。到最后我什么都看不懂了。

我知道如何使用fdisk, parted,来对硬盘驱动器进行分区gdisk。我尝试使用 syslinux 链式加载 iso 文件(例如 ubuntu.iso、arch.iso)。

为了说明我的困惑,这是我所做的:创建一个 linux 分区:

$ gdisk /dev/sdb
Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-7821278, default = 36) or {+-}size{KMGTP}: 
Last sector (36-7821278, default = 7821278) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdb: 7821312 sectors, 3.7 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F7F2BE49-B8D8-4910-8E69-381DEBD954DC
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7821278
Partitions will be aligned on 4-sector boundaries
Total free space is 2 sectors (1024 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              36         7821278   3.7 GiB     8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

然后我将此分区格式化为 ext2 :

$ mkfs.ext2 /dev/sdb1

现在我想用syslinux安装MBR(取自我找到的极少数教程)

$ syslinux -m /dev/sdb1
syslinux: invalid media signature (not a FAT filesystem?)

所以它需要是FAT分区。不过我读到 syslinux 支持 Fat32、ext2、ext3、ext4 文件(https://wiki.archlinux.org/index.php/syslinux#安装

1)这里有什么问题,因为 syslinux 应该支持 ext2 分区?

所以我将分区格式化为Fat32分区:

$ mkfs.vfat -F 32 /dev/sdb1

现在安装 syslinux MBR 可以工作了:

$ syslinux -m /dev/sdb1
$ syslinux -i /dev/sdb1

2)我必须安装MBR吗?syslinux不兼容GPT吗?我读到的文档比GPT具有更多优点MBR,例如允许创建更多的主分区。难道是我理解错了?

然后我发现我需要将分区标记为可引导(http://www.linuxquestions.org/questions/linux-general-1/booting-iso-images-from-a-usb-disk-917161/)。我可以这样做吗gdisk?在我看来这是不可能的,因为手册没有讨论启动标记。另一方面,fdisk允许我这样做。然而这里还有另一个问题:

$ fdisk /dev/sdb

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

3) gdisk 会自动创建 GPT 吗?

$ gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

4)这个MBR从哪里来? MBR和GPT怎么能这样共存呢?

正如您所看到的,当我尝试进行更深入的分区操作时,我意识到一切都混淆了。如果您能回答我的问题,特别是向我提供额外的文件,我将不胜感激:https://wiki.archlinux.orghttp://www.syslinux.org/wiki实际上让我的理解比以往任何时候都更糟糕。非常感谢。

答案1

1)这里有什么问题,因为 syslinux 应该支持 ext2 分区?

是的,Syslinux 通过 Extlinux 支持 ext2 fs。如果您使用的是基于 UEFI/EFI 的系统,那么您需要一个 fat32 分区。仅对于 GPT,您不需要有 fat32 分区,只需使用传统分区即可。即分机?

2)我必须安装MBR吗?syslinux不兼容GPT吗?我在文档中读到 GPT 比 MBR 有更多优势,例如允许创建更多的主分区。难道是我理解错了?

你想用什么就看你了,分区表msdos和gpt都支持。

如果是 GPT,您可以使用 gdisk 设置旧版 BIOS 引导标志。启动分区上必须有一个旧版 BIOS 启动标志。进入gdisk菜单后,使用“x”进入专家模式,然后使用“a”设置属性。

3) gdisk 会自动创建 GPT 吗?

是的,访问http://linux.die.net/man/8/gdisk

如需了解操作方法,请访问http://wiki.gentoo.org/wiki/Syslinux

答案2

我认为这里的问题/混乱在于术语,首先说“安装 MBR”,然后说“为什么 MBR 和 GPT 一起使用”。 MBR 是磁盘工作所必需的,GPT 是存在(创建)于 MBR 之外的分区方案。分区软件(例如 gparted)向您呈现 MBR 和 GPT 作为两个互斥的东西。 GPT 或缺少 GPT 会更准确。还有其他系统使用 GPT 以外的其他方案,但仍然在磁盘的 MBR 中定义。因此,为了更好地理解这两种分区方案,第一个扇区 0-1 始终是 MBR,GPT 定义在其之后开始。我们所说的MBR分区和扩展分区是没有GPT的分区(不需要区分扩展分区,它允许分区的最小大小和磁盘大小容纳尽可能多的分区)。

你没有安装MBR,它是默认存在的,而且它最好在那里,否则你的磁盘就是垃圾。您可以将一些东西安装到 MBR 中,例如 grub 的 core.img 或 syslinux 的等效项,这些软件可以帮助您进入下一步。一个很小的操作系统,可以帮助您“重新启动”到特定的其他系统。 MBR 中存在 GPT 定义,以便 GPT 方案发挥作用。

如果 /boot/grub 或 /boot/syslinux 被删除或尚未创建,这些 *.img 操作系统会提示您手动执行操作。如果你在安装上花费了足够长的时间,有一天你就会看到它。 GRUB> 此时尝试帮助。它帮助我理解的方式是这个引导加载程序操作系统生成该菜单或提示符,然后您指定将 grub/syslinux 重新启动到特定的目标操作系统。如果不是为了重新启动,那么引导加载程序将是进程 1 PID1。

我所说的一些内容可能不是 100% 准确,但我认为对于 96.4% 的 Linux 用户来说,这有助于继续他们想做的事情。引导加载程序开发人员和从事备份、复制、压缩磁盘映像等软件工作的人员将需要更准确的细节。如果你搜索,你会发现长达一个小时的讲座,内容涉及磁盘第一个小单元的问题和动态,以及其他一切存在所必须存在的东西。我们的系统被这条非常敏感的信息所困扰。它就像你通往迷宫的地图,否则你只是牛头怪的零食。

相关内容