Создание файловой системы из ничего

Мне нужно создать файловую систему с одним разделом из ничего (/dev/zero). Я попробовал эту последовательность команд:

dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
    n
    p 
    2048
    131072

По сути, мне нужно создать файл изображения размером 64 МБ, заполненный нулями. Затем я использую fdisk для создания нового раздела для новой файловой системы, начиная с сектора 2048 и используя все оставшиеся сектора. Но сейчас у меня проблемы. Если я установлю устройство цикла и отформатирую его, используя mkfs -t vfat, таблица разделов будет перезаписана, а файловая система будет помещена на диск. Мне не нужен весь диск, отформатированный в FAT32, мне просто нужен мой основной раздел.

Кто-нибудь знает, как я могу отформатировать только один раздел необработанного образа диска, а не весь образ? Пожалуйста, помогите.

2
задан 17 August 2013 в 22:28

3 ответа

kpartx

sudo apt-get install kpartx
losetup -fs my.raw
sudo kpartx -a my.img
ls /dev/mapper

Вывод:

/dev/mapper/loop0
/dev/mapper/loop0p1

где loop0p1 - первый раздел, поэтому мы можем сделать:

mkdir -p d
sudo mount /dev/mapper/loop0p1 d

Преимущество этого метода: работает на Ubuntu 14.04 без перезагрузки.

losttup 2.21 -P option

losetup -P -f --show my.img

Создает один /dev/loopXpY на раздел.

Преимущество: исполняемый файл предустановлен во многих дистрибутивах (пакет util-linux).

Недостаток: довольно недавний вариант, отсутствующий в Ubuntu 14.04.

0
ответ дан 17 August 2013 в 22:28

Файлы образов файловой системы обычно не разбиваются на разделы, если они не являются резервными копиями всего диска или если они используются с виртуальными машинами (QEMU и т. Д.). Для ваших целей вы, вероятно, захотите просто создать файловую систему прямо в файле образа. Затем вы можете смонтировать его:

sudo mkdosfs mountedImage.img
sudo mount -o loop mountedImage.img /mnt

Если вы хотите впоследствии записать этот образ на USB-накопитель или тому подобное, вы можете записать его в раздел:

sudo dd if=mountedImage.img of=/dev/sdc1
0
ответ дан 17 August 2013 в 22:28

Одним из решений, которое не требует привилегий суперпользователя, является создание файла с размером раздела, вызов mkfs для этого файла, а затем копирование файла на место.

truncate -s 64512k part1.vfat
/sbin/mkfs.vfat part1.vfat
dd if=part1.vfat of=mountedImage.img bs=1k skip=2048

Кроме того, с правами суперпользователя вы можете настроить петлевое устройство , которое дает вам доступ к изображению как к устройству. Поскольку вы хотите получить доступ только к части изображения, вы должны указать это явно.

sudo losetup -o 2048k --sizelimit 64512k đev/loop0 mountedImage.img
sudo mkfs.vfat /dev/loop0
sudo losetup -d /dev/loop0

Для работы с более удобными инструментами вам необходимы права root и перезагрузка. Модуль цикла может предоставить доступ к разделам, но по умолчанию это отключено. Чтобы включить этот доступ, отредактируйте /etc/default/grub и измените строку GRUB_CMDLINE_LINUX="" на

GRUB_CMDLINE_LINUX="loop.max_part=15"

Если там уже были другие варианты, оставьте их, конечно; они должны быть разделены пробелами, а вся строка опции должна быть в двойных кавычках, например, GRUB_CMDLINE_LINUX="option=value anotheroption loop.max_part=15".

Теперь, после того как вы разбили образ диска, запустите

sudo losetup /dev/loop0 mountedImage.img
sudo mkfs.vfat /dev/loop0p1

Запустите losetup -d /dev/loop0, когда закончите работу с этим образом.

0
ответ дан 17 August 2013 в 22:28

Другие вопросы по тегам:

Похожие вопросы: