рдЬрдм рд╡рд┐рдХрд╛рд╕ рдЕрднреА рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝реНрд╕ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрд▓рдПрдлрдПрд╕, рдмрд┐рд▓реНрдбрд░реВрдЯ рдпрд╛ рдпреЛрдХреНрдЯреЛ (рдпрд╛ рдХреБрдЫ рдФрд░) рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЕрдореАрд░реЛрдВ рдХреЗ рд▓рд┐рдП (рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╛рдпрд▓рдЯ рдирдореВрдиреЛрдВ рдкрд░ 4 рдЬреАрдмреА рдИрдПрдордПрдорд╕реА рд╣реИ), рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдордп рдЧрд╛рдпрдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рддреБрд░рдВрдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдкреИрдХреЗрдЬ рд╕реВрдЪрд┐рдпрд╛рдВ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреАред
рдпрд╣ рдЖрд▓реЗрдЦ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рдВрдпреЛрдЬрди рд╣реИред Ubuntu ARM рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЯрдПрдлрдПрд╕ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрд▓рд┐рдмреНрд░реА imx7d рдкрд░ рдЖрдзрд╛рд░рд┐рдд)ред
рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рд░реВрдЯрдлрд╝ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред
рдЦреЛрд▓ Ubuntu рдЖрдзрд╛рд░
рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рд╕реНрд╡рдпрдВ рдЪреБрдирддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ 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 рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
!!! рдзреНрдпрд╛рди!!!
рдпрджрд┐ рдЖрдк рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рджреЗрдЦреЗрдВ:
рдлрд┐рд░ x86_64 рд╣реЛрд╕реНрдЯ рдФрд░ рдЖрд░реНрдо рдЧреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ qemu рдХреЗ i386 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
$ 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, strippedchroot
рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
рдЪ-рдорд╛рдЙрдВрдЯ.рд╢
#!/bin/bash
function mnt() {
echo "MOUNTING"
sudo mount -t proc /proc ${2}proc
sudo mount --rbind /sys ${2}sys
sudo mount --make-rslave ${2}sys
sudo mount --rbind /dev ${2}dev
sudo mount --make-rslave ${2}dev
sudo mount -o bind /dev/pts ${2}dev/pts
sudo chroot ${2}
}
function umnt() {
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev/pts
sudo umount ${2}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 : ${1}
echo 2nd parameter : ${2}
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рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рдСрдЯреЛрдкреБрд╢ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдЯрдХреАрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдареАрдХ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреА рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рддрд░рд┐рдд рдХрд░ рджреА, рдХрд╛рдо рдЪрд▓ рдЧрдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЖрджрд┐рдХреАрдкрд░ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖ рд╕рдХрддрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд╣рд░ рдХрд┐рд╕реА рдХрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИ:
- рдЖрдк рдХреБрдЫ рд╢рд╛рдЦрд╛рдУрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
- рдмрд▓ рдзрдХреНрдХрд╛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
- рд╡рдЧреИрд░рд╣ред тАж
# 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
