Intereting Posts
Как настроить интервал соединения в соединении BLE? Как эффективно получить американский AltGr-Intl макет на NetBSD? Эквивалент Java String.getBytes () в оболочке Unix (Cygwin) поиск шаблонов пар с использованием awk Виртуализация: следуйте символическим ссылкам в VirtFS (9p) share Удаление поля из текста с разделителями-запятыми с акцентированными символами Как получить снимок нескольких байтов в разных точках устройства? Как установить фонарь (php7) на Manjaro? Случайно удаленный файл / etc / redhat-release Как восстановить полный файл конфигурации из образа ядра из buildroot Какие команды или операции можно использовать для установки процессора под интенсивную нагрузку? Chrome не открывает веб-сайты Https Использование регулярного выражения для проверки того, работает ли процесс UNIX Как заменить литерал \ n символом новой строки? (на OS X) Копирование и вставка с помощью URxvt

Не удается смонтировать раздел, сделанный на устройстве цикла (который указывает на файл)

Цель

Я пытаюсь сделать изображение жесткого диска с нуля с помощью файла. Это включает в себя MBR, таблицу разделов, количество разделов и т. Д. Я не могу на всю жизнь получить Linux для монтирования разделов, которые я делаю.

edit: См. конец вопроса для обновления – похоже, связано с vboxsf

Процедура

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

Сгенерировать пустой файл с помощью dd (или усечь для скорости)

dd if=/dev/zero of=test.img bs=1M count=150 

Сделать таблицу разделов

 parted -s test.img mklabel gpt Warning: The resulting partition is not properly aligned for best performance. 

Сделать разделы (разделы)

 parted -s test.img -- mkpart logical 0 5M parted -s test.img set 1 bios_grub on parted -s test.img -- mkpart logical 5M 50M etc. 

Монтировать как устройство петли (модуль петли, нагруженный max_part = 31)

 losetup /dev/loop0 test.img 

lsblk для проверки

 loop0 7:0 0 150M 0 loop ├─loop0p1 7:1 0 4.8M 0 loop ├─loop0p2 7:2 0 43M 0 loop └─loop0p3 7:3 0 4M 0 loop 

до сих пор так хорошо – я думаю. Форматирование разделов

 mkfs.ext4 /dev/loop0p1 mkfs.ext4 /dev/loop0p2 mkfs.ext4 /dev/loop0p3 

Теперь давайте смонтируем наши новые разделы

 [root@localhost vmdk test]# mount /dev/loop0p2 boot mount: /dev/loop0p2 is write-protected, mounting read-only mount: unknown filesystem type '(null)' 

Здесь он заканчивается – каждый раз. Я попытался установить изображение в цикл сразу после его создания и вызывать его на стороне / dev / loop0. Это дает тот же результат. Я пробовал losetup со смещениями вручную. Я пробовал kpartx – я не могу понять, как выйти за пределы этого момента.

Я должен отметить, что я также пробовал эту процедуру с помощью реального жесткого диска (ну, я использую виртуальную машину, но вы знаете, что я имею в виду). В этом случае я вызывал те же самые команды, но на / dev / sdb. В конце концов я смог установить / dev / sdb2 без проблем.

Отладочная информация

Я не знаю, насколько это актуально, но здесь

 [root@localhost vmdk test]# uname -a Linux localhost.localdomain 3.10.0-327.36.2.el7.x86_64 #1 SMP Mon Oct 10 23:08:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@localhost vmdk test]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@localhost vmdk test]# file test.img test.img: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 307199 sectors, extended partition table (last)\011, code offset 0x0 [root@localhost vmdk test]# file -s /dev/loop0 /dev/loop0: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 307199 sectors, extended partition table (last)\011, code offset 0x0 [root@localhost vmdk test]# file -s /dev/loop0p2 /dev/loop0p2: data [root@localhost vmdk test]# fdisk -lu /dev/loop0 WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Disk /dev/loop0: 157 MB, 157286400 bytes, 307200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt # Start End Size Type Name 1 34 9765 4.8M BIOS boot parti logical 2 10240 98303 43M Microsoft basic logical 3 98304 106495 4M Microsoft basic logical 

Я не понимаю, почему устройство loop не ведет себя точно так же, как это делает жесткий диск, когда я следую той же процедуре. Если у кого-то есть какие-то идеи, они будут высоко оценены!

Обновить

По совпадению я заметил, что перезагрузка исправляет мою проблему, поэтому мой ум сразу же пошел на синхронизацию. После некоторого тестирования, хотя казалось бы, что моя проблема возникает только тогда, когда файл test.img помещается на моем монтировании vboxsf (общая папка между хостом и виртуальной машиной). Я действительно не думал об этом, но, может быть, он пишет файлы кэширования странным образом? Сейчас я оставлю вопрос открытым, может быть, кто-то может это уточнить.

Если файл изображения размещен в странной файловой системе, например, vboxsf, это может быть проблемой.