рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП "рд╕реНрдХреНрд░реИрдЪ рд╕реЗ" рдПрдХ рдЙрдмрдВрдЯреВ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рдЬрдм рд╡рд┐рдХрд╛рд╕ рдЕрднреА рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝реНрд╕ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрд▓рдПрдлрдПрд╕, рдмрд┐рд▓реНрдбрд░реВрдЯ рдпрд╛ рдпреЛрдХреНрдЯреЛ (рдпрд╛ рдХреБрдЫ рдФрд░) рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЕрдореАрд░реЛрдВ рдХреЗ рд▓рд┐рдП (рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╛рдпрд▓рдЯ рдирдореВрдиреЛрдВ рдкрд░ 4 рдЬреАрдмреА рдИрдПрдордПрдорд╕реА рд╣реИ), рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдордп рдЧрд╛рдпрдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рддреБрд░рдВрдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдкреИрдХреЗрдЬ рд╕реВрдЪрд┐рдпрд╛рдВ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреАред

рдпрд╣ рдЖрд▓реЗрдЦ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢ рд╣реИред

рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдЖрд░рдПрдо рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдмрдВрдЯреВ рд░реВрдЯрдлрд╝реНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрд▓рд┐рдмреНрд░реА imx7d рдкрд░ рдЖрдзрд╛рд░рд┐рдд)ред

рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред

рдЙрдмрдВрдЯреВ рдмреЗрд╕ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ

рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рд╕реНрд╡рдпрдВ рдЪреБрдирддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ 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

chroot

рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

рдЪ-рдорд╛рдЙрдВрдЯ.рд╢

#!/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"

рдФрд░ рд╣рдо рд╣реЛрд╢рд┐рдпрд╛рд░реА рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ...

рдЖрд▓рд╕реА рддрд░реАрдХрд╛

рдЖрдЗрдП рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд▓реЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ (рдареАрдХ рд╣реИ, рдпрд╛ рдореИрдХ - рдЧрдВрднреАрд░ рдХрдВрдкрдирд┐рдпрд╛рдВ рд░реЗрдВрдЬ рдЦрд░реАрджрддреА рд╣реИрдВ):

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)
Qemu рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ chroot рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди
рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЙрдмрдВрдЯреВ рд░реВрдЯрдлрд╝реНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдЙрдмрдВрдЯреВ рд▓рд╛рдЗрд╡ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ
рдХреНрд░реЙрд╕рджреЗрд╡ рдХреНрдпреВрдореВ-рд╕реНрдЯреИрдЯрд┐рдХ-рдпреВрдЬрд░-рдХреНрд░реЛрдЯ
рдЖрджрд┐рдкрд╛рд▓

getdents64 рд╕рдорд╕реНрдпрд╛

readdir() 32-рдмрд┐рдЯ рд╣реЛрд╕реНрдЯ рдкрд░ 64-рдмрд┐рдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрдереИрддрд┐рдХ qemu рдХреЗ рд▓рд┐рдП NULL (errno=EOVERFLOW) рд▓реМрдЯрд╛рддрд╛ рд╣реИ
Ext4 64 рдмрд┐рдЯ рд╣реИрд╢ 32 рдмрд┐рдЯ glibc 2.28+ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ
QEMU рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдЗрдореНрдпреВрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп compiler_id_detection Armhf рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ
рд╕реАрдПрдордХреЗ рдХреНрдпреВрдореВ-рдЖрд░реНрдо рдХреЗ рддрд╣рдд рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рд╕реНрд░реЛрдд: www.habr.com