LINUX.ORG.RU

arch-chroot и пользовательские каталоги

 , ,


0

1

Привет, ЛОР. Может кто-то уже делал такое и мне не придётся костылять? Нужно сделать chroot с помощью скрипта arch-chroot и примонтировать помимо стандартных /dev, /proc, /sys, /и_прочее некоторые пользовательские каталоги. Однако в итоге требуемая директория в chroot'е оказывается пустой. Если использвать chroot из coreutils, то всё норм.
Получается примерно так:

на хосте
mount --rbind /home/yacuken/directory /home/yacuken/rootfs/directory
ls /home/yacuken/rootfs/directory # есть файлы

chroot /home/yacuken/rootfs
ls /directory # есть файлы

arch-chroot /home/yacuken/rootfs
ls /directory # нет файлов
Как мне его заставить сделать это?

★★★★

Нужно сделать chroot с помощью скрипта arch-chroot

Зачем? arch-chroot - это просто скрипт, который в итоге всё равно использует обычный chroot.

Если так уже нужно, то изучай функции в /usr/share/zsh/site-functions/_archinstallscripts, сам код скрипта /usr/bin/arch-chroot и разбирайся как сделать нужное тебе.

Удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Смотрел и то, и другое. Не разобрался. Перед монтированием скрипт выполняет это

chroot_teardown() {
  umount "${CHROOT_ACTIVE_MOUNTS[@]}"
  unset CHROOT_ACTIVE_MOUNTS
}
А потом заново этот массив заполняет.
Но моей директории в этом массиве же нет.

В любом случае скопировал скрипт в ~/bin и захардкодил требуемое в нём. Но это не выход.

yacuken ★★★★
() автор топика
Ответ на: комментарий от kostik87

Ну если есть скрипт, который и chroot сделает, и сеть поднимет, то почему нет? Для этого же он и написан.

yacuken ★★★★
() автор топика
Ответ на: комментарий от yacuken

Ну если есть скрипт, который и chroot сделает

Ого какая сложность

mount $DST /mnt
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount ...

, и сеть поднимет

cp /etc/resolv.conf /mnt/etc/
chroot /mnt /bin/sh

Да, сложно, чего уж тут.

Для этого же он и написан.

Он написан потому, что кому-то лень при установке системы набрать пару команду и думать головой.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Хорошо. Но...
Ты залез один раз. Ввёл:

mount $DST /mnt
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount ...
cp /etc/resolv.conf /mnt/etc/
chroot /mnt /bin/sh
Залез второй раз. Ввёл: ^
Залез третий раз. Ввёл или погрепал по истории: ^
Делать это всегда не комильфо. Надо автоматизировать.

Записываешь в скрипт и...

Получаешь arch-chroot. Не колесо ли в XXI веке?

yacuken ★★★★
() автор топика
Ответ на: комментарий от yacuken

Получаешь arch-chroot. Не колесо ли в XXI веке?

Твой arch-chroot слишком сложен, в нём нужно разбираться, если мне нужно повторять несколько раз, например этот chroot, то я запишу эти 5 команд в скрипт и буду его вызывать. И у меня не будет проблем в вызове этого скрипта, т.к. я понимаю все команды в нём и на 100% знаю что он делает.

В мой же скрипт я могу руками дописать всё, что мне нужно и мне будет легко понять что и почему происходит.

Твой arch-chroot вызывает только дополнительные проблемы, если тебе нужно прикрутить что-то своё.

Поэтому он не нужен. Твоя тема является подтверждением этого тезиса.

Но ты продолжай дальше есть кактус.

Удачи.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.