Я хочу настроить циклическое устройство во время начальной загрузки. Интересно, что лучший способ состоит в том, чтобы сделать это.
Я искал его на Google. Некоторые говорят, что добавление правила udev, некоторые говорят что вставление сценарии /etc/init.d
, некоторые даже изменяют initramfs.
Таким образом, каков лучший или правильный способ сделать это? Вы могли предоставить некоторую подробную информацию (о том, как сделать)?
Спасибо.
Существует по крайней мере три "соответствующих" способа сделать вещи запуска в Ubuntu (предположение, что Вы просто не хотите монтировать его), перечисленный здесь в порядке убывания предпочтения:
/etc/init/*.conf
(Выскочка)/etc/init.d/*
(sysvinit)/etc/rc.local
(runlevel сценарий изменения)Существует также к возможности использования udev правила, но это будет замысловатым. Я рекомендую против него. sysvinit сценарий является излишеством для такой мелочи, таким образом, я сфокусируюсь на других двух опциях. runlevel сценарий изменения является самым простым (хотя наименее предпочтительный), таким образом, я запущу там.
/etc/rc.local
файл просто выполняется /etc/init.d/rc.local
сценарий sysvinit, который (по умолчанию) выполняется в последний раз после переключения на любого нормального "на" runlevel (например, когда Вы загружаетесь обычно, но не, когда Вы закрываетесь или переходите к режиму восстановления). Для реализации установки устройства загрузки просто добавьте это в конце /etc/rc.local
, предположение, что Ваш файл называют /srv/diskimage
и Вы хотите использовать /dev/loop0
как циклическое устройство:
losetup /dev/loop0 /srv/diskimage
Это - действительно все, которое существует к нему. Конечно, замените имена файлов любыми работами лучше всего над Вашей установкой.
Если Вы хотите быть немного более конкретными относительно этого, можно создать Новомодное задание для него, которое настраивает его, после того как файловая система, содержащая его, была смонтирована. Пример был бы следующим, предположив это /srv
была точка монтирования, содержащая Ваш diskimage
файл:
description "Setup loop devices after filesystems are mounted"
start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage
Это должно быть достаточно просто следовать концептуально: первая строка является просто комментарием для читателей, и это - инструкции Выскочке ожидать до /srv
файловая система смонтирована, выполните процесс losetup и считайте себя законченными, когда процесс выходит успешно ("задача", в противоположность сервису, который является статическим). Просто поместите то содержание в соответствие файла /etc/init/*.conf
. Я выбрал бы /etc/init/losetup.conf
, самостоятельно.
Преимущества Новомодных заданий /etc/rc.local
поскольку такая простая вещь является маленькой, но важной. Во-первых, /etc/rc.local
удерживается от использования, и его использование как просто, "грязная песочница для добиваний цели" осуждена в значительной степени всеми в эти дни. Среди других причин осуждения ее использования некоторые программы, которые действительно используют тот файл, просто перезапишут содержание, и трудно согласовать различные сценарии, которые должны войти в тот же файл. Во-вторых, Выскочка на самом деле обрабатывает проверку зависимости Вас (проверка, что файловая система смонтирована сначала), поэтому если существует проблема, монтирующая файловую систему, она не попытается настроить циклическое устройство...., но будете, после того как Вы разрешили и смонтировали его. В-третьих, Выскочка значительно более гибка: у Вас может, например, быть он быть достаточно умными найти неиспользованное циклическое устройство и "испустить" то циклическое устройство для использования в других новомодных заданиях, подобных тому, как мы использовали переменную "ТОЧКИ МОНТИРОВАНИЯ" в этом примере выше.
Как @psusi указанный, самый легкий путь состоит в том, чтобы добавить следующую строку в Ваш /etc/fstab
файл
/path/to/loop/device /path/to/mount/point auto loop 0 0
Теперь перезагрузка или выполненный mount -a
как корень. Затем устройство должно быть смонтировано. Можно проверить это с lsblk
.