рдПрдЖрд░рдПрдорд╕рд╛рдареА "рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди" рдЙрдмрдВрдЯреВ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдЬреЗрд╡реНрд╣рд╛ рд╡рд┐рдХрд╛рд╕ рдиреБрдХрддрд╛рдЪ рд╕реБрд░реВ рд╣реЛрддреЛ, рддреЗрд╡реНрд╣рд╛ рдЕрдиреЗрдХрджрд╛ рдХреЛрдгрддреЗ рдкреЕрдХреЗрдЬ рд▓рдХреНрд╖реНрдпрд┐рдд рд░реВрдЯрдлреНрд╕рд╡рд░ рдЬрд╛рддреАрд▓ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдирд╕рддреЗ.

рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдПрд▓рдПрдлрдПрд╕, рдмрд┐рд▓реНрдбрд░реВрдЯ рдХрд┐рдВрд╡рд╛ рдпреЛрдХреНрдЯреЛ (рдХрд┐рдВрд╡рд╛ рджреБрд╕рд░реЗ рдХрд╛рд╣реАрддрд░реА) рдорд┐рд│рд╡рдгреЗ рдЦреВрдк рд▓рд╡рдХрд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╢реНрд░реАрдордВрддрд╛рдВрд╕рд╛рдареА (рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдирдореБрдиреНрдпрд╛рдВрд╡рд░ 4GB eMMC рдЖрд╣реЗ) рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рд╡рд┐рддрд░рдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ рдЬреЛ рддреНрдпрд╛рдВрдирд╛ рд╕рдзреНрдпрд╛ рдЧрд╣рд╛рд│ рдЕрд╕рд▓реЗрд▓реА рдПрдЦрд╛рджреА рдЧреЛрд╖реНрдЯ рддреНрд╡рд░реАрдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рдиреЗрд╣рдореА рдкреЕрдХреЗрдЬреЗрд╕рдЪреНрдпрд╛ рдпрд╛рджреНрдпрд╛ рдЧреЛрд│рд╛ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╛рдареА рдпрд╛рджреА рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ. рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлреНрд╕.

рд╣рд╛ рд▓реЗрдЦ рдирд╡реАрди рдирд╛рд╣реА рдЖрдгрд┐ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╕реВрдЪрдирд╛ рдЖрд╣реЗ.

рд▓реЗрдЦрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рдПрдЖрд░рдПрдо рдмреЛрд░реНрдбрд╕рд╛рдареА рдЙрдмрдВрдЯреВ рд░реВрдЯрдл рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╣реЗ (рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдХреЛрд▓рд┐рдмреНрд░реА рдЗрдордПрдХреНрд╕ 7 рдбреА рд╡рд░ рдЖрдзрд╛рд░рд┐рдд).

рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рд╛

рдЖрдореНрд╣реА рдкреНрд░рддрд┐рдХреГрддреАрд╕рд╛рдареА рд▓рдХреНрд╖реНрдп рд░реВрдЯрдл рдПрдХрддреНрд░ рдХрд░рддреЛ.

рдЙрдмрдВрдЯреВ рдмреЗрд╕ рдЕрдирдкреЕрдХ рдХрд░рдд рдЖрд╣реЗ

рдЧрд░рдЬ рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЖрд╡рдбреАрдирд┐рд╡рдбреАрдиреБрд╕рд╛рд░ рдЖрдореНрд╣реА рд╕реНрд╡рддрдГ рд░рд┐рд▓реАрдЭ рдирд┐рд╡рдбрддреЛ. рдпреЗрдереЗ рдореА 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 рд╕реНрдерд┐рд░ рд╣рд╛рдд рд╕реЗрдЯ рдХрд░рдд рдЖрд╣реЗ

рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрдЯреЕрдЯрд┐рдХрд▓реА рдЕрд╕реЗрдВрдмрд▓ рдХреЗрд▓реЗрд▓реЗ рдХреНрдпреВрдореВ рдЙрджрд╛рд╣рд░рдг рд╣рд╡реЗ рдЖрд╣реЗ.

!!! рд▓рдХреНрд╖!!!
рдЖрдкрдг рдХрд╛рд╣реАрддрд░реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдВрдЯреЗрдирд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрд╣рд╛:
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 - рдЧрдВрднреАрд░ рдХрдВрдкрдиреНрдпрд╛ рд╢реНрд░реЗрдгреА рд╡рд┐рдХрдд рдШреЗрддрд╛рдд) рдореНрд╣рдгреВрди рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдЕрджреНрд╡рд┐рддреАрдп рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЕрд╕реВ рджреНрдпрд╛:

рдорд╛рдВрдЬрд░ / 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 рд╕рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдд рдЖрд╣реЗ
ARM рд╕рд╛рдареА Ubuntu rootfs рддрдпрд╛рд░ рдХрд░рдгреЗ
рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рд╕рд╛рдиреБрдХреВрд▓ рдЙрдмрдВрдЯреВ рд▓рд╛рдЗрд╡реНрд╣ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ
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