"āĻļā§āĻ°ā§ āĻĨā§‡āĻ•ā§‡" ARM-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻšāĻŋāĻ¤ā§āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ¯āĻ–āĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻŦā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ āĻ•ā§‹āĻ¨ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ rootfs-āĻ āĻ¯āĻžāĻŦā§‡ āĻ¤āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤

āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻāĻ˛āĻāĻĢāĻāĻ¸, āĻŦāĻŋāĻ˛ā§āĻĄāĻ°ā§āĻŸ āĻŦāĻž āĻ‡āĻ¯āĻŧā§‹āĻ•ā§āĻŸā§‹ (āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§) āĻĻāĻ–āĻ˛ āĻ•āĻ°āĻž āĻ–ā§āĻŦ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ§āĻ¨ā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ (āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻĒāĻžāĻ‡āĻ˛āĻŸ āĻ¨āĻŽā§āĻ¨āĻžāĻ¯āĻŧ 4GB eMMC āĻ†āĻ›ā§‡) āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻĻā§āĻ°ā§āĻ¤ āĻāĻŽāĻ¨ āĻ•āĻŋāĻ›ā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ˛āĻ•ā§āĻˇā§āĻ¯ rootfs.

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•āĻĒāĻŋ-āĻĒā§‡āĻ¸ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻ¨āĻžāĨ¤

āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻšāĻ˛ āĻāĻ†āĻ°āĻāĻŽ āĻŦā§‹āĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻ°ā§āĻŸāĻĢāĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž (āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ•āĻ˛āĻŋāĻŦā§āĻ°āĻŋ imx7d āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡)āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ‡āĻŽā§‡āĻœ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ

āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻœāĻ¨ā§āĻ¯ āĻ˛āĻ•ā§āĻˇā§āĻ¯ rootfs āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤.

āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻŦā§‡āĻ¸ āĻ†āĻ¨āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĒāĻ›āĻ¨ā§āĻĻā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻŽā§āĻ•ā§āĻ¤āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ‡āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ 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

āĻ†āĻĒāĻ¨āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ†āĻ›ā§‡.

qemu āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻ†āĻ°ā§āĻŽ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĨāĻŋāĻ°āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ qemu āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

!!! āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ—!!!
āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ•āĻŋāĻ›ā§ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻĻā§‡āĻ–ā§āĻ¨:
https://sourceware.org/bugzilla/show_bug.cgi?id=23960
https://bugs.launchpad.net/qemu/+bug/1805913
āĻ¤āĻžāĻ°āĻĒāĻ° x86_64 āĻšā§‹āĻ¸ā§āĻŸ āĻāĻŦāĻ‚ āĻ†āĻ°ā§āĻŽ āĻ—ā§‡āĻ¸ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ qemu āĻāĻ° i386 āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:
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

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻ°āĻž āĻ…āĻŸā§‹āĻĒā§āĻļ āĻ¸ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻš etckeeper āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ

āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

etckeeper āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻ¸āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨.

āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧ:

  • āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ›ā§ āĻļāĻžāĻ–āĻž āĻ°āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨
  • āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻ•ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨
  • āĻŦāĻ˛ āĻ§āĻžāĻ•ā§āĻ•āĻž āĻ¨āĻŋāĻˇā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ
  • āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ ...
# 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 āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡
āĻāĻ†āĻ°āĻāĻŽ-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻ°ā§āĻŸāĻĢ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž
āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻ˛āĻžāĻ‡āĻ­ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡āĻ¨
Crossdev qemu-static-user-chroot
āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ°āĻ•ā§āĻˇāĻ•

getdents64 āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž

readdir() 32-āĻŦāĻŋāĻŸ āĻšā§‹āĻ¸ā§āĻŸā§‡ 64-āĻŦāĻŋāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€-āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• qemu-āĻāĻ° āĻœāĻ¨ā§āĻ¯ NULL (errno=EOVERFLOW) āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡
Ext4 64 āĻŦāĻŋāĻŸ āĻšā§āĻ¯āĻžāĻļ 32 āĻŦāĻŋāĻŸ glibc 2.28+ āĻŦā§āĻ°ā§‡āĻ• āĻ•āĻ°ā§‡
QEMU āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€-āĻŽā§‹āĻĄ āĻāĻŽā§āĻ˛ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ armhf-āĻāĻ° āĻœāĻ¨ā§āĻ¯ compiler_id_detection āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧ
CMake qemu-arm āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻž

āĻ‰āĻ¤ā§āĻ¸: www.habr.com