Этот ответ на другой вопрос в основном сводится к chroot
переходу в другой дистрибутив Linux, чтобы в основном использовать его в качестве замены слишком ограниченному (но незаменимому) родителю. Предлагаемые действия перед запуском chroot
, которые я хотел бы понять лучше:
cp /etc/resolv.conf etc/resolv.conf
cp -a /lib/modules/$(uname -r) lib/modules
mount -t proc archproc proc
mount -t sysfs archsys sys
mount -o bind /dev dev
mount -t devpts archdevpts dev/pts
- Копирование
resolv.conf
четкое (доступ к сети / Интернету), хотя я не уверен насчет этогоmodules
- это на самом деле казалось ненужным приchroot
входе в систему stage3 Gentoo, верно? - Но почему
proc
,sys
иdev/pts
перемонтирована вместо привязки монтажа? Какова реальная разница в этой ситуации, которая является «более правильной»? - Это HowTo Bind-монтирует
proc
иdev
, но ни один,dev/pts
ниsys
установлены на всех. Дополнительно он копирует/etc/{hosts,fstab}
в новый корень. Имеет ли это смысл? Разве я не должен включить/etc/mdadm.conf
тогда?
Ответы:
/etc/resolv.conf копируется, чтобы не потерять DNS.
/ lib / modules копируется потому, что может потребоваться использование некоторого аппаратного компонента, который не должен присутствовать во время настройки chroot. Вы должны помнить, что исходный вопрос, на который вы ссылаетесь в своем OP, касается замены ОС NAS на Arch Linux. Таким образом, вам понадобятся драйверы для Ethernet, возможно, для беспроводной связи, различных USB-компонентов и так далее. Копирование папки / lib / modules гарантирует, что новая среда сможет справиться со своими будущими задачами.
Вы действительно правы насчет повторной установки или крепления. Страница Arch Linux Wiki на Chroot делает использование повторного монтажа и привязки монтажа , как вы определяете, как и в ответ на сообщение , которое Вы ссылаетесь:
(Я думаю, что это показывает, что синтаксис ваших строк, скопированных из этого поста , неверен: dev для монтирования предшествует точке монтирования).
Тем не менее, справочная страница Ubuntu по chroot рассказывает другую историю:
Здесь / proc монтируется с привязкой, а не перемонтируется.
Я на самом деле пробовал обе вещи, и после короткого пробного запуска я не смог заметить никакой разницы. По общему признанию, это не большая проверка, и поэтому я остановлюсь здесь на том, что это не должно иметь большого значения.
источник
/etc/resolv.conf
- вам нужен этот файл для разрешения DNS-запросов. Это не обязательно при некоторых обстоятельствах:DHCP-клиент доступен в chroot, он выполняется, и DHCP-сервер возвращает соответствующую информацию (как правило, так).
Вы не заинтересованы в создании сетей (или, точнее, создании DNS-запросов из обычных приложений, на которые они опираются
/etc/resolv.conf
) изнутри chroot./lib/modules/$(uname -r)
- имеет смысл, если вам может понадобиться загрузить дополнительные модули для активного ядра. Без этого вы бы застряли с тем, что у вас сейчас работает. Следовательно, если вы собираетесь запускать chrooted-систему дольше, вам, вероятно, следует это сделать. С другой стороны, в таком случае вы, вероятно, должны использоватьpivot_root
вместо этого (что обычно делает initrd в конце своей жизни). Если вам просто нужно сделать это, например, чтобы установить загрузчик из chroot, в этом нет необходимости (поскольку все необходимые драйверы должны быть загружены, чтобы вы в любом случае могли выполнять сам chroot)./proc
и/dev
довольно очевидны - они содержат базовые системные интерфейсы./sys
был IIRC не что широко используется еще в 2007 году , которая является то , что Slackware (который сам по себе является довольно консервативным) Как к датирована. В наши дни ваша система может как-то выйти из строя без этого (например, когда что-то пытается перечислить какое-то оборудование типа)./dev/pts
- За прошедшие годы произошло несколько изменений в том, как/dev
обрабатывается дерево. В какой-то момент устройства/dev/pts
были обработаныdevfs
- см., Например, этот поток LKML для обсуждения возможных проблем.bind mount - есть несколько интересных аспектов bind mount (довольно хорошо объяснено на
mount(8)
странице руководства ). Например, если у вас есть:а затем перемонтировать
/x/a
только для чтения, вы не сможете ничего изменить в/x/B
. Это понятно, но может застать вас врасплох в первый раз. Еще один хороший вопрос, что должно произойти/x/b
в приведенном выше примере, когда выumount /x/a
. Для меня далеко не очевидно, что вы все еще можете получить доступ к дереву под ним. Следовательно, установка привязки может быть сложной. Функционально, когда используется на всей файловой системе, это то же самое.другие вещи из
/etc/
- это определенно имеет смысл скопировать соответствующую конфигурацию, которая полезна. Копирование , например/etc/passwd
,/etc/shadow
,/etc/groups
может иметь смысл, а также ключи сервера дляsshd
.источник
/proc
управляет процессами иsys
изменяет параметры ядра или информацию о доступе к текущему ядру.Теперь, принимая во внимание, что связывание подразумевает двунаправленную природу,
proc
его не следует устанавливать вне chroot в качестве лучшего решения.sys
может быть, но он зависит от текущего запущенного хоста ядра и должен быть таким же, какdev
, смонтированный как bind./dev/pts
уже доступны как/dev
смонтированные на привязке, но являются частью chroot, поэтомуpts
рекомендуется перемонтировать новыйmount -t devpts none /mnt/drive/dev/pts
.источник