Ubuntu แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ ARM-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก "แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ"

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ, แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒแƒฃแƒ แƒ™แƒ•แƒ”แƒ•แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ“แƒ˜แƒก แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” rootf-แƒ”แƒ‘แƒ–แƒ”.

แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒœแƒแƒแƒ“แƒ แƒ”แƒ•แƒ˜แƒ LFS-แƒ˜แƒก, buildroot-แƒ˜แƒก แƒแƒœ yocto-แƒก (แƒแƒœ แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ˜แƒก) แƒฎแƒ”แƒšแƒจแƒ˜ แƒฉแƒแƒ’แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒ›แƒ“แƒ˜แƒ“แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒ” แƒ›แƒแƒฅแƒ•แƒก 4 GB eMMC แƒกแƒแƒžแƒ˜แƒšแƒแƒขแƒ” แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒ–แƒ”) แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ แƒแƒ› แƒ’แƒแƒแƒ•แƒ แƒชแƒ”แƒšแƒแƒœ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒ›แƒแƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒ˜แƒแƒฌแƒแƒ“แƒแƒœ แƒ˜แƒก, แƒ แƒแƒช แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒแƒ™แƒšแƒ˜แƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒฉแƒ•แƒ”แƒœ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒ˜แƒ. แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” rootfs.

แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒแƒฎแƒแƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ-แƒžแƒแƒกแƒขแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ.

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ Ubuntu rootf-แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ ARM แƒ“แƒแƒคแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒฉแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, Colibri imx7d-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜).

แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ— แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” rootf-แƒ”แƒ‘แƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

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 แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒ™แƒšแƒแƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ 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

แƒฉแƒ แƒแƒขแƒ˜

แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜:

แƒฉ-แƒ›แƒ—แƒ.แƒจ

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

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒชแƒแƒšแƒ™แƒ” แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒ. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒฉแƒแƒ›แƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ”แƒšแƒก, แƒ‘แƒ˜แƒ แƒ—แƒ•แƒก, แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒก, แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒฎแƒ”แƒก 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 แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ—

แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ’แƒแƒ•แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ, แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ˜แƒšแƒ˜แƒงแƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜.

แƒ.แƒจ.-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒ’แƒ•แƒ”แƒฎแƒ›แƒแƒ แƒแƒก.

แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒกแƒแƒฅแƒ›แƒ”แƒ:

  • แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒชแƒ•แƒแƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒขแƒแƒขแƒ”แƒ‘แƒ˜
  • แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒซแƒแƒšแƒ˜แƒก แƒ‘แƒ˜แƒซแƒ’แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ
  • แƒ“แƒ แƒ.แƒจ. ...
# 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

แƒ“แƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ - แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” firmware-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜

BINFMT_MISC
แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒคแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (binfmt_misc)
แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ qemu แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก chroot-แƒ˜แƒ—
Ubuntu rootf-แƒ”แƒ‘แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ ARM-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ Ubuntu แƒชแƒแƒชแƒฎแƒแƒšแƒ˜ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ
Crossdev qemu-static-user-chroot
แƒ.แƒจ

getdents64 แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ

readdir() แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก NULL-แƒก (errno=EOVERFLOW) 32-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ qemu-แƒกแƒ—แƒ•แƒ˜แƒก 64-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœ แƒฐแƒแƒกแƒขแƒ–แƒ”
Ext4 64 แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒฐแƒ”แƒจแƒ˜ แƒแƒ แƒฆแƒ•แƒ”แƒ•แƒก 32 แƒ‘แƒ˜แƒขแƒ˜แƒแƒœ glibc 2.28+
compiler_id_detection แƒ•แƒ”แƒ  แƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ armhf-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก QEMU แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก
CMake แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒฌแƒแƒ แƒแƒ“ qemu-arm-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ

แƒฌแƒงแƒแƒ แƒ: www.habr.com