āĻ¯āĻāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻ¸āĻŦā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻā§āĻ¨ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻžāĻ°ā§āĻā§āĻ 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
āĻāĻŦāĻ āĻāĻāĻŋāĻ āĻ¸āĻŦ - āĻāĻŋāĻā§āĻā§āĻˇāĻŖ āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻ˛āĻā§āĻˇā§āĻ¯ āĻĢāĻžāĻ°ā§āĻŽāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻāĻĒāĻāĻ°āĻŖ
getdents64 āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž
āĻāĻ¤ā§āĻ¸: www.habr.com