我正在使用现有的嵌入式 Linux 设备,但在使用 fdisk 编辑分区时遇到问题。我的目标是创建一个分区用于测试目的/dev/sda。我正在使用与 BusyBox v1.23.2 捆绑在一起的 fdisk。请参阅下面的我的难题:
# cat /proc/partitions
major minor #blocks name
8 0 56582144 sda
8 1 8 sda1
8 2 32768 sda2
8 3 262144 sda3
8 4 1024 sda4
8 5 512 sda5
8 6 512 sda6
8 7 56285132 sda7
请注意,列出了 7 个分区sda
# fdisk -l /dev/sda
Note: sector size is 4096 (not 512)
Disk /dev/sda: 57.9 GB, 57940115456 bytes
256 heads, 63 sectors/track, 877 cylinders
Units = cylinders of 16128 * 4096 = 66060288 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 266306 4294967292 ee EFI GPT
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(0,0,1) logical=(0,0,2)
Partition 1 has different physical/logical endings:
phys=(1023, 255, 63) logical=(266305, 4, 4)
没有显示有关剩余 6 个分区的信息sda2 - sda7。
让我们看看现在实际安装了什么
# mount | grep '^/dev'
/dev/root on / type ext4 (rw,relatime,data=ordered)
/dev/block/bootdevice/by-name/userdata on /data type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/modem on /firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/block/bootdevice/by-name/dsp on /dsp type ext4 (rw,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/bootdevice/by-name/bluetooth on /bt_firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
特别注意/dev/block/bootdevice/by-name/userdata
安装在/data
这里。我们来看看是什么分区用户数据指:
# ls -alh /dev/block/bootdevice/by-name | grep userdata
lrwxrwxrwx 1 root root 9 Jan 12 20:34 userdata -> /dev/sda7
我们可以在这里看到/dev/sda7
正在使用它,因为它安装在/data
。我可以做些什么,以便 fdisk 正确识别所有分区并允许我编辑它们吗?
答案1
你有一个GUID分区表/dev/sda
、 和上的 (GPT) fdisk
,尤其是早期版本或小型嵌入式版本不适用于 GPT。您看到的是一种“兼容性”输出,它不会向您显示真实的结构,并且您将无法使用fdisk
.
选项:
(1)取出硬盘,连接到其他计算机上,使用gparted
等操作GPT分区表。
(2) 查看嵌入式设备上的二进制文件(非 busybox) ,看看是否有可以修改 GPT 的东西,例如gdisk
// cgdisk
。sgdisk
(3) 交叉编译gdisk
//或类似的程序,甚至可能是,因此它可以在您的嵌入式设备上运行cgdisk
。sgdisk
gparted
(4)在硬盘上放入老式的MBR分区表而不是GPT,并尽量保留你想保留的分区(如果你想创建新分区,至少要删除一个旧分区,反正)。如果您不小心,这可能会破坏数据,因此请先进行备份。