我不断收到此错误:
警告!!检测到不受支持的 GPT(GUID 分区表)。使用 GNU Parted
我想回到正常的 MBR。我在这里找到了一些建议并做了:
parted /dev/sda
mklabel msdos
quit
Run Code Online (Sandbox Code Playgroud)
但是,当我mklabel选择该选项时,它会发出警告,提示我将丢失/dev/sda. 有没有办法在不格式化磁盘的情况下恢复正常的 MBR?
我已经在家里运行小型媒体服务器 10 多年了,并考虑更换它(在它坏掉之前)。
我打算将一个新驱动器连接到我的旧系统、分区和格式(现在 ext4 似乎最稳定)并将媒体复制到新磁盘,以便我可以将其安装在新计算机上(我将留下一些驱动器上的可用分区)。
2002年我fdisk做分区的时候一直在看我的设置笔记,现在经常看到gparted或者parted被使用。
有没有必要使用(并安装和学习)parted?我当前的旧系统是 32 位,我在某处读到 64 位需要 parted。我没有在系统上分开,但我不想制作一个不适用于新设置的磁盘。
长话短说,我需要在启动(嵌入式系统)时自动执行这一切。
我们的工程师会将图像闪存到生产设备。这些图像将包含一个小的分区表。在启动时,我需要自动扩展最后一个分区 (#3) 以使用磁盘上的所有可用空间。
这是我查看磁盘上的可用空间时得到的结果。
> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 25.3MB 24.2MB fat16 primary legacy_boot
25.3MB 26.2MB 922kB Free Space
2 26.2MB 475MB 449MB ext4 primary
3 475MB 1549MB 1074MB ext4 primary
1549MB 32.0GB 30.5GB Free Space
Run Code Online (Sandbox Code Playgroud)
我需要将分区 3 扩展 N (30.5GB) 字节数
如何在没有提示的情况下自动执行此步骤?这需要在第三个分区之后使用动态大小的可用空间。
我在脚本中使用以下命令对 eMMC 进行分区,
parted /dev/mmcblk0 --script mklabel gpt
parted /dev/mmcblk0 --script mkpart primary ext4 32MB 132MB
parted /dev/mmcblk0 --script mkpart primary ext4 233MB 433MB
parted /dev/mmcblk0 --script mkpart primary ext4 433MB 533MB
parted /dev/mmcblk0 --script mkpart primary ext4 533MB 593MB
parted /dev/mmcblk0 --script mkpart primary ext4 593MB 793MB
parted /dev/mmcblk0 --script mkpart primary ext4 793MB 3800MB
parted /dev/mmcblk0 --script align-check min 1
Run Code Online (Sandbox Code Playgroud)
创建第一个分区后,我收到以下警告
警告:生成的分区没有正确对齐以获得最佳性能。
我需要担心吗?我试过了,parted /dev/mmcblk0 --script align-check min 1但不确定那是解决方案。任何指示?
我正在浏览此链接,同时还有其他建议吗?
编辑:只是froschutz回复的快速参考,
MiB = …Run Code Online (Sandbox Code Playgroud) 下面是我在 gnu parted 中显示的硬盘:
(parted) print free
Model: ATA HGST HTS541075A9 (scsi)
Disk /dev/sda: 750GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name
17.4kB 1049kB 1031kB Free Space
1 1049kB 538MB 537MB fat32 EFI System Partition boot
2 538MB 468GB 467GB ext4
468GB 520GB 52.4GB Free Space
6 520GB 527GB 6353MB linux-swap(v1)
4 527GB 527GB 524MB ext4
5 527GB 744GB 217GB lvm
3 744GB 750GB 6352MB
750GB 750GB 892kB Free Space
(parted)
Run Code Online (Sandbox Code Playgroud)
你可以看到我有 52.4GB …
我一直在寻找一种方法来刷新 scsi 总线(或任何其他总线,就此而言),这将允许我的内核(CentOS 5.5 上的 2.6.18-194-el5)了解驱动器上的分区,我不能没有办法。partprobe 立即做到了。如何?
由于这很重要,这就是我正在做的事情:
我想在特定于分区的事情上得到一些练习,比如调整大小、备份 MBR 和恢复它,等等。我在 /dev/sdb 上创建了一个 20GB 的分区,备份了 MBR:
dd if=/dev/sdb of=sdb.mbr bs=512 count=1
然后我进入fdisk,删除分区,写入,然后退出。
ls /dev/sdb*
显示没有分区,并且
fdisk -l /dev/sdb'
匹配,所以我认为我很好。
然后我颠倒了dd:
dd if=sdb.mbr of=/dev/sdb bs=512 count=1
当然,当时我什么也没做,所以
ls /dev/sdb*
没有列出任何分区,但是
fdisk -l
显示分区,大概是因为它读取磁盘上的前 512 个字节并且不依赖于内核。我知道我必须刷新总线,所以我进入/sys/class/scsi_host/host1,然后做了
回声“- - -” > 扫描
和做
ls /dev/sdb
没有显示任何新内容,所以我去了 /sys/bus/scsi/devices 并且对于列出的每个设备,我都做了
回声 1 > 重新扫描
那没有用。
然后我对该问题进行了更多研究,并遇到了parted 附带的'partprobe'。我运行了它,它立即生效。
如果我在这里没有得到可能的答案,我可能会去获取源代码并查找它,但我认为这里有超出我的巫师,所以我想我会吸引你们所有人。
如何创建一个精确大小而不是特定距离的分区?
我试过了:
parted -a optimal /dev/sdd mkpart primary 0% 0%+1GB
# and...
parted -a optimal /dev/sdd mkpart primary 0% +1GB
Run Code Online (Sandbox Code Playgroud)
无济于事。
我如何让它接受大小而不是结束距离?
我正在尝试创建一个 bash 脚本,该脚本将在具有现有分区的磁盘上创建一个带有文件系统的新分区。
看起来用parted以编程方式创建分区很容易,但是它需要您知道从哪里开始和停止新分区,这就是我遇到麻烦的地方。
我不想依赖具有特定位置/大小的分区的磁盘。也就是说,我想在最后一个现有分区之后立即开始创建一个新分区。然后我希望能够创建固定大小的分区,或者填充剩余空间。
在 Bash 中,是否有可靠的方法来确定
a) 最后一个分区的结束位置,以及
b) 最后一个分区后剩余的未分区空间?
我正在将计算机迁移到另一个具有更多空间的启动驱动器。我做了以下事情:
\n\nsudo partclone.vfat -c -R -o partclone.sda1.vfat.img -s /dev/sdg1\nRun Code Online (Sandbox Code Playgroud)\n\n然后我在parted的新设备上创建了分区,然后恢复:
\n\nsudo partclone.vfat -r -s partclone.sda1.vfat.img -o /dev/sdg1\nRun Code Online (Sandbox Code Playgroud)\n\n新分区比我克隆的分区大。
\n\n$ sudo parted /dev/sdg print 1\n\nMinor: 1\nFlags: \nFile System: fat32\nSize: 1074MB (0.11%)\nMinimum size: 210MB (0.02%)\nMaximum size: 1000GB (100%)\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当我使用 查看文件系统时df,它向我显示了其他内容:
$\xe2\x80\x8asudo df -h extefi/\nFilesystem Size Used Avail Use% Mounted on\n/dev/sdg1 197M 42M 156M 22% /mnt/extefi\nRun Code Online (Sandbox Code Playgroud)\n\n我可以运行一个命令来正确调整文件系统的大小以填充其分区吗?
\n