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