chroot: не удалось выполнить команду '/bin/bash': такого файла или каталога нет (каталог существует)

так что... решение вашего вопроса возможно на 100%, и (в контекстеmake)важно.

Я столкнулся с этим в make-файле, и учитывая сложность вложения команд bash в make-файл, который уже использует $(...)для вызова переменных, приятно иметь возможность делать именно то, о чем вы спрашиваете.

Вместо использования evalпросто используйте awkили perlсистемную команду:

// command_list.sh:
echo "1"
echo "2"
echo "3"

// command line prompt:
$: cat command_list.sh | awk '{system($0)}'
1
2 
3

А, командный пункт:

// a readable version--rather than building up an awk miniprogram, 
// split into logical blocks:

$: cat inputs.txt | awk '{print "building "$1" command "$2" here "}' | awk '{system($0)}' 
2
30.04.2020, 17:39
1 ответ

Chroot жалуется, что не может найти/bin/bashвнутри окружения chroot, поэтому не может отправить вас туда в оболочке. Смонтируйте свое устройство, затем загляните внутрь:

# mount /dev/md127 /mnt/
# ls /mnt/bin/bash

Если я правильно угадал, это ничего не покажет. Если в вашем chroot есть действующая оболочка, вы можете изменить переменную среды SHELL. Например, если bash находится по адресу (/mnt )/usr/bin/bash:

# SHELL=/usr/bin/bash chroot /mnt

(Ищите ш, кш, тире...)

Но вам, вероятно, даже оболочка не нужна. Вы можете указать команду для запуска непосредственно при chroot.

# chroot /mnt passwd

Подробнее см. man chroot.

Кроме того, для смены пароля он вам, вероятно, не понадобится, но при chroot-окружении в целях отладки (например, если ваша система не загружается )вам обычно приходится привязывать несколько путей, таких как /dev, / dev/tty, /sys и /proc. Например mount -o bind /dev /mnt/dev. Таким образом, программы могут получать доступ к вашим устройствам, обрабатывать информацию и т. д., находясь в chroot-окружении.

1
28.04.2021, 23:17

Теги

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