我试图chroot进入的Arch LinuxARM的文件系统x86_64。
我已经看到可以qemu通过将二进制文件复制到 chroot 系统来使用静态:
$ cp /usr/bin/qemu-arm archarm-chroot/usr/bin
Run Code Online (Sandbox Code Playgroud)
但尽管如此,我总是收到以下错误:
chroot: failed to run command ‘/bin/bash’: Exec format error
Run Code Online (Sandbox Code Playgroud)
我知道这意味着架构不同。难道我做错了什么?
更新后pacman -Syuq:
# pacman -Sc
pacman:加载共享库时出错:libicuuc.so.59:无法打开共享对象文件:没有这样的文件或目录
# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60
Run Code Online (Sandbox Code Playgroud)
Pi 版本 1 中的 Arch Linux:
# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux
Run Code Online (Sandbox Code Playgroud) 对于x86_64架构的CPU,不管是Intel、AMD还是VIA。该架构的软件可以在其上正常运行。
但是,对于arm64/aarch64(arm64/aarch64的区别在这里),有很多厂商。对于 arm64/arch64 的 Linux 发行版,有很多方向。
这是 Arch Linux ARM 的 arm 支持平台列表。
但是对于Debian,没有这么多的选择(只有 arm64 而对于 little endian 只有 armel)。
一季度。Archlinuxarm 的支持平台有什么区别?
为了弄清楚Q1,我用我的手机试了一下。我的手机架构是arm64v7el(4*ARMCortex-A73+4*ARMCortex-A53)。我为 armv7 - Raspberry Pi 2下载Archlinuxarm。并将 .tar.gz 文件解压到 Termux 主目录中的文件夹中。
然后我打开 Termux 并输入:
proot -r /path/to/my/archlinuxarm/rootfolder/
Run Code Online (Sandbox Code Playgroud)
不幸的是,据说 shell 解释器是不可执行的(在不同的体系结构中)。
也许,是因为Endian的不同。但是,对于 armv8,有一个 archlinuxarm 的下载选项,它是Generic。
Q2。如果我为A平台安装一个archlinuxarm系统到B平台。是不能最大程度优化还是完全不兼容?
Q3。是否有不同平台的发行版只是驱动程序不同或编译Linux内核时参数不同?
第 4 季度。令我困惑的是,archlinuxarm 社区为什么不提供仅针对 arm64 armel 等的 stage rootfs tarball 而不是不同供应商的不同产品?这是否意味着例如 DragonBoard 410c 中的指令集与 Raspberry Pi 3 不同?或者换句话说,如果我将用于 DragonBoard 410c 的 Archlinuxarm …
我有一个基于 imx233-Olinuxino-Nano 的设备。
Arch Linux Arm 发行版启动并运行。
但是,我的板上有一个从设备连接到 CPU 的 SPI。内核支持它,但很明显,Olinuxino 的通用设备树不包含它的描述。
如何让它显示在 /dev 目录中?我知道我可以在 Linux 内核中更改设备树并重新编译该设备树,但我听说可以提供设备树覆盖文件来在启动时更改设备树。我怎么做?到目前为止,我发现的信息是稀缺和模糊的。
这对我来说很奇怪。在运行最新 Arch Linux 的 Raspberry Pi 上,我禁用了 ETH0 上的所有 DHCP 服务以及其他所有 DHCP:
rm /etc/dhcpcd.duid
pacman -R dhclient
pacman -R dhcpcd
Run Code Online (Sandbox Code Playgroud)
我通过以下方式定义了静态 ETH /etc/netctl/ethernet-static:
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('10.0.1.30/24')
Gateway=('10.0.1.1')
DNS=('10.0.1.1')
Run Code Online (Sandbox Code Playgroud)
尽管如此,在 DHCP 租用时间过后,我仍会释放静态 IP,并再次获得(不同的)DHCP 地址。我在这里缺少什么?
PS:bcm2708 设备驱动程序中似乎存在一个错误,会触发 USB 断开连接(ETH 绑定到该连接)。但无论如何 - 如果 DHCP 被禁用,为什么我会获得 DHCP 地址?
[ 0.000000] Memory: 256MB = 256MB total
[ 0.000000] Memory: 171736k/171736k available, 90408k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( …Run Code Online (Sandbox Code Playgroud) 在使用 Armv7h 架构的 raspberry pi 3 型号 b+ 上全新安装 Arch Linux Arm(截至撰写本文时为 10 小时前)后,我无法安装 Arch Linux Keyring,这反过来阻止了其他软件的安装。Pacman 声明“文件 /var/cache//pacman/pkg/archlinux-keyring-20180404-1-any.pkg.tar.xz 已损坏(无效或损坏的包(PGP 签名))。”
我已经很舒服地使用 Arch Linux ARM 6 个月了,在 pacman 开始告诉我同样的问题后,我不得不在四天前(截至撰写本文时)更新后重新安装它。我已经在这个安装上运行了 pacman-key -- init 。安装也没有安装其他软件。
我正在尝试为我的 root 安卓手机创建一个 chroot。我想用在arch_bootstrap.shwiki 上找到的脚本来做到这一点,但我找不到 ARM 存储库。
我的电脑是 x86_64 Arch Linux,我的手机是运行 Cyanogenmod 7 的 HTC Desire。
arch-arm ×8
chroot ×2
pacman ×2
android ×1
arm ×1
device-tree ×1
dhcp ×1
embedded ×1
linux ×1
linux-kernel ×1
networking ×1
phone ×1
qemu ×1
repository ×1
u-boot ×1