2010-07-18 19:06:10 +0000 2010-07-18 19:06:10 +0000
92
92

смонтировать dev, proc, sys в chroot-окружении?

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

Когда я пытался установить некоторые пакеты, он не смог сконфигурировать из-за отсутствия каталогов proc, sys, dev. Я узнал из других источников, что мне нужно “смонтировать” хост proc, … каталоги в chroot-окружении.

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

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

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

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

mount -t proc none /proc

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

Ответы (6)

118
118
118
2012-04-26 06:10:11 +0000

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

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
45
45
45
2010-07-19 01:02:06 +0000

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

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

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

13
13
13
2010-07-19 00:05:08 +0000

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

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

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

ln /sys /mnt/chroot/sys
1
1
1
2016-04-17 15:36:51 +0000

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

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

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

pacman --sync linux

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

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

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

pacman --sync linux

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

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

-1
-1
-1
2019-01-20 13:32:32 +0000

E

-1
-1
-1
2012-10-15 21:06:00 +0000

Существуют и другие псевдофайловые системы и локации 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 изнутри chroot. Я рекомендую not связывать /proc с /proc chroot, так как ядро имеет понятие пространства имен, и на самом деле может положить различные вещи в chroot’s proc.

Обновление: в соответствии с этой веткой списка рассылки , /sys не должен быть привязан, особенно если chroot-процессы используют собственное сетевое пространство имён.

Плохая идея монтировать систему /var или /run в chroot, если у chroot есть собственное пространство имён pid.

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

6
10
5
37
4