it-swarm-ru.tech

монтировать dev, proc, sys в среде chroot?

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

Когда я попытался установить некоторые пакеты, его не удалось настроить из-за отсутствия каталогов proc, sys, dev. Итак, из других мест я узнал, что мне нужно «смонтировать» каталог Host, ... каталоги в моей среде chroot.

Я видел два синтаксиса и не уверен, какой использовать.

В хост-машине:

  mount --bind /proc <chroot dir>/proc 

и другой синтаксис (в среде chroot):

  mount -t proc none /proc

Какой я должен использовать, и в чем разница?

80
Patrick

Для /proc и /sys, я полагаю, вы можете использовать любой из этих методов. Обе они являются специальными файловыми системами, поэтому их можно создавать любое количество раз (метод bind mount использует то же самое монтирование, что и система Host, тогда как другой метод использует новое монтирование). Я всегда видел рекомендованное в руководствах крепление для крепления, поэтому я бы использовал это. Насколько я знаю, нет действительно важной разницы.

Тем не менее, /dev обычно представляет собой монтирование tmpfs, которым управляет udev, поэтому это должна быть фактически та же файловая система, что и на хост-машине. Это означает, что вам нужно будет использовать метод bind mount.

Если этот chroot будет присутствовать некоторое время, вы можете поместить эти записи в /etc/fstab на хост-системе, чтобы упростить процесс.

43
Zifre

Arch Linux Wiki предлагает следующие команды:

cd /mnt/Arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/

Я могу подтвердить, что они работали на меня.

101
gacrux

Gentoo Handbook специально вызывает эти две команды для повторного монтирования/proc и/dev. Я использовал их несколько раз.

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

Я подозреваю, что/sys - это обычная папка, поэтому вы можете создать жесткую ссылку.

ln /sys /mnt/chroot/sys
12
robert

В этом популярном вопросе стоит отметить, что Arch Linux создал скрипт Arch-chroot ; скачать Arch-install-scripts-15-1-any.pkg.tar.xz

Это решение различных проблем, связанных с Arch-Linux и Manjaro , где я тоже успешно его использовал. Возможно, больше Arch - производных like Parabola также совместимы.

В то время как простая стандартная chroot во вторичной установке Manjaro не позволит вам запустить

pacman --sync linux

(серебряная пуля после сбоя системы), заменив строку на

Arch-chroot /run/media/*YOURSELF*/manja-disk2

позволит вам исправить вашу вторичную Arch-производную установку через

pacman --sync linux

как колдовство. Скрипт bash Arch-chroot заботится о /dev /sys /proc и многом другом, которые оставляют в покое стандартными chroot.

см. также: Использование Arch-chroot

1
y guy