Мне нужно, чтобы определенная строка в /etc/fstab
всегда монтировалась после двух других строк:
# Always mount these first
UUID=fdf38dd4-9e9d-479d-b830-2a6989958503 / ext4 noatime,discard,errors=remount-ro 0 1
UUID=2b548eb8-fa67-46ce-a998-91d587dba62f /home/.hdd ext4 errors=remount-ro 0 2
# Always mount this second
none /home/ak aufs br:/home/.ssd/ak=rw:/home/.hdd/ak=rw 0 0
Текущее поведение состоит в том, чтобы часто изменять порядок последних двух строк непредсказуемым образом. Как я могу указать необходимый заказ?
Один из вариантов - отложить монтаж до завершения /etc/fstab
, что дает вам полный контроль над порядком монтирования.
Просто добавьте noauto
к опциям монтирования в fstab и смонтируйте в rc.local
.
Согласно справочной странице , mount -a
монтирует записи в fstab
последовательно, в то время как добавление опции -F
('fork') монтирует их параллельно. Похоже, что стандартная загрузка использует 'fork', предположительно, для сокращения времени загрузки, поэтому я предполагаю, что последующее монтирование (полу) вручную - это самый простой способ восстановить контроль над порядком монтирования.
Я мог бы подумать о настройке скрипта , который монтирует вторые диски после вызова скрипта монтирования. В Ubuntu initd - это служба, которая запускает все компоненты вашей операционной системы, и она называется upstart .
Он основан на событиях, то есть он просматривает / ожидает и генерирует события во время процесса загрузки. Как в этом посте было указано , что служба initd пытается делать что-то параллельно, что, вероятно, является причиной ваших проблем. Таким образом, вы можете настроить запуск скрипта сразу после того, как монтирование завершится и завершит его обработку.
Сценарии монтирования хранятся в каталоге / etc / init /. Я бы также добавил ваш дополнительный скрипт монтирования. Посмотрите на это описание процесса запуска. Этот сайт, вероятно, поможет вам быстрее увидеть свой собственный скрипт.
Вам нужно иметь начало секции в вашем собственном сценарии. См. Этот раздел для начала работы после того, как другой закончил.
Я все еще смотрю на то, как создавать свои собственные сценарии запуска, так что я не могу быть более полезным. Если вы нашли рабочее решение, пожалуйста, опубликуйте его здесь.
Ubuntu использует mountall
во время загрузки, а не mount -a
. Mountall ожидает появления соответствующих устройств, а затем немедленно монтирует fs на них, если только fs, под которой он монтируется, еще не был смонтирован, а затем ожидает этого fs.
Вы сможете получить желаемый порядок, установив точки монтирования трех файловых систем, чтобы они располагались друг над другом. Вместо монтирования всех трех в /home/.something поместите первый в /home/.x, а второй в /home/.x/.y, а третий в /home/.x/.y/ .z.
Согласно man fstab
, вариант showthrough
может быть тем, что вы ищете. Попробуйте установить его на / home / ak и посмотреть, работает ли он.
Возможно, что mount
разветвится при монтировании файловых систем во время загрузки; в этом случае порядок монтирования разделов будет неопределенным.
Systemd теперь включает опцию зависимости, которая обеспечивает порядок монтирования. В вашем случае добавьте аргументы fstab:
x-systemd.requires-mounts-for=/,x-systemd.requires-mounts-for=/home/.hdd
Опция noauto не будет работать, если вам нужно смонтировать другие подключенные файловые системы. В моем случае вышеупомянутое сработало, см. Commit https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823 для более подробной информации.