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/
Я могу подтвердить, что они работали на меня.
Я пытаюсь создать образ Linux с выбранными пакетами.
Я пытаюсь создать пакеты, которые собираюсь использовать на ноутбуке XO, потому что на реальном оборудовании XO компиляция пакетов занимает очень много времени, если я могу собрать все нужные мне пакеты и просто прошить Изображение на XO, я могу сэкономить время и пространство.
Когда я попытался установить некоторые пакеты, его не удалось настроить из-за отсутствия каталогов proc, sys, dev. Итак, я узнал из других мест, что мне нужно «смонтировать» host proc, каталоги в моей среде chroot.
Я видел два синтаксиса и не уверен, какой использовать.
В хост-машине:
mount --bind /proc <chroot dir>/proc
и другой синтаксис (в среде chroot):
mount -t proc none /proc
Какой я должен использовать, и в чем разница?
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/
Я могу подтвердить, что они работали на меня.
Для /proc
и /sys
, я полагаю, вы могли бы использовать любой метод. Обе они являются специальными файловыми системами, поэтому их можно воссоздавать любое количество раз (метод bind mount использует то же самое монтирование, что и хост-система, тогда как другой метод использует новое монтирование). Я всегда видел рекомендованное в руководствах крепление для крепления, поэтому я бы использовал это. Насколько я знаю, нет действительно важной разницы.
Однако /dev
обычно это монтирование tmpfs, которым управляет udev, поэтому это должна быть та же самая файловая система, что и на главном компьютере. Это означает, что вам нужно будет использовать метод bind mount.
Если этот chroot будет некоторое время, вы можете поместить эти записи в /etc/fstab
хост-систему, чтобы упростить процесс.
В Gentoo Handbook специально вызываются эти две команды для повторного монтирования / proc и / dev. Я использовал их несколько раз.
mount -t proc none /mnt/chroot/proc mount -o bind /dev /mnt/chroot/dev
Я подозреваю, что / sys - это обычная папка, поэтому вы можете создать жесткую ссылку.
ln /sys /mnt/chroot/sys
It may be worth noting in this popular question, that Arch Linux has made a script arch-chroot; download arch-install-scripts-15-1-any.pkg.tar.xz
This which takes care of various related problems both in Arch-Linux and Manjaro, where I used it successfully, too. Possibly more Arch-derivates like Parabola are compatible just as well.
While a simple standard chroot
into a secondary Manjaro installation will not allow you to run
pacman --sync linux
(the silver bullet after a system crash), replacing the line with
arch-chroot /run/media/*YOURSELF*/manja-disk2
will enable you to fix your secondary Arch-derivate installation via
pacman --sync linux
like a charm. The bash script arch-chroot
takes care of /dev /sys /proc
and much more, which are left alone by the standard chroot
.
see also: Using arch-chroot
Существуют и другие псевдофайловые системы и местоположения tmpfs. Это на Debian:
/dev/pts /run /run/shm /proc/sys/fs/binfmt_mist /var/lib/nfs/rpc_pipefs /proc/fs/nfsd /proc/bus/usb
Это должно быть в порядке, чтобы смонтировать usbfs
, rpc_pipefs
и devpts
псевдо-файловые системы изнутри корня. Я не рекомендую привязываться /proc
к chroot'ам /proc
, поскольку ядро имеет концепцию пространств имен и может на самом деле помещать разные вещи в процесс chroot.
Обновление: в соответствии с этим потоком списка рассылки, / sys не должен быть подключен с привязкой, особенно если процессы, выполняемые с помощью chroot, используют свое собственное пространство имен сети.
Неправильно монтировать систему /var
или /run
на chroot, если у chroot есть собственное пространство имен pid.