Как размонтироваться раньше chroot'd файловая система?

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

Следующее должно помочь, если более гибкое решение требуется, такие как наличие набора разорванных символьных связей, которые могут быть зафиксированы путем замены части целей символьной ссылки.

например, После изменения имени пользователя, для замены старого имени пользователя новым именем пользователя в цели многих ссылок после того, как было уже сделано перемещение. Создайте сценарий, названный заменой-simlinks, показанной ниже:

#!/bin/bash
link=$1
# grab the target of the old link
target=$(readlink -- "$1")

# replace the first occurrence of oldusername with newusername in the target string
target=${target/oldusername/newusername}

# Test the link creation
echo ln -s -- "$target" "$link"

# If the above echo shows the correct commands are being issued, then uncomment the following lines and run the command again
#rm "$link"
#ln -s "$target" "$link"

и назовите его со следующей командой:

find /home/newusername/ -lname '/home/oldusername/*' -exec ~/bin/replace-simlinks {} \;

Надеюсь эта справка кто-то

править: Спасибо Gilles для запущения на этом сценарии и подсказке об использовании сценария символьных ссылок для создания родственника ссылок.

17
20.01.2013, 11:00
5 ответов
  1. Необходимо сначала выйти из chroot сессии, обычно простое exit сделаю:

    exit
    
  2. Затем umount ВСЕ связанные каталоги:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Затем:

    umount /mnt/rescue
    

В случае, если Вы волновались это sync не используется здесь, обратите внимание, что это не имеет никакого влияния на то, возможно ли размонтирование. Размонтирование сбрасывает ожидающий записи так или иначе (оно имеет к, потому что нигде не было бы, чтобы они следовали за размонтированием). Присутствие процесса chrooted не важно (кроме которого оно предотвращает размонтирование). В операции нормальной системы синхронизация не имеет никакого заметного эффекта. синхронизация только имеет значение, если устройство физически отключено, не будучи размонтированным или если система отказывает, в то время как устройство смонтировано.

15
27.01.2020, 19:46
  • 1
    благодарит, вот именно... моя ошибка пыталась размонтировать/sys/вместо/mnt/rescue/sys/... –  Afr 20.01.2013, 19:21
  • 2
    sync полностью бесполезно. –  Gilles 'SO- stop being evil' 21.01.2013, 00:54
  • 3
    @Gilles Может Вы уточнять немного больше почему sync бесполезно? Это становится бесполезным в текущем ядре? Или только в этом случае (спасают режим)? Я поместил его там на всякий случай существует огромная незаконченная запись к диску, который предотвратит umount после выхода chroot. –  John Siu 21.01.2013, 04:44
  • 4
    @JohnSiu sync не имеет никакого влияния на то, возможно ли размонтирование. Размонтирование сбрасывает ожидающий записи так или иначе (оно имеет к, потому что нигде не было бы, чтобы они следовали за размонтированием). Присутствие процесса chrooted не важно (кроме которого оно предотвращает размонтирование). В операции нормальной системы, sync не имеет никакого заметного эффекта. sync только имеет значение, если устройство физически отключено, не будучи размонтированным или если система отказывает, в то время как устройство смонтировано. –  Gilles 'SO- stop being evil' 21.01.2013, 12:35
  • 5
    @Gilles я понимаю Вашу точку теперь.Спасибо!! –  John Siu 21.01.2013, 12:50

Выполните команду ниже, чтобы заставить и отсоединить файловую систему из иерархии файловой системы, и очистить все ссылки на файловую систему, как только она больше не занята.

umount -lf /mnt/rescue
14
27.01.2020, 19:46

Причина, по которой вы получаете сообщение «цель занята». сообщение связано с тем, что точка монтирования ( / mnt / rescue ) открыта в файловом браузере или в сеансе терминала, а также порядок размонтирования (здесь я имею в виду dev / pts должен быть размонтирован перед dev / )

Что ж, чтобы успешно размонтировать там все fs:

  • Убедитесь, что точка монтирования не открыта в файловом браузере!
  • После выхода из каталога изменений chroot из каталога chroot ( cd )!
  • Размонтируйте fs с соблюдением порядка dev / pts => dev / => proc / => sys / :

    sudo umount / mnt / rescue / dev / pts
    {{1} } sudo umount / mnt / rescue / dev
    sudo umount / mnt / rescue / proc
    sudo umount / mnt / rescue / sys
    sudo umount / mnt / rescue

4
27.01.2020, 19:46

Вот как я поступаю с schroot в Ubuntu версии 10.04 и выше:

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd
2
27.01.2020, 19:46

Выйти из chroot. В хост-системе команда «mount» покажет весь смонтированный путь. (Включает те пути, которые смонтированы в chroot.) Например:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

Затем войдите в среду chroot. В среде chroot запустите unmount, чтобы размонтировать все пути по порядку. (Подпуть должен быть размонтирован перед родительским путем.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
0
27.01.2020, 19:46

Теги

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