Если Ваш grep поддерживает -o
можно сделать это как это:
grep -o '[^:]\+'
Или с awk, устанавливая разделитель записей на :
:
awk -v RS=: 1
Или с GNU сократите:
cut -d: --output-delimiter=$'\n' -f1-
Как отмечено Chris ниже, это оставит запаздывающую новую строку, этого можно избежать, если Ваш awk поддерживает определение RS
как регулярное выражение (протестированный с GNU awk):
awk -v RS='[:\n]' 1
Длинный путь вокруг. Но ради удовольствия:
1.
Создайте временное изображение:
$ truncate -s64MiB tmp.img
2.
Создайте два использования разделов fdisk
:
Скорее подробный, но хорошо.
$ fdisk tmp.img
Первый раздел:
: n <Enter>
: <Enter> (p)
: <Enter> (1)
: <Enter> (2048)
: +40M <Enter>
Второй раздел:
: n <Enter>
: <Enter> (p)
: <Enter> (2)
: <Enter> (83968)
: <Enter> (131071)
Печать, что мы собираемся записать:
: x
: p
Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID
1 00 32 33 0 57 52 5 2048 81920 83
2 00 57 53 5 40 32 8 83968 47104 83
Запись и выход:
:w (Dont! forget ;-) )
У нас есть два раздела 40 и 23 мебибайт:
81920 * 512 / 1024 / 1024 = 40MiB
47104 * 512 / 1024 / 1024 = 23MiB
3.
Создайте две файловых системы:
truncate -s40MiB ext4.img
truncate -s23MiB ext3.img
mke2fs -t ext4 -F -L part_ext4 ext4.img
mke2fs -t ext3 -F -L part_ext3 ext3.img
4.
Сшейте все это вместе:
Извлечение сначала 2048*512
байты из временного изображения:
dd if=tmp.img of=disk.img bs=512 count=2048
Объедините их:
cat ext4.img ext3.img >> disk.img
Отлично.
Я не действительно уверен я inderstand Ваш вопрос правильно. При попытке разделить образ виртуальной машины, у Вас есть несколько опций:
используйте циклы или картопостроитель устройства в линейном режиме для каждого раздела. Вы не должны иметь, они устанавливают параллельно для форматирования;
partx/kpartx для сообщения ядра, какие разделы это должно рассмотреть на картопостроителе цикла/устройства устройствами или даже регулярным файлом:
kpartx -av /path/to/file
или
losetup /dev/loopX /path/to/file
kpartx -av /dev/loopX
Устройства являются устройствами картопостроителя устройства (т.е. связанный с от /dev/mapper
по умолчанию).
использование partprobe
losetup /dev/loopX /path/to/file
partprobe /dev/loopX
который даст ядру команду проверять разделение, следовательно создание /dev/loopXpY
.
загрузитесь живой CD/образ USB (может быть установщик) в VM, и сделайте разделение из. Это имеет очевидное преимущество способности разделить виртуальный диск даже для образов виртуальной машины, сохраненных в специальных форматах (как qcow2 QEMU, например).
mke2fs
как будто это был раздел.
– Rhymoid
08.10.2013, 18:30
partx
, parted
, и partprobe
может активировать их. kpartx
для активации разделов на устройствах картопостроителя устройства (путем создания другого dm устройства), так как они исходно не поддерживают разделы.
– psusi
08.10.2013, 20:49
partprobe
сделать так). Однако kpartx
на самом деле работы для циклических устройств также (и на самом деле для регулярных файлов также).
– peterph
09.10.2013, 01:12
partx
, partprobe
, или parted
собственная обработка.
– psusi
09.10.2013, 07:22
http://blog.lifebloodnetworks.com/?p=934
Кажется, имеет некоторую информацию об этом. Похоже, что можно смонтировать неструктурированный диск как устройство закольцовывания:
Смонтируйте свое изображение неструктурированного диска как устройство закольцовывания: losetup /dev/loop0 [path to image]
Выполненный kpartx и: kpartx -va /dev/loop0
Это добавит Ваши разделы к/dev/mapper/loop0pX, где каждый X является различным разделом
Можно теперь смонтировать каждый раздел: mount /dev/mapper/loop0pX /media/partition
Если Вы хотите удостовериться, что Вы не пишете, что что-либо к Вашему резервному копированию просто монтирует его как только для чтения: mount -o ro /dev/mapper/loop0pX /media/partition
После того как Вы закончены, необходимо будет сделать уборку.
Размонтирование: umount /media/partition
Удалите устройства картопостроителя: kpartx -d /dev/loop0
Удалите устройство закольцовывания: losetup -d /dev/loop0
Эти команды, возможно, все должны быть выполнены как корень. Если loop0 сообщает, что это занято, просто выбирают другое циклическое устройство (/dev/loop1, ect).
править: Я вижу, что Вы хотите сделать это некорневое, таким образом, вышеупомянутое не может быть полезно для Вас.
Вы не должны смешивать с max_part. Использовать parted
создать разделы на циклическом устройстве, или partprobe
активировать их, если они уже существуют. Вы, возможно, должны обновить до версии разделенных в тестировании / нестабильный.