рдЬрдм рд╡рд┐рдХрд╛рд╕ рдЕрднреА рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝реНрд╕ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрд▓рдПрдлрдПрд╕, рдмрд┐рд▓реНрдбрд░реВрдЯ рдпрд╛ рдпреЛрдХреНрдЯреЛ (рдпрд╛ рдХреБрдЫ рдФрд░) рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЕрдореАрд░реЛрдВ рдХреЗ рд▓рд┐рдП (рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╛рдпрд▓рдЯ рдирдореВрдиреЛрдВ рдкрд░ 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
рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реА - рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рдХреНрд╖реНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рд╛рдордЧреНрд░реА
getdents64 рд╕рдорд╕реНрдпрд╛
рд╕реНрд░реЛрдд: www.habr.com