ΠΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ Π² ΡΠ΅Π»Π΅Π²ΡΡ rootfs.
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Ρ Π²Π°ΡΠ°ΡΡΡΡ Π·Π° LFS, buildroot ΠΈΠ»ΠΈ yocto (ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ) Π΅ΡΠ΅ ΡΠ°Π½ΠΎ, Π° Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ»Ρ Π±ΠΎΠ³Π°ΡΡΡ (Ρ ΠΌΠ΅Π½Ρ Π½Π° ΠΏΠΈΠ»ΠΎΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π·ΡΠ°Ρ 4GB eMMC) Π΅ΡΡΡ Π²ΡΡ ΠΎΠ΄ ΡΠ°Π·Π΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ΅Π³ΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ rootfs.
ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ Π½Π΅ Π½Π΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ Π½ΠΎΠ²ΠΈΠ·Π½Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠΎΡΡΡΡ copy-paste ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ.
Π¦Π΅Π»Ρ ΡΡΠ°ΡΡΠΈ ΡΠ±ΠΎΡΠΊΠ° Ubuntu rootfs Π΄Π»Ρ ARM Π±ΠΎΡΠ΄Ρ (Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° Π±Π°Π·Π΅ Colibri imx7d).
Π‘Π±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ°Π·Π°
Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ΅Π»Π΅Π²ΠΎΠΉ rootfs Π΄Π»Ρ ΡΠΈΡΠ°ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ Ubuntu Base
Π Π΅Π»ΠΈΠ· Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π΅ΡΡ Ρ ΠΏΡΠΈΠ²Π΅Π» 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 static arm
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ qemu ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
!!! ΠΠΠΠΠΠΠΠ!!!
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅Π³ΠΎ Π»ΠΈΠ±ΠΎ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ:
https://sourceware.org/bugzilla/show_bug.cgi?id=23960
https://bugs.launchpad.net/qemu/+bug/1805913
Π’ΠΎΠ³Π΄Π° Π΄Π»Ρ x86_64 host ΠΈ arm guest Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ i386 Π²Π΅ΡΡΠΈΡ qemu:
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
ΠΡΠΎΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ:
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
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΄ΡΠ°, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ. ΠΠ°Π³ΡΡΠ·ΡΠΈΠΊ, ΡΠ΄ΡΠΎ, ΠΌΠΎΠ΄ΡΠ»ΠΈ, device tree ΡΠ΅ΡΠ΅Π· Ubuntu ΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π½Π΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ. ΠΠ½ΠΈ ΠΏΡΠΈΠ΄ΡΡ ΠΊ Π½Π°ΠΌ ΠΈΠ·Π²Π½Π΅ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ ΠΈΠ»ΠΈ Π½Π°ΠΌ ΠΈΡ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π±ΠΎΡΠ΄Ρ, Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π·Π° Π³ΡΠ°Π½ΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, Π½ΠΎ Π»ΡΡΡΠ΅ Π²Π·ΡΡΡ ΠΈΡ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ°.
# 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 Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ autopush
ΠΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΡΠ°Π·Π΄Π°Π»ΠΈ ΠΌΡ Π½Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ, ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΡΠ»Π°, ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ° ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ etckeeper.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π»ΠΈΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ:
- ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠΈΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π²Π΅ΡΠΊΠΈ
- Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°
- Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ force push
- ΠΈ Ρ.Π΄. …
# ssh-keygen
# apt install etckeeper
# etckeeper init
# cd /etc
# git remote add origin ...
ΠΠ°ΡΡΡΠΎΠΈΠΌ autopush
ΠΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²Π΅ΡΠΊΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΠ»ΠΈ ΡΠ»ΡΠΆΠ±Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅).
# 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
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com