我的磁盘上有一个本地文件,其中包含一个msdos分区表和一些linux分区。 我把它用作qemu的虚拟原始磁盘。
klm@lato:~/images/disk$ parted arch-linux2 p WARNING: You are not superuser. Watch out for permissions. Model: (file) Disk /home/klm/images/disk/arch-linux2: 4339MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32,3kB 107MB 107MB primary ext2 boot 2 107MB 378MB 271MB primary linux-swap(v1) 3 378MB 4100MB 3722MB primary ext4 4 4100MB 4331MB 231MB primary ext4
我想在这个文件上调整分区大小,GParted通常很容易使用。 但是,当我运行
$ gparted arch-linux2
我的大部分分区给我一个警告:
e2label: No such file or directory while trying to open /home/klm/images/disk/arch-linux2. Couldn't find valid filesystem superblock.
为什么不能在文件里面编辑我的分区?
好吧,kpartx和象征性的链接来拯救!
使用KPartX为每个分区创build虚拟块设备:
klm@lato:~/images/disk$ sudo kpartx -a arch-linux2 klm@lato:~/images/disk$ ls /dev/mapper/ control cryptswap1 loop0p1 loop0p2 loop0p3 loop0p4
现在你可以把你的分区指向你的个人分区:
klm@lato:~/images/disk$ sudo gparted /dev/mapper/loop0p1
但是这并不会有什么帮助,因为gparted需要整个分区表来调整分区大小。 符号链接解决了这个问题:
klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p1 arch-linux2p1 klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p2 arch-linux2p2 klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p3 arch-linux2p3 klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p4 arch-linux2p4
这是gparted想要的结构:
klm@lato:~/images/disk$ ls -l total 6275112 -rw-r--r-- 1 klm klm 4339007488 2011-07-22 15:47 arch-linux2 lrwxrwxrwx 1 klm klm 19 2011-08-04 15:23 arch-linux2p1 -> /dev/mapper/loop0p1 lrwxrwxrwx 1 klm klm 19 2011-08-04 15:23 arch-linux2p2 -> /dev/mapper/loop0p2 lrwxrwxrwx 1 klm klm 19 2011-08-04 15:23 arch-linux2p3 -> /dev/mapper/loop0p3 lrwxrwxrwx 1 klm klm 19 2011-08-04 15:23 arch-linux2p4 -> /dev/mapper/loop0p4
现在,我正常运行,没有任何警告,我可以调整的东西!
klm@lato:~/images/disk$ sudo gparted arch-linux2