LINUX.ORG.RU

как правильно сделать chroot


0

1

Подскажите пожалуйста как правильно сделать chroot
У меня на диске была папка в которой было дерево каталогов и файлы,
как бы мини система. Я делал в неё chroot двумя способами
Первый:
просто chroot путь к папке

Второй:
chroot путь к папке env -i HOME=/root TERM=«$TERM» PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login

В обоих случая при работе использовались библиотеки, файлы и программы
из основной системы, то есть полноценного chroot не было.

Как сделать полностью chroot так что бы использовались файлы только из папки куда был сделан chroot

★★

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

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

>может я немного не понятно написал, я имел ввиду при работе в chroot всё равно использовались команды, библиотеки и файлы из основной системы

Как вы это определили?

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

как там написано chroot путь к папке /bin/bash
так не делал, делал только два варианта как писал ранее, думаю что при этом варианте работать то же не будет.

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

Как вы это определили?


хотел сделать свой LiveCD Создал папку и в ней как бы мини систему в которой можно было компилить и устанавливать проги из исходников. Взял исходники syslinux скинул в эту папку и туда сделал chroot, потом откомпилировал его, инсталлировать его не надо было на сколько я теперь знаю, может быть ошибаюсь, а просто найти и взять файл isolinux ну и ещё какие там надо, но я не знал и проинсталил его, так он мне запортил папку /bin и /lib в основной системе, так что я не смог потом даже загрузиться, пришлось восстанавливать. Так вот при инстале запортилось всё в основной системе, хотя всё это я делал в chroot

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

Врёте вы всё. Наверное make install не в чруте сделали или ещё чего намудрили.


Честно не вру make install делал в chroot!!!

Может быть я бы и засомневался в своей правоте но это не единственный случай.

Собирал LFS по книге, так вот когда уже собирал окончательную систему
сделал chroot туда вторым вариантом, как в книге написано и компилил проги там, всё было прекрасно. Когда всё сделал и отсоединил винт установив его на другое железо всё работало, но когда попытался на этом другом компьютере установить прогу из исходников то ничего не получилось. Команда ./configure просто как бы зависала ничего при этом не выводив. В общем после 4 дней копания нашёл причину она была в библиотеке /usr/lib/libgmp.so.3.6.0

Сейчас расскажу каким образом.

Эту библиотеку использует команда expr, в основной системе версия expr
была не такая как в LFS. В основной системе она не использовала эту библиотеку но библиотека эта есть только другой версии 3.4.4
Версита 3.6.0 оказалась не рабочая
Так вот когда я на компе попытался откомпилить прогу, скрипт ./configure дошёл до места где использовалась команда expr она сработала с ошибкой в результате чего стала выполняться часть скрипта которая наверное никогда при конфигурировании не выполняется он просто стал вызывать сам себя и попал при этом в цикл, получалось что он какбы завис. А когда я компилил в chroot то библиотека использовалась не LFS системы версии 3.6.0 а основной системы версии 3.4.4 которая была рабочей и скрипт ./configure работал нормально.
Получается что chroot я сделал а библиотеки всё равно из основной системы используются.

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

Никаких лишних симлинков или mount --bind'ов не создавали? Лично я делаю chroot /mnt/somewhere /bin/bash, и никаких проблем, кроме, пожалуй, неправильного hostname, не испытываю. Примонтированы /proc, /sys и /dev. Целевые системы: debian, gentoo stage3.

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

> Врёте вы всё. Наверное make install не в чруте сделали или ещё чего намудрили.
Может он в / чрутнулся? Всё честно. :D

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

> Получается что chroot я сделал а библиотеки всё равно из основной системы используются.

Нет, не получается. Наверняка дело было в другом.

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

>как там написано chroot путь к папке /bin/bash

там написано chroot /foo /bin/bash

anonymous
()

Либо у вас неправильный chroot, либо вы как-то неправильно создаёте chroot-окружение. Вот возмите просто, создайте каталог /foo, скопируйте туда /bin «cp -a /bin/ /foo/bin», а потом сделайте «chroot /foo /bin/bash» и будет сообщение об ошибке, что-то типа «chroot: cannot execute /bin/bash: No such file or directory», потому что в /foo нет библиотек, нужных bash'у.

А если у вас запустится bash, значит что-то не так.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.