Команда не найдена в chroot

Вопрос или проблема

Я в настоящее время портирую Arch Linux на мой телефон и пытаюсь правильно настроить rootfs – установил его на внешнюю SD-карту и использую busybox для chroot в него с помощью

busybox chroot /data/local/mnt sh 

Я вижу, что pacman существует, когда ищу его:

/usr/bin # type -a pacman возвращает

/sbin/pacman

но всякий раз, когда я пытаюсь установить базовую систему с помощью:

pacman -S base-devel lightdm xorg-xinit xfce4 networkmanager --needed, я
получаю

sh: pacman: не найден

Я сделал следующее на своем телефоне Arm7:

mkfs.ext4 /dev/block/mmcblk1p1
mount /dev/block/mmcblk1p1 /data/local/mnt
cd /data/local/mnt
curl -O http://fl.us.mirror.archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
tar xvpf ArchLinuxARM-armv7-latest.tar.gz
chroot /data/local/mnt
export PATH=/bin:/usr/bin
rm -f /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf
pacman -Sy
# работает!

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что после выполнения команды chroot вы не можете найти команду pacman, даже если она, кажется, существует в вашей системе. Давайте разберёмся с решением этой проблемы по шагам.

  1. Правильный контекст выполнения: Убедитесь, что вы действительно находитесь внутри chroot окружения. Когда вы выполните команду chroot, вы должны работать в контексте корневой файловой системы, которую вы настраиваете. Для начала выполните команду chroot /data/local/mnt, чтобы перейти в новое окружение.

  2. Установите переменную PATH: После входа в chroot окружение, вам, возможно, нужно будет установить переменную PATH, чтобы она включала в себя директории, в которых находятся исполняемые файлы. Вы уже сделали это с помощью команды:

    export PATH=/bin:/usr/bin

    Убедитесь, что эта команда была выполнена после chroot.

  3. Проверка доступа к pacman: Если вы вводите команду pacman и видите сообщение об ошибке "sh: pacman: not found", проверьте, действительно ли файл существует и доступен. Выполните следующую команду внутри chroot:

    ls -l /sbin/pacman

    Убедитесь, что файл существует и имеет необходимые разрешения для выполнения. Если файл отсутствует, возможно, вы неправильно установили/распаковали систему.

  4. Настройка сети: Если вы хотите установить пакеты, убедитесь, что у вас есть доступ к интернету внутри chroot. Если вы не выполнили команду для настройки DNS, сделайте это:

    rm -f /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf
  5. Проблемы с совместимостью и архитектурой: Убедитесь, что версия pacman сопоставима с вашей архитектурой (ARM в данном случае). Если вы пытаетесь запустить неподходящую версию или неправильный бинарный файл, команда также не будет найдена.

  6. Обновление базы данных пакетов: Перед установкой пакетов не забудьте обновить базу данных pacman с помощью:

    pacman -Sy

    Убедитесь, что эта команда отработала успешно, и база данных обновилась.

  7. Установка пакетов: Теперь вы можете попробовать снова запустить установку необходимых пакетов:

    pacman -S base-devel lightdm xorg-xinit xfce4 networkmanager --needed

Если вы всё правильно сделали, команда должна выполниться без ошибок, и пакеты будут успешно установлены.

Если проблема сохраняется, проверьте технику выполнения шагов или предоставьте более подробную информацию об ошибках, которые вы получаете, чтобы мы могли оказать дополнительную помощь.

Оцените материал
Добавить комментарий

Капча загружается...