Хорошо, я нашел путь, хотя это не выглядит очень чистым ;)
Я запущу с конца - выполняющий эту остроту, скажет Вам истину:
grep "USB.*pci" /proc/acpi/wakeup |\
cut -d ':' -f 2- |\
while read aaa; do \
find /dev/.udev \
-name "*$aaa*" \
-print \
-exec grep "$aaa" /proc/acpi/wakeup \; -exec echo \; ;\
done
Хороший, не так ли? И вот, как это работает:
grep "USB.*" /proc/acpi/wakeup
выписки из списка только USB-устройства, которые имеют известный sysfs узел.cut -d ':' -f 2-
листы просто конечное (числа) после 'PCI': на каждой строке.aaa=0000:00:1d.2
и так далее), попытайтесь найти udev символьную ссылку устройства, которая содержит строку./proc/acpi/wakeup
это соответствует найденному устройству,Так, благодаря значимому именованию символьных ссылок устройства udev можно сказать, какое USB-устройство является клавиатурой, мышью и т.д.
Вы не можете chroot в другую архитектуру. chrooting Вы выполняете двоичные файлы (от chroot) на Вашей архитектуре. Выполнение двоичных файлов ARM на x86 (и x86_64 в том вопросе) привело бы к "Исполнительной ошибке формата".
Если Вы захотите выполнить двоичные файлы от другой архитектуры, то Вам будет нужен Эмулятор. Qemu является хорошим кандидатом на это, но необходимо будет изучить, как использовать его. Это включило бы создание RootFS и компиляцию ядра для ARM. Вам будет нужен набор инструментальных средств для компиляции двоичных файлов ARM (и ядро), возможно. Одна вещь наверняка: Забудьте chroot метод, Вы не можете выполнить двоичные файлы, скомпилированные для ARM на x86 (x86_64).
Править: После светской беседы с @UrichDangel я понял, должно быть возможно войти в chroot среду с qemu-пользовательскими программами (qemu-рука в этом случае). Chroot должен выполнять qemu-руку, скомпилированную для Вашей архитектуры хоста, затем qemu-рука может выполнить Ваш/bin/sh (скомпилированный для руки).
Я думаю, что проблема состоит в том, что Вы не должны копировать qemu-arm
но qemu-arm-static
. Это - статический скомпилированный исполняемый файл, который в состоянии работать из chroot без любых библиотек.
Можно также заглянуть /proc/sys/fs/binfmt_misc
если там существует файл qemu-arm
. Если не перезапускают сервис binfmt_support
.
Я просто столкнулся с той же проблемой о Ubuntu. Я действительно имел binfmt
настроенный и qemu-arm-static
скопированный в того же chroot-редактора соединяют каналом как в хост-системе.
После часа я сделал set|grep bash
на хост-машине. Я нашел, что имел /bin/bash
в двух огибающих переменных: SHELL
и SUDO_COMMAND
. После замены переменных работал мой chroot к ARM:
SHELL=/bin/sh SUDO_COMMAND=/bin/sh chroot hd
Это не похоже на то, что вы сказали, что он, по крайней мере, редактирует файл Resolv.conf, чтобы начать с. Я изначально исключил все вещи, связанные с функциями уровня ОС, чисто на основе этого.
Я знаю, что вы упомянули, что ваш домен имеет правильность в PFSense, но в каком контексте?
в вашем PFSense, перейдите в SpearVPN Server -> Настройки клиента -> Домен DNS по умолчанию. Этот флажок проверен? Если это так, это наследенно правильно? Если оно появляется пустой, проверьте космический символ. Я имею в виду, действительно ... если это пусто, снимите его. Далее тест, чтобы посмотреть, если добавлять TEX.com и перезапустите енот на воротах. См. Если подключение изменяет ваш Resolv.conf с доменом Test.com.
-121--116439- Чтобы получить его на работу, я установил QEMU-Static-Arm
и BINFMT-yumb
от AUR.
Прочитайте комментарии для QEMU-User-Static
. Мне пришлось обновить PKGBUILD
с самым последним URL-адресом и загрузкой URL и хешими для MakePKG.
(Для установки из AUR загрузите Tarball, UNTRAR
, CD
, запустить MAKEPKG -I
)
Ответ Христианского Волфа важен. UPDATE-BINFMTS
не выполняется должным образом, чтобы включить эти форматы. Для этого я бегал:
update-binfmts --importdir /var/lib/binfmts/ --import
, как описано в Manpage для обновления-Binfmts. После этого CAT / PROC / SYS / FS / BINFMT_MISC
покажет различные Binfmts.
Затем убедитесь, что скопируйте QEMU - * - статичный
в каталог USR / BIN /
в том, что вы хотите Chroot, а затем Chroot
должно сработать.
Время от времени я использую ARM-хроот: мой телефон работает под Linux Deploy и образ время от времени умирает. Затем я копирую его на свой компьютер и изучаю ситуацию с chroot следующим образом:
# This provides the qemu-arm-static binary
apt-get install qemu-user-static
# Mount my target filesystem on /mnt
mount -o loop fs.img /mnt
# Copy the static ARM binary that provides emulation
cp $(which qemu-arm-static) /mnt/usr/bin
# Or, more simply: cp /usr/bin/qemu-arm-static /mnt/usr/bin
# Finally chroot into /mnt, then run 'qemu-arm-static bash'
# This chroots; runs the emulator; and the emulator runs bash
chroot /mnt qemu-arm-static /bin/bash
Я считаю, что для этого OP все, что ему нужно было сделать, это настроить binfmts, просто выполнив:
update-binfmts --enable qemu-arm
После запуска этого можно было бы chroot в файловую систему arm.
sudo apt-get update
sudo apt-get install debootstrap qemu qemu-user-static
sudo qemu-debootstrap --arch armhf bionic armhf-chroot
sudo chroot armhf-chroot
uname -m
Добавляя к ответу Люка :, вам нужно убедиться, что расположение интерпретатора в chroot такое же, как и в основной файловой системе. Это связано с тем, что ядро определяет архитектуру исполняемого файла, а затем использует расположение интерпретатора, как показано update-binfmts --display
, для его запуска. Итак, строка
cp $(which qemu-arm-static) /mnt/usr/bin
на самом деле должно быть
cp $(which qemu-arm-static) /mnt/$(which qemu-arm-static)
В противном случае вы можете получить ошибку «Не найдено» -внутри вашего chroot, поскольку ваше ядро не может найти требуемый интерпретатор, если местоположение qemu-arm-static
не находится внутри /usr/bin
в вашей системе.
binfmt
и qemu в комбинации для выполнения не собственных целей - wiki.debian.org/QemuUserEmulation – Ulrich Dangel 29.06.2012, 01:59binfmt
/qemu-user
решение точно, во что OP описала, способность к chroot в руку chroot и выполнила команды без потребности создать специализированный rootfs и т.д. – Ulrich Dangel 29.06.2012, 02:09