У меня есть локальный файл на моем диске, который содержит таблицу разделов 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.
Почему gparted не может редактировать мои разделы внутри файла?
Ладно, на помощь приходят kpartx и символические ссылки!
Использовать KPartX для создания виртуальных блочных устройств для каждого раздела:
klm@lato:~/images/disk$ sudo kpartx -a arch-linux2
klm@lato:~/images/disk$ ls /dev/mapper/
control cryptswap1 loop0p1 loop0p2 loop0p3 loop0p4
Теперь вы можете указать свой gparted на отдельные разделы:
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
Теперь я запускаю gparted нормально и без предупреждений и могу изменять размер!
klm@lato:~/images/disk$ sudo gparted arch-linux2