Як відключити колишню файлову систему chroot'd?


17

Я використовую систему рятування-live (подібну до live-cd), щоб виправити деякі проблеми з моїм сервером Debian, наприклад:

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

Тепер я можу хронізувати /mnt/rescue- але після того, як я закінчу, як знову відключити файлову систему?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

Я думаю, це тому dev, що procі sysприв'язані до змонтованої файлової системи. Але їх також неможливо зняти ...


Що відбувається при спробі відключити /mnt/rescue/proc? Ви впевнені, що у вас ще не працюють процеси chroot?
— Мат

Спробуйте lsof /mnt/rescueпобачити, який процес використовує цю папку.
— Мартін Канавал

Перед тим, як вимкнутись, потрібно залишити хроноване оболонку.
— фонбранд

Відповіді:


15
  1. Ви повинні спочатку вийти з сеансу chroot, як правило, це exitзробити просто:

    exit
    
  2. Потім додайте ВСІ прив'язані каталоги:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Потім:

    umount /mnt/rescue
    

Якщо ви турбуєтеся про те, що syncтут не використовується, зауважте, що це не впливає на те, чи можлива відключення. Відключення флеш-листів, що очікують, все одно пише (це обов'язково, оскільки після демонтації їм нікуди не дівати). Наявність хронізованого процесу не має значення (за винятком того, що він запобігає відключенню). У нормальній роботі системи синхронізація не має спостережуваного ефекту. синхронізація має значення лише в тому випадку, якщо пристрій фізично відключено без відключення або якщо система виходить з ладу під час встановлення пристрою.


1
дякую, це все ... моя помилка була спроба відключити / sys / замість / mnt / рятувальний / sys / ...
— Афр

2
Це syncабсолютно марно.
— Жил "ТАК - перестань бути злим"

@Gilles Ви можете розробити більше, чому syncмарно? Чи стає він марним у поточному ядрі? Або лише в цьому випадку (режим порятунку)? Я розміщую його на всякий випадок, якщо є величезне очікування запису на диск, що запобіжить численності після виходу з chroot.
— Джон Сіу

4
@JohnSiu syncне впливає на те, чи можливий демонтаж . Відключення флеш-листів, що очікують, все одно пише (це обов'язково, оскільки після демонтації їм нікуди не дівати). Наявність хронізованого процесу не має значення (за винятком того, що він запобігає відключенню). У нормальній роботі системи syncне спостерігається ефекту. syncмає значення лише в тому випадку, якщо пристрій фізично відключено без відключення або якщо система виходить з ладу під час встановлення пристрою.
— Жил "ТАК - перестань бути злим"

@Gilles Я зараз розумію твій погляд. Дякую!!
— Джон Сіу

14

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

umount -lf /mnt/rescue

4

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

Ну а для того, щоб успішно вичислити всі файли там:

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

    sudo umount / mnt / рятувальний / dev / pts
    sudo umount / mnt / рятувальний / dev
    sudo umount / mnt / рятувальний / proc
    sudo umount / mnt / рятувальний / sys
    sudo umount / mnt / рятувальний


2

Ось як я це роблю з 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

0

Вихід із хроту. У хост-системі команда '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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.