Не пойму , как работает команда chroot .
Предистория такова : начал я устанавливать LFS , версия 5.1 .
Выделил для него раздел , примонтировал его как /mnt/lfs .
Затем создал нового пользователя lfs с ограниченными правами и из под него
откомпилировал основные бинарники .
Структура сборки бинарников там такова , что основные каталоги легли не в /mnt/lfs ,
а в /mnt/lfs/tools - я имею ввиду /etc , /proc , /usr и т.д.
Ну и вот : после сборки я уже root-ом запускаю команду :
chroot /mnt/lfs
и в ответ получаю :
/bin/bash: No such file or directory
Это понятно - действительно , нет такого файла /mnt/lfs/bin/bash .
Тогда я запускаю по-другому :
chroot /mnt/lfs /tools/bin/bash .
Но в ответ все та же ругань , хотя файл /mnt/lfs/tools/bin/bash существует !
Этого я не могу понять .
АСП 9.2 .
>Не пойму , как работает команда chroot .
>Предистория такова : начал я устанавливать LFS , версия 5.1 .
>Выделил для него раздел , примонтировал его как /mnt/lfs .
...
>chroot /mnt/lfs
>и в ответ получаю :
>/bin/bash: No such file or directoryНе знаю что такое LFS если ты все поставил в /mnt/lfs, тогда наверное запуск должен выглядеть так: chroot /mnt/lfs название_твоей_проги_которую_ты_так_долго_ставил
З.Ы. http://www.opennet.me/man.shtml?topic=chroot&russian=0&categ...
>наверное запуск должен выглядеть так: chroot /mnt/lfs название_твоей_проги_которую_ты_так_долго_ставилСмотрел я эту доку - формат запуска chroot такой :
chroot НОВЫЙ_КАТАЛОГ [КОМАНДА...]НОВЫЙ_КАТАЛОГ - это /mnt/lfs
[КОМАНДА...] - это /tools/bin/bash
Т.е. с учетом смены каталога , если смотреть от самого линуксового корня , фактически это получается /mnt/lfs/tools/bin/bash .
Тут все правильно - файл существует .
Но chroot его не хочет запускать и говорит , что его нет !
>>наверное запуск должен выглядеть так: chroot /mnt/lfs название_твоей_проги_которую_ты_так_долго_ставил
>
>Смотрел я эту доку - формат запуска chroot такой :
>chroot НОВЫЙ_КАТАЛОГ [КОМАНДА...]
>
>НОВЫЙ_КАТАЛОГ - это /mnt/lfs
>[КОМАНДА...] - это /tools/bin/bash
>Т.е. с учетом смены каталога , если смотреть от самого линуксового корня
>, фактически это получается /mnt/lfs/tools/bin/bash .
>Тут все правильно - файл существует .
>Но chroot его не хочет запускать и говорит , что его нет!Таки нету его, все он правильно говорит. chroot _сначала_ меняет корень, а потом ищет программу -- от _нового_ корня.
Иначе говоря, запускать надо
/tools/bin/bashPS: Полная документация для chroot поддерживается в виде руководства в формате Texinfo. Если программы info и chroot нормально установлены на вашем сайте, то по команде
info chroot
Вы получите доступ к полному руководству.
> Тогда я запускаю по-другому:
> chroot /mnt/lfs /tools/bin/bash .
> Но в ответ все та же ругань , хотя файл /mnt/lfs/tools/bin/bash существует!Это потому, что программа chroot делает сист.вызов exec("/bin/bash", "/tools/bin/bash"); и чего бы ты ни написал вторым аргументом команды chroot, первым аргументом exec всё равно будет "/bin/bash". Откуда она это берёт? Да из /etc/passwd, колонка "Shell"...
Короче говоря, символьные линки рулят. Лучше всего перед сборкой сделать
ln -s .. /mnt/lfs/tools
и тогда все программы лягут куда надо. Или сам домозгуй, что в консерватории надо подправить... :)