我正在尝试使用文件从头开始制作硬盘映像。这包括 MBR、分区表、分区数量等。但我一生都无法让 Linux 挂载我创建的分区。
\n\n编辑:请参阅问题末尾的更新 - 似乎与 vboxsf 有关
\n\n到目前为止,我已经尝试了许多不同的方法,但那些最有效的方法最终都到达了同一个地方。我在下面制作了一个简化版本,应该足以解释我的问题
\n\n使用 dd 生成空文件(或截断速度)
\n\ndd if=/dev/zero of=test.img bs=1M count=150\nRun Code Online (Sandbox Code Playgroud)\n\n制作分区表
\n\nparted -s test.img mklabel gpt\nWarning: The resulting partition is not properly aligned for best performance.\nRun Code Online (Sandbox Code Playgroud)\n\n制作分区
\n\nparted -s test.img -- mkpart logical 0 5M\nparted -s test.img set 1 bios_grub on\nparted -s test.img -- mkpart logical 5M 50M\netc.\nRun Code Online (Sandbox Code Playgroud)\n\n安装为循环设备(加载 max_part=31 的循环模块)
\n\nlosetup /dev/loop0 test.img\nRun Code Online (Sandbox Code Playgroud)\n\nlsblk 来检查
\n\n …filesystems partition loop-device disk-image partition-table
在 Linux 上,该命令lsblk -o partlabel将显示partlabel块设备。
我曾经gdisk改变过一个partlabel.
更改后,lsblk仍报告 的旧值partlabel。
(旁白:路径/dev/disk/by-partlabel/*也仍在使用旧partlabel值。)
有没有办法刷新缓存以便lsblk报告 的新值partlabel?
我不确定缓存到底在哪里。它可能是 udev、sysfs 或其他地方。
相比之下,blkid正确报告新的partlabel. 但是,我希望我可以避免切换到blkid(出于各种原因)。
(旁白:重新启动可能会更新这些partlabel值。但如果可能的话,我宁愿避免重新启动。)
我正在 ThinkPad X220 上安装 NixOs。虽然我对 shell 非常熟悉,但这是我第一次设置自己的系统,并且在尝试使用fdisk.
笔记本电脑目前安装了 Windows,我打算用 NixOS 完全替换它。我跑去fdisk查看当前的分区并用新的分区方案替换它们。
删除原始分区后,我创建了一个小的(500MB)启动分区,并fdisk报告:
Partition #1 contains a ntfs signature.
Do you want to remove the signature? [Y]es/[N]o:
Run Code Online (Sandbox Code Playgroud)
我不确定这是什么意思,谷歌搜索“ntfs 签名”没有发现任何有启发性的东西,所以我中止了整个事情(现在)。
任何人都可以解释该警告的重要性吗?删除 ntfs 签名会在未来产生不利影响吗?
我也想知道我是否应该尝试将驱动器从 MBR 转换为 GPT,部分原因是很多人似乎建议使用它gdisk来管理分区。我不确定这个硬件是否支持 GPT,以及它是否通过 BIOS 或 UEFI 启动。
作为参考,我的fdisk会话的更完整日志:
[root@nixos:~]# fdisk /dev/sda
Welcome to fdisk ...
Command (m for help): p
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes …Run Code Online (Sandbox Code Playgroud) 我正在使用parted命令创建一个分区,并使用mkpart选项创建一个新的主分区。但是在执行此操作时我收到了一条不寻常的错误消息。这是我的输出:
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 729GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 300GB 300GB primary ext4 boot
(parted) mkpart
Partition type? primary/extended? primary
File system type? ext4
Start? 1050
End? 30000
Warning: You requested a partition from 1050MB to 30.0GB (sector 2050781..58593750). The closest location we can manage is 300GB to 300GB (sector 585936896..585936896).
Is this still …Run Code Online (Sandbox Code Playgroud) 如下图所示,我在两个 32GB 设备上创建了分区:一个 SD 卡和一个闪存 U 盘。
我打算在每种情况下使用整个分区创建文件系统,但不知何故我失败了:
在sdb 上,/dev/sdb1是29.8GB,而文件系统只有1023MB。
SD 卡mmcblk0p2为30GB,但 /dev/mmcblk0p2 仅为1.9GB。
我该如何纠正?
我的 VirtualBox 文件系统如下所示:
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 29799396 5467616 22795012 20% /
devtmpfs 1929980 0 1929980 0% /dev
tmpfs 1940308 12 1940296 1% /dev/shm
tmpfs 1940308 8712 1931596 1% /run
tmpfs 1940308 0 1940308 0% /sys/fs/cgroup
/dev/sdb 31441920 1124928 30316992 4% /srv/node/d1
/dev/sdc 31441920 49612 31392308 1% /srv/node/d2
/dev/sdd 31441920 34252 31407668 1% /srv/node/d3
/dev/sda1 999320 253564 676944 28% /boot
tmpfs 388064 0 388064 0% /run/user/0
Run Code Online (Sandbox Code Playgroud)
磁盘/dev/sdb,/dev/sdc,/dev/sdd是VDI数据磁盘。我从它们中删除了一些数据(不是全部),然后想用它zerofree …
是否可以卸载分区表,以便我在 /dev 中只看到 sda 而不是 sda1 和 sda2?
背景:
我知道没有安装分区表。但我没有找到更好的名字。
我经常使用dd来覆盖硬盘或 USB 笔。但他们经常有一些分区。覆盖后,我仍然可以使用lsblk看到旧的(不再存在的)分区表。
我知道可以使用partprobe重新读取分区表。
但是我想知道是否可以在覆盖usb pen之前卸载分区表。因为我不希望程序在用dd覆盖时访问损坏的分区。
在 MBR 模型下,我们可以创建四个主分区,其中一个可以是进一步细分为逻辑分区的扩展分区。
考虑一下来自维基百科的 GPT 示意图:
分区条目范围从 LBA 1 到 LBA 34,大概我们用完了那个空间,我知道这是相当数量的分区,如果磁盘使用 GPT 分区,是否可以创建扩展分区?如果可能,我们可以为每个 GPT 分区表创建多少个扩展分区?
我不确定这是否是在 LBA 1 到 LBA 34 范围内拥有分区条目的标准,也许我们可以扩展分区条目?
实际上这是相当数量的分区,我无意这样做。
我有一个 gpt 分区的驱动器,最后有未分区的空间,我使用 dd 将它克隆到另一个较小的驱动器。不幸的是,Linux 不会看到克隆驱动器上的分区。
我的理解是 GPT 有两个分区表副本,在 MBR 表之后开始的主副本和末尾的辅助副本。因此应该可以修复克隆驱动器上的分区,如果可以使用任何工具来执行此操作?
我正在尝试将 USB 记忆棒分区到 NTFS。
之前,我错误地使用 dd 刷新了 windows iso
dd if=./AME_2004_\(2020-09-16\).iso of=/dev/sdc status=progress
Run Code Online (Sandbox Code Playgroud)
从那以后我一直在格式化驱动器时遇到问题。
尝试将驱动器分区为 NTFS 时,Kde 分区管理器、cfdisk 和 fdisk 都会产生相同的结果
/dev/sdc read only file system
Run Code Online (Sandbox Code Playgroud)
USB 上没有任何物理开关,错误似乎不是由权限问题引起的。我什至尝试通过使用修改其权限
sudo chown root:root -R /dev/sdc
sudo chmod 666 /dev/sdc
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在。其他 USB 工作正常。我试过将一个(较小的)工作的 USB 闪存到不工作的 USB 上
sudo dd if=/dev/sdd of=/dev/sdc status=progress
Run Code Online (Sandbox Code Playgroud)
现在问题仍然存在,我什至无法使用非工作 USB 的每一 GB
sdc 8:32 1 7.5G 0 disk
??sdc1 8:33 1 3.7G 0 part
Run Code Online (Sandbox Code Playgroud)
我客观上不知道我在做什么和做什么,所以如果你知道任何事情,请马上说出来。
如果我正在擦除/dev/sda硬盘驱动器,是否需要先对其重新分区(例如,使用 GParted),还是也将shred /dev/sda擦除分区表?