Можно ли заставить SYSLINUX загружать root-файлы из файла образа на NTFS-разделе?

3692
Chaos_99

SYSLINUX позволяет мне загружаться с USB-карты FAT16, загружая образ ядра и исходный образ ram-диска (initrd) оттуда.

Чтобы получить больше места и более быстрый доступ, я могу смонтировать раздел NTFS с жесткого диска после загрузки, а затем использовать устройство loopback, чтобы смонтировать образ файловой системы оттуда, чтобы заменить / home или даже выполнить chroot в него, но это далеко не так. процесс загрузки, делающий обновление системы невозможным.

Есть ли способ заставить сам SYSLINUX монтировать fs-образ из NTFS-раздела как root fs?

Или я могу изменить образ initrd для монтирования нового root fs на более раннем этапе процесса загрузки? Я знаю, как смонтировать и изменить этот образ, но я потерял в сценариях и не знаю, когда и как они выполняются.

2

1 ответ на вопрос

2
Chaos_99

Да, это возможно И это даже работает со встроенными функциями. Просто отредактируйте ваш, syslinux.cfgчтобы включить следующее:

LABEL linux LINUX /boot/vmlinuz APPEND root=/dev/disk/by-label/data rootfstype=ntfs loop=images/linux_root.img loopfstype=ext4 rw INITRD /boot/initrd.img  

Очевидно, вам нужно скопировать образ ядра ( vmlinuz) и исходный образ RAM-диска ( initrd.img) в раздел FAT, который вы хотите загрузить с помощью SYSLINUX. (Путь относительно корня разделов.)

root=Параметр определяет устройство и разделить образ системы корневого файла лежит. Конечно, вы также можете использовать /dev/sda1обозначение или /dev/disk/by-UUID/SOMECRYPTYCNUMBERверсию.

rootfstypeОпределяет файловую систему раздела файловой системы изображения лежит на. NTFS и FAT поддерживаются "из коробки". Для более экзотических форматов вам нужно отредактировать, initrd.imgчтобы включить и загрузить соответствующие модули ядра.

loop=дает путь к образу корневой файловой системы относительно базы раздела, на котором она лежит. loopfstype=указывает его внутренний тип. Очевидно, он будет установлен /после загрузки. Раздел, с которого был загружен образ, будет /hostавтоматически смонтирован, если эта папка существует. (Вы не сможете смонтировать его где-либо еще, если он НЕ смонтирован там автоматически. Но вы можете переместить его в другую точку монтирования, mount -mесли она есть.)

Не забывайте копировать и перезаписывать ядро ​​и initrd.imgраздел FAT каждый раз, когда они обновляются при обновлении системы, или при загрузке могут происходить странные вещи.

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

Ожидайте ок. 10% загрузки ЦП для записи в петлевое устройство, смонтированное через оболочку NTFS.

это зависит от / init скрипт в initrd eri 10 лет назад 0
работал со скриптами, поставляемыми с дистрибутивом Mint 14 и 15 Chaos_99 10 лет назад 0
да, он будет работать на каждом дистрибутиве на основе Ubuntu. eri 10 лет назад 0
Отличная Q & A. Обязательно попробую. Такая корневая файловая система на основе изображений по-прежнему доступна для записи? xpt 10 лет назад 0
Да, корневая файловая система доступна для записи. Конечно, только в пределах своего фиксированного размера изображения. Chaos_99 10 лет назад 0