Как настроить устройство цикла во время загрузки?

Я хочу настроить устройство цикла во время загрузки. Интересно, что это лучший способ сделать это.

Я искал его в google. Некоторые говорят, что добавили правило udev, некоторые говорят, что ввод скриптов в /etc/init.d, некоторые даже модифицируют initramfs.

Итак, каков наилучший или правильный способ сделать это? Не могли бы вы дать некоторые подробности (о том, как это сделать)?

Спасибо.

14
задан 29 July 2011 в 13:13

12 ответов

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

6
ответ дан 25 May 2018 в 19:36
  • 1
    Как вызван файл /etc/init/losetup.conf ??? Это не работает для меня ... – Imran 12 November 2013 в 15:24

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

7
ответ дан 25 July 2018 в 21:31

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

7
ответ дан 2 August 2018 в 03:09

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

7
ответ дан 4 August 2018 в 19:02

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

7
ответ дан 6 August 2018 в 03:21

Существует как минимум три «подходящих» способа запуска в 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» в этом примере выше.

7
ответ дан 7 August 2018 в 21:07

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device       /path/to/mount/point       auto       loop       0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 25 May 2018 в 19:36

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device /path/to/mount/point auto loop 0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 25 July 2018 в 21:31

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device /path/to/mount/point auto loop 0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 2 August 2018 в 03:09

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device /path/to/mount/point auto loop 0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 4 August 2018 в 19:02

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device /path/to/mount/point auto loop 0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 6 August 2018 в 03:21

Как отметил @psusi, самый простой способ - добавить следующую строку в ваш /etc/fstab файл

/path/to/loop/device /path/to/mount/point auto loop 0 0

Теперь перезагрузите или запустите mount -a с правами root. Затем устройство должно быть установлено. Вы можете проверить это с помощью lsblk.

1
ответ дан 7 August 2018 в 21:07

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

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