标签: parted

如何强制分区值超出范围

我有一个 ubuntu 桌面系统(VM 来宾),它的分区是由安装媒体创建的。我想扩展磁盘,所以我关闭了来宾,并增加了主机中来宾的磁盘大小。现在我需要扩展来宾中的分区 - 这就是问题所在:

如果我打印原始表格,这就是我得到的:

$ sudo fdisk -l /dev/sda

Disk /dev/sda: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders, total 73400320 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758    41940991    20719617    5  Extended
/dev/sda5          501760    41940991    20719616   8e  Linux LVM …
Run Code Online (Sandbox Code Playgroud)

partitioning fdisk partition-recovery parted

11
推荐指数
1
解决办法
2万
查看次数

为什么 GNU Parted 将数据写入 MBR 的前 440 字节?

我的理解是MBR是512字节。前440 个字节(根据实现的不同,给出或取几个字节包含引导加载程序/引导程序代码区域。其余字节包含有关分区表的信息。

如果我将磁盘的 MBR 清零...

# Zero out the MBR
dd if=/dev/zero of=/dev/sdX bs=1 count=512
Run Code Online (Sandbox Code Playgroud)

然后,使用fdisk将分区表写入/dev/sdX...

# Create a 2GiB partition starting at 2048 (default).
fdisk /dev/sdX

...
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier ...
...

(fdisk) n
(fdisk) p
(fdisk) 1
(fdisk) 2048
(fdisk) +2G
(fdisk) w
Run Code Online (Sandbox Code Playgroud)

然后读回前 440 个字节......

dd if=/dev/sdX bs=1 count=440
Run Code Online (Sandbox Code Playgroud)

第一个440 …

mbr parted

7
推荐指数
1
解决办法
524
查看次数

如何缩小由 dd 制作的 img 文件的分区?

我已.img使用dd以下命令将 USB 驱动器复制到文件中:

dd if=/dev/sdc of=myimage.img
Run Code Online (Sandbox Code Playgroud)

我想减小图像中分区的大小。我尝试了几种方法,但最终总是得到一个环回安装的映像,其分区仍然是 USB 的完整大小。

  • myimage.img安装回环后如何修改为具有较小的分区?

  • 在这样做之前,我是否需要将零复制到分区的空白部分?

  • 我是否需要进行碎片整理,以便在减小图像大小时删除空字节?(从我读到的内容来看,Linux 扩展到整个分区,所以我不期望图像末尾的所有数据都是零字节。即使写入全零也只会消耗它们所在的空字节。)

注意:我不是想节省磁盘空间,所以压缩对我没有帮助。

背景

我在 USB 驱动器上安装了 Linux,使用ext4. 我打算为多个设备复制安装。我已经成功做到了,但想在同一个 USB 驱动器上创建一个包含系统的只读分区和一个允许持久存储的小分区。我没有破坏我的 USB,而是尝试修改 USB 的副本。我希望我们不要被这个背景分心。

简而言之,我做了以下工作:

# Create mount point in current directory
sudo mkdir mnt
# Loopback mount the image
fdisk -l myimage.img
sudo mount -o offset=<partion_block_start * block_size> myimage.img mnt
# Copy all zeros to remaining space of the image
cd mnt
sudo dd if=/dev/zero of=filler conv=fsync bs=1M
rm filler
cd …
Run Code Online (Sandbox Code Playgroud)

linux gparted partitioning dd parted

1
推荐指数
1
解决办法
7502
查看次数

标签 统计

parted ×3

partitioning ×2

dd ×1

fdisk ×1

gparted ×1

linux ×1

mbr ×1

partition-recovery ×1