ืฉืึทืคึฟืŸ ืึทืŸ ื•ื‘ื•ื ื˜ื• ื‘ื™ืœื“ ืคึฟืึทืจ ARM "ืคึฟื•ืŸ ืงืจืึทืฆืŸ"

ื•ื•ืขืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื ืึธืจ ื”ื™ื™ื‘ื˜, ืขืก ืื™ื– ืึธืคื˜ ื ื™ืฉื˜ ืงืœืึธืจ ื•ื•ืึธืก ืคึผืึทืงืึทื“ื–ืฉืึทื– ื•ื•ืขื˜ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืฆื™ืœ ืจืึธืึธื˜ืคืก.

ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืขืก ืื™ื– ืฆื• ืคืจื™ ืฆื• ื›ืึทืคึผืŸ LFS, buildroot ืึธื“ืขืจ yocto (ืึธื“ืขืจ ืขืคึผืขืก ืึทื ื“ืขืจืฉ), ืึธื‘ืขืจ ืื™ืจ ืฉื•ื™ืŸ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ. ืคึฟืึทืจ ื“ื™ ืจื™ื™ึทืš (ืื™ืš ื”ืึธื‘ืŸ 4GB eMMC ืื•ื™ืฃ ืคึผื™ืœืึธื˜ ืกืึทืžืคึผืึทืœื–) ืขืก ืื™ื– ืึท ื•ื•ืขื’ ืื•ื™ืก ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืฆื• ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืึท ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ื•ื•ืึธืก ื•ื•ืขื˜ ืœืึธื–ืŸ ื–ื™ื™ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืฆื•ืฉื˜ืขืœืŸ ืขืคึผืขืก ื•ื•ืึธืก ืื™ื– ืื™ืฆื˜ ืคืขืœื ื“ื™ืง, ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ืงืขื ืขืŸ ืฉื˜ืขื ื“ื™ืง ืงืœื™ื™ึทื‘ืŸ ืจืฉื™ืžื•ืช ืคื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืื•ืŸ ืฉืึทืคึฟืŸ ืึท ืจืฉื™ืžื” ืคึฟืึทืจ ื“ื™ ืฆื™ืœ ืจืึธื•ืฅ.

ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ื ื™ืฉื˜ ื ื™ื™ึท ืื•ืŸ ืื™ื– ืึท ืคึผืฉื•ื˜ ืงืึธืคึผื™ืข-ืคึผืึทืคึผ ืœื™ืžืขื“.

ื“ืขืจ ืฆื™ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ืฆื• ื‘ื•ื™ืขืŸ Ubuntu rootfs ืคึฟืึทืจ ARM ื‘ืึธืจื“ื– (ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ Colibri imx7d).

ื‘ื™ืœื“ื™ื ื’ ืึท ื‘ื™ืœื“

ืžื™ืจ ืึทืกืขืžื‘ืึทืœ ื“ื™ ืฆื™ืœ ืจืึธืึธื˜ืคืก ืคึฟืึทืจ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืึทื ืคึผืึทืงื™ื ื’ Ubuntu Base

ืžื™ืจ ืงืœื™ื™ึทื‘ืŸ ื“ื™ ืžืขืœื“ื•ื ื’ ื–ื™ืš ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื ื•ื™ื˜ ืื•ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืคึผืจืขืคึฟืขืจืขื ืฆืŸ. ื“ื ื”ืื‘ ืื™ืš ื’ืขื’ืขื‘ืŸ 20.

$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs

ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ BINFMT ืฉื˜ื™ืฆืŸ ืื™ืŸ ื“ื™ ืงืขืจืŸ

ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ืึท ืคึผืจืึธืกื˜ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’, ืขืก ืื™ื– ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ BINFMT_MISC ืื•ืŸ ืึทืœืฅ ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“, ืื•ื™ื‘ ื ื™ืฉื˜, ืื™ืš ื‘ื™ืŸ ื–ื™ื›ืขืจ ืึทื– ืื™ืจ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฆื• ื’ืขื‘ืŸ BINFMT ืฉื˜ื™ืฆืŸ ืื™ืŸ ื“ื™ ืงืขืจืŸ.

ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– BINFMT_MISC ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ ืื™ืŸ ื“ื™ ืงืขืจืŸ:

$ zcat /proc/config.gz | grep BINFMT
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_BINFMT_MISC=y

ืื™ืฆื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก:

$ ls /proc/sys/fs/binfmt_misc
qemu-arm  register  status
$ cat /proc/sys/fs/binfmt_misc/qemu-arm
enabled
interpreter /usr/bin/qemu-arm
flags: OC
offset 0
magic 7f454c4601010100000000000000000002002800
mask ffffffffffffff00fffffffffffffffffeffffff

ืื™ืจ ืงืขื ืขืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืžืึทื ื™ื•ืึทืœื™ ื ื™ืฆืŸ, ืœืžืฉืœ, ื“ืึธ ื–ืขื ืขืŸ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืกื˜ืึทื˜ื™ืง ืึธืจืขื

ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืกื˜ืึทื˜ื™ืงืœื™ ืคืืจื–ืืžืœื˜ ืงืขืžื• ื‘ื™ื™ึทืฉืคึผื™ืœ.

!!! ATTENTION!!!
ืื•ื™ื‘ ืื™ืจ ืคึผืœืึทืŸ ืฆื• ื ื•ืฆืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ืฆื• ื‘ื•ื™ืขืŸ ืขืคึผืขืก, ื˜ืฉืขืง ืื•ื™ืก:
https://sourceware.org/bugzilla/show_bug.cgi?id=23960
https://bugs.launchpad.net/qemu/+bug/1805913
ื“ืขืจื ืึธืš ืคึฟืึทืจ x86_64 ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ืึธืจืขื ื’ืึทืกื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ i386 ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹qemu:
http://ftp.ru.debian.org/debian/pool/main/q/qemu/qemu-user-static_5.0-13_i386.deb

$ wget http://ftp.debian.org/debian/pool/main/q/qemu/qemu-user-static_5.0-13_amd64.deb
$ alient -t qemu-user-static_5.0-13_amd64.deb
# ะฟัƒั‚ัŒ ะฒ rootfs ะธ ะธะผั ะธัะฟะพะปะฝัะตะผะพะณะพ ั„ะฐะนะปะฐ ะดะพะปะถะฝะพ ัะพะฒะฟะฐะดะฐั‚ัŒ ั /proc/sys/fs/binfmt_misc/qemu-arm
$ mkdir qemu
$ tar xf qemu-user-static-5.0.tgz -C qemu
$ file qemu/usr/bin/qemu-arm-static
qemu/usr/bin/qemu-arm-static: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=be45f9a321cccc5c139cc1991a4042907f9673b6, for GNU/Linux 3.2.0, stripped
$ cp qemu/usr/bin/qemu-arm-static rootfs/usr/bin/qemu-arm
$ file rootfs/usr/bin/qemu-arm
rootfs/usr/bin/qemu-arm: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=be45f9a321cccc5c139cc1991a4042907f9673b6, for GNU/Linux 3.2.0, stripped

ื˜ืฉืจืึธืึธื˜

ืคึผืฉื•ื˜ ืฉืจื™ืคื˜:

ch-mount.sh

#!/bin/bash

function mnt() {
    echo "MOUNTING"
    sudo mount -t proc /proc proc
    sudo mount --rbind /sys sys
    sudo mount --make-rslave sys
    sudo mount --rbind /dev dev
    sudo mount --make-rslave dev
    sudo mount -o bind /dev/pts dev/pts
    sudo chroot 
}

function umnt() {
    echo "UNMOUNTING"
    sudo umount proc
    sudo umount sys
    sudo umount dev/pts
    sudo umount dev

}

if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
    mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
    umnt $1 $2
else
    echo ""
    echo "Either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m /media/sdcard/"
    echo ""
    echo 1st parameter : 
    echo 2nd parameter : 
fi

ืžื™ืจ ื‘ืึทื•ื•ื•ื ื“ืขืจืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜:

$ ./ch-mount.sh -m rootfs/
# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
# uname -a
Linux NShubin 5.5.9-gentoo-x86_64 #1 SMP PREEMPT Mon Mar 16 14:34:52 MSK 2020 armv7l armv7l armv7l GNU/Linux

ื ืึธืจ ืคึฟืึทืจ ืฉืคึผืึทืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืžืขืกื˜ืŸ ื“ื™ ื’ืจื™ื™ืก ืื™ื™ื“ืขืจ ืื•ืŸ ื ืึธืš ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ืžื™ื ื™ืžื•ื (ืคึฟืึทืจ ืžื™ืจ) ื’ืึทื ื’ ืคื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื–:

# du -d 0 -h / 2>/dev/null
63M     /

ื–ืืœ ืก ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ:

# apt update
# apt upgrade --yes

ืœืึธืžื™ืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคึผืึทืงืึทื“ื–ืฉืึทื– ื•ื•ืึธืก ืžื™ืจ ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ:

# SYSTEMD_IGNORE_CHROOT=yes apt install --yes autoconf kmod socat ifupdown ethtool iputils-ping net-tools ssh g++ iproute2 dhcpcd5 incron ser2net udev systemd gcc minicom vim cmake make mtd-utils util-linux git strace gdb libiio-dev iiod

ืงืขืจื ืขืœ ื›ืขื“ืขืจ ื˜ืขืงืขืก ืื•ืŸ ืžืึทื“ื–ืฉื•ืœื– ื–ืขื ืขืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืขื ื™ืŸ. ืคื•ืŸ ืงื•ืจืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื‘ืึธืึธื˜ืœืึธืึทื“ืขืจ, ืงืขืจืŸ, ืžืึทื“ื–ืฉื•ืœื–, ืžื™ื˜ืœ ื‘ื•ื™ื ื“ื•ืจืš ื•ื‘ื•ื ื˜ื•. ื–ื™ื™ ื•ื•ืขืœืŸ ืงื•ืžืขืŸ ืฆื• ืื•ื ื“ื– ืคื•ืŸ ืึทืจื•ื™ืก ืึธื“ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ืึทืกืขืžื‘ืึทืœ ื–ื™ื™ ื–ื™ืš ืึธื“ืขืจ ื–ื™ื™ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื’ืขื‘ืŸ ืฆื• ืื•ื ื“ื– ื“ื•ืจืš ื“ื™ ื‘ืจืขื˜ ืคืึทื‘ืจื™ืงืึทื ื˜, ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ ื“ืึธืก ืื™ื– ื•ื•ื™ื™ึทื˜ืขืจ ืคื•ืŸ ื“ื™ ืคืึทืจื ืขื ืคื•ืŸ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–.

ืื™ืŸ ืขื˜ืœืขื›ืข ืžืึธืก, ื•ื•ืขืจืกื™ืข ื“ื™ื•ื•ืขืจื“ื–ืฉืึทื ืก ืื™ื– ืคึผืึทืกื™ืง, ืึธื‘ืขืจ ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ื ืขืžืขืŸ ื–ื™ื™ ืคึฟื•ืŸ ื“ื™ ืงืขืจืŸ ื‘ื•ื™ืขืŸ.

# apt install --yes linux-headers-generic

ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืŸ ืื•ืŸ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืคึผืœืึทืฅ:

# apt clean
# du -d 0 -h / 2>/dev/null
770M    /

ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืฉื˜ืขืœืŸ ืึท ืคึผืึทืจืึธืœ.

ืคึผืึทืงื™ื ื’ ื“ื™ ื‘ื™ืœื“

$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz

ืื™ืŸ ื“ืขืจืฆื•, ืžื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืขื˜ืงืงืขืขืคึผืขืจ ืžื™ื˜ ื“ื™ ืึทื•ื˜ืึธืคึผื•ืฉ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ

ื ื•, ืœืึธื–ืŸ ืก ื–ืึธื’ืŸ ืžื™ืจ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื“ื–ืขืจ ืคึฟืึทืจื–ืึทืžืœื•ื ื’, ื“ื™ ืึทืจื‘ืขื˜ ืื ื’ืขื”ื•ื™ื‘ืŸ ืื•ื™ืฃ ื•ื•ื™ ื‘ืขืกื˜ืขืจ ืฆื• ืึทืกืขืžื‘ืึทืœ ืฉืคึผืขื˜ืขืจ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืกื™ืกื˜ืขื.

ืขื˜ืงืข ืจ ืงื ืŸ ืื•ื ื“ื–ืข ืจ ื”ื™ืœืฃ .

ื–ื™ื›ืขืจืงื™ื™ึทื˜ ืื™ื– ืึท ืคึผืขืจื–ืขื ืœืขืš ืขื ื™ืŸ:

  • ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื™ืฆืŸ ื–ื™ื›ืขืจ ืฆื•ื•ื™ื™ื’ืŸ
  • ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ื™ื™ื ืฆื™ืง ืฉืœื™ืกืœ ืคึฟืึทืจ ื™ืขื“ืขืจ ืžื™ื˜ืœ
  • ื“ื™ืกื™ื™ื‘ืึทืœ ืงืจืึทืคื˜ ืฉื˜ื•ืคึผืŸ
  • ืืื–"ื• ื• ...
# ssh-keygen
# apt install etckeeper
# etckeeper init
# cd /etc
# git remote add origin ...

ื–ืืœ ืก ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ ืึทื•ื˜ืึธืคึผื•ืฉ

ืžื™ืจ ืงืขื ืขืŸ, ืคื•ืŸ ืงื•ืจืก, ืžืึทื›ืŸ ืฆื•ื•ื™ื™ื’ืŸ ืื•ื™ืฃ ื“ื™ ืžื™ื˜ืœ ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ (ืœืึธื–ืŸ ืก ื–ืึธื’ืŸ ืžื™ืจ ืžืึทื›ืŸ ืึท ืฉืจื™ืคื˜ ืึธื“ืขืจ ืึท ื“ื™ื ืกื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ืœื•ื™ืคืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืžืึธืœ ืขืก ืื™ื– ืœืึธื ื˜ืฉื˜).

# cat /etc/etckeeper/etckeeper.conf
PUSH_REMOTE="origin"

ืึธื“ืขืจ ืžื™ืจ ืงืขื ืขืŸ ื˜ืึธืŸ ืขืคึผืขืก ืกืžืึทืจื˜ืขืจ ...

ืคื•ื™ืœ ื•ื•ืขื’

ืœืึธืžื™ืจ ื”ืึธื‘ืŸ ืึท ื™ื™ื ืฆื™ืง ืื™ื“ืขื ื˜ื™ื˜ืขื˜, ื–ืึธื’ืŸ ื“ื™ ืกื™ืจื™ืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ ืคึผืจืึทืกืขืกืขืจ (ืึธื“ืขืจ MAC - ืขืจื ืกื˜ ืงืึธืžืคึผืึทื ื™ืขืก ืงื•ื™ืคืŸ ื“ื™ ืงื™ื™ื˜):

cat / proc / cpuinfo

# cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 60.36
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 60.36
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : Freescale i.MX7 Dual (Device Tree)
Revision        : 0000
Serial          : 06372509

ื“ืขืจื ืึธืš ืžื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืขืก ืคึฟืึทืจ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ึทื’ ืฆื• ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืฉื˜ื•ืคึผืŸ:

# cat /proc/cpuinfo | grep Serial | cut -d':' -f 2 | tr -d [:blank:]
06372509

ืœืึธืžื™ืจ ืžืึทื›ืŸ ืึท ืคึผืฉื•ื˜ ืฉืจื™ืคื˜:

# cat /etc/etckeeper/commit.d/40myown-push
#!/bin/sh
set -e

if [ "$VCS" = git ] && [ -d .git ]; then
  branch=$(cat /proc/cpuinfo | grep Serial | cut -d':' -f 2 | tr -d [:blank:])
  cd /etc/
  git push origin master:${branch}
fi

ืื•ืŸ ืึทื– ืก ืึทืœืข - ื ืึธืš ืึท ื‘ืฉืขืช ืžื™ืจ ืงืขื ืขืŸ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื•ืŸ ืžืึทื›ืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืคึฟืึทืจ ื“ื™ ืฆื™ืœ ืคื™ืจืžื•ื•ืึทืจืข.

ืจืขืงืึทืžืขื ื“ื™ื“ ืžืึทื˜ืขืจื™ืึทืœืก

BINFMT_MISC
ืงืขืจื ืขืœ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ื‘ื™ื™ื ืขืจื™ ืคืึธืจืžืึทืฅ (binfmt_misc)
ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืžื™ื˜ qemu ื‘ืึทื ื™ืฆืขืจ chroot
ื‘ื•ื™ืขืŸ Ubuntu rootfs ืคึฟืึทืจ ARM
ื•ื•ื™ ืฆื• ืฉืึทืคึฟืŸ ืึท ืžื ื”ื’ Ubuntu ืœืขื‘ืŸ ืคึฟื•ืŸ ืงืจืึทืฆืŸ
Crossdev qemu-static-user-chroot
ื•ื›ื•'

ื’ืขื“ืขื ืฅ64 ืคึผืจืึธื‘ืœืขื

readdir () ืงืขืจื˜ NULL (ืขืจืจื ืึธ = ืขืึธื•ื•ืขืจืคืœืึธื•ื•) ืคึฟืึทืจ 32-ื‘ื™ืกืœ ื‘ืึทื ื™ืฆืขืจ-ืกื˜ืึทื˜ื™ืง ืงืขืžื• ืื•ื™ืฃ 64-ื‘ื™ืกืœ ื‘ืึทืœืขื‘ืึธืก
Ext4 64 ื‘ื™ืกืœ ื”ืึทืฉ ื‘ืจื™ื™ืงืก 32 ื‘ื™ืกืœ ื’ืœื™ื‘ืง 2.28+
compiler_id_detection ืคื™ื™ืœื– ืคึฟืึทืจ armhf ื•ื•ืขืŸ ื ื™ืฆืŸ QEMU ื‘ืึทื ื™ืฆืขืจ-ืžืึธื“ืข ืขืžื™ืึทืœื™ื™ืฉืึทืŸ
ืงืžืึทืงืข ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืจืขื›ื˜ ืื•ื ื˜ืขืจ ืงืžืขื•-ืึทืจื

ืžืงื•ืจ: www.habr.com