Debian 10

Скачиваем образ, хэш-сумму и подпись

wget --https-only https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/MD5SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/MD5SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA1SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA1SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA256SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA256SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso

В файле .zshrc есть alias под названием downloaddebianstable который загрузит образы Debian и проверит gpg-подписи с хэш-суммами (для этого потребуются программы exa, wget, date, sha1sum, md5sum). Ниже представлена подробная команда этого алиаса.

wget --https-only https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/MD5SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/MD5SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA1SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA1SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA256SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA256SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso && echo "\nChecking gpg keys ...\n" && gpg --keyserver keyring.debian.org --recv-keys 6294BE9B && gpg --fingerprint 6294BE9B && gpg --list-sigs 6294BE9B && gpg --verify MD5SUMS.sign MD5SUMS && gpg --verify SHA1SUMS.sign SHA1SUMS && gpg --verify SHA256SUMS.sign SHA256SUMS && gpg --verify SHA512SUMS.sign SHA512SUMS && md5sum --ignore-missing -c MD5SUMS && sha1sum --ignore-missing -c SHA1SUMS && sha512sum --ignore-missing -c SHA512SUMS && exa --all --classify --long --sort=modified --group-directories-first --bytes --group --header --links --inode --blocks --time=modified --time-style=long-iso --extended --git --color-scale

Проверка подписи

Чтобы удостовериться, что файлы с контрольными суммами сами по себе верны, используйте GnuPG для проверки их соответствия прилагаемым файлам с подписями (например, SHA512SUMS.sign). Все ключи, используемые для этих подписей, включены в набор ключей Debian GPG и лучший способ проверить их — использовать этот набор ключей для проверки через web of trust

gpg --keyserver keyring.debian.org --recv-keys 6294BE9B
gpg --fingerprint 6294BE9B
gpg --list-sigs 6294BE9B
gpg --verify MD5SUMS.sign MD5SUMS
gpg --verify SHA1SUMS.sign SHA1SUMS
gpg --verify SHA256SUMS.sign SHA256SUMS
gpg --verify SHA512SUMS.sign SHA512SUMS

Должно выдать что-то типо этого

gpg: key DA87E80D6294BE9B: 5 подписей не проверено за отсутствием ключа
gpg: ключ DA87E80D6294BE9B: "Debian CD signing key <debian-cd@lists.debian.org>" не изменен
gpg: Всего обработано: 1
gpg:                   неизмененных: 1
pub   rsa4096 2011-01-05 [SC]
      DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B
uid         [ неизвестно ] Debian CD signing key <debian-cd@lists.debian.org>
sub   rsa4096 2011-01-05 [E]

pub   rsa4096 2011-01-05 [SC]
      DF9B9C49EAA9298432589D76DA87E80D6294BE9B
uid         [ неизвестно ] Debian CD signing key <debian-cd@lists.debian.org>
sig          8F638F961B3045CE 2011-01-07  [Идентификатор пользователя не найден]
sig          587979573442684E 2011-01-05  [Идентификатор пользователя не найден]
sig          7F55BB12A40F862E 2011-01-05  [Идентификатор пользователя не найден]
sig          C5CE5DC2C542CD59 2011-01-05  [Идентификатор пользователя не найден]
sig          4DE8FF2A63C7CC90 2011-01-05  [Идентификатор пользователя не найден]
sig 3        DA87E80D6294BE9B 2011-01-05  Debian CD signing key <debian-cd@lists.debian.org>
sub   rsa4096 2011-01-05 [E]
sig          DA87E80D6294BE9B 2011-01-05  Debian CD signing key <debian-cd@lists.debian.org>

gpg: Подпись сделана Вс 09 фев 2020 05:01:04 MSK
gpg:                ключом RSA с идентификатором DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Действительная подпись пользователя "Debian CD signing key <debian-cd@lists.debian.org>" [неизвестно]
gpg: Внимание: Данный ключ не заверен доверенной подписью!
gpg:           Нет указаний на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B
gpg: Подпись сделана Вс 09 фев 2020 05:01:04 MSK
gpg:                ключом RSA с идентификатором DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Действительная подпись пользователя "Debian CD signing key <debian-cd@lists.debian.org>" [неизвестно]
gpg: Внимание: Данный ключ не заверен доверенной подписью!
gpg:           Нет указаний на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B
gpg: Подпись сделана Вс 09 фев 2020 05:01:05 MSK
gpg:                ключом RSA с идентификатором DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Действительная подпись пользователя "Debian CD signing key <debian-cd@lists.debian.org>" [неизвестно]
gpg: Внимание: Данный ключ не заверен доверенной подписью!
gpg:           Нет указаний на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B
gpg: Подпись сделана Вс 09 фев 2020 05:01:05 MSK
gpg:                ключом RSA с идентификатором DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Действительная подпись пользователя "Debian CD signing key <debian-cd@lists.debian.org>" [неизвестно]
gpg: Внимание: Данный ключ не заверен доверенной подписью!
gpg:           Нет указаний на то, что подпись принадлежит владельцу.
Отпечаток первичного ключа: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B

Проверяем хэш-суммы

md5sum --ignore-missing -c MD5SUMS
sha1sum --ignore-missing -c SHA1SUMS
sha512sum --ignore-missing -c SHA512SUMS

Должно выдать что-то типо этого

debian-10.3.0-amd64-netinst.iso: ЦЕЛ
debian-10.3.0-amd64-netinst.iso: ЦЕЛ
debian-10.3.0-amd64-netinst.iso: ЦЕЛ

Записываем на флэшку с помощью Rufus или Etcher

Вставляем флэшку, определяем её и форматируем

Раздел флэшки (в данном примере это /dev/sdd1) должен быть отформатирован в FAT32.

sudo fdisk -l | sudo grep /dev/sd
sudo df | sudo grep /dev/sd
sudo lsblk
sudo umount /dev/sdd1
sudo mkfs.vfat -n 'debian' -I /dev/sdd1

Дальше можно воспользоваться Etcher или Rufus

При установке системы задаём

Имя компьютера: book

Имя пользователя: me

При установке выбираем устанавливать только "Стандартные системные утилиты" и больше ничего.

Логинимся из под root

su -

Добавляем пользователя me в группу sudo и другие нужные группы

id me
usermod -a -G sudo,adm,cdrom,lp,systemd-journal,plugdev,netdev,audio,video,disk,dialout,dip me
id me

Ставим необходимый минимум

apt update && apt install sudo curl wget vim apt-transport-https ca-certificates gnupg2 software-properties-common dirmngr software-properties-gtk tor apt-transport-tor module-assistant build-essential debian-archive-keyring python3-software-properties debconf-utils git stow openssl xclip cmake pkg-config gdebi lsb-release -y

Смотрим версию и ядро Debian

cat /etc/os-release && uname -a

Перезагружаемся

shutdown -r 0

Входим из под пользователя me и сразу обновляем систему

sudo apt update && sudo apt upgrade -y && sudo apt full-upgrade -y && sudo apt autoremove -y

Ставим Xorg и i3wm c терминалом kitty

sudo apt update && sudo apt install i3 i3lock-fancy i3-wm dunst i3lock i3status suckless-tools i3blocks pluma nemo nemo-fileroller nemo-gtkhash nemo-nextcloud ranger nnn xorg rofi kitty kitty-terminfo kitty-doc htop iotop net-tools git git-man git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn xclip jq grep zsh nitrogen fzf tmux tmux-plugin-manager tmuxinator tmuxp catfish chromium linux-headers-$(uname -r) -y

Правим /etc/apt/sources.list

sudo -i
sudo sh -c 'echo "deb https://deb.debian.org/debian/ $(lsb_release -sc) main contrib non-free\ndeb-src https://deb.debian.org/debian/ $(lsb_release -sc) main contrib non-free\ndeb https://deb.debian.org/debian/ $(lsb_release -sc)-updates main contrib non-free\ndeb-src https://deb.debian.org/debian/ $(lsb_release -sc)-updates main contrib non-free\ndeb https://deb.debian.org/debian-security $(lsb_release -sc)/updates main\ndeb-src https://deb.debian.org/debian-security $(lsb_release -sc)/updates main\ndeb https://deb.debian.org/debian $(lsb_release -sc)-backports main contrib non-free\ndeb-src https://deb.debian.org/debian $(lsb_release -sc)-backports main contrib non-free" > /etc/apt/sources.list'
exit

Полезные ссылки:

Why does APT not use HTTPS?

Why there is no https transport for debian apt tool?

Debian Sources List Generator

SourcesList

SecureApt

Создание любой папки с tmpfs в ОЗУ

sudo -i
mkdir /home/me/ram
groupadd tmpdriveusers
usermod -a -G tmpdriveusers me

Меняем владельца папки /home/me/ram и даем группе tmpdriveusers права на запись

chown root:tmpdriveusers /home/me/ram
chmod 777 /home/me/ram

Создаем новый ram-диск в папке /home/me/ram

sudo printf "tmpfs /home/me/ram tmpfs nodev,nosuid,size=16G 0 0" >> /etc/fstab

Добавляем в конец файла /etc/fstab такую строку, параметр size означает сколько нужно выделить из оперативной памяти под RAM диск, в данном случае это 16gb - то есть всю ОЗУ.

Перезапускаем систему

sudo shutdown -r 0

После перезагрузки убеждаемся в том, что RAM-диск смонтирован и к нему есть доступ. В листинге команды mount должна присутствовать строка “tmpfs on /home/me/ram type tmpfs (rw)”.

sudo mount | grep ram

Убедиться в том, что ram-disk реально доступен для записи обычному пользователю, можно создав на нём новый файл

echo hi-akimdi > /home/me/ram/temp.txt && cat /home/me/ram/temp.txt

При выключении компьютера ОЗУ очищается и всё что находилось в этой папке будет удалено!

Установка KeePassXC

wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage https://github.com/keepassxreboot/keepassxc/releases/download/$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage
wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.DIGEST https://github.com/keepassxreboot/keepassxc/releases/download/$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.DIGEST
wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.sig https://github.com/keepassxreboot/keepassxc/releases/download/$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.sig
cd /home/me/ram
shasum -a 256 -c /home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.DIGEST
gpg --fetch-keys https://keepassxc.org/keepassxc_master_signing_key.asc

Проверяем GPG подпись

gpg --verify /home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage.sig /home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage
mv -v /home/me/ram/KeePassXC-$(curl -Ls https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest | jq -r ".tag_name")-x86_64.AppImage /home/me/ram/keepassxc.AppImage
cp -v /home/me/ram/keepassxc.AppImage /home/me/keepassxc.AppImage
sudo chmod a+rx /home/me/keepassxc.AppImage
sudo rm -r -f -v /home/me/ram/KeePassXC-*-x86_64.AppImage.DIGEST /home/me/ram/KeePassXC-*-x86_64.AppImage.sig /home/me/ram/keepassxc.AppImage

Открываем базу данных KeepassXC

/home/me/keepassxc.AppImage

В настройках KeepassXC разрешаем запуск ssh-agent (потребуется перезапук)

Тестируем SSH-соединение

ssh -T git@github.com

Скачиваем последнюю версию Chezmoi

sudo wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/chezmoi.deb https://github.com/twpayne/chezmoi/releases/download/v$(curl -sL https://api.github.com/repos/twpayne/chezmoi/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//")/chezmoi_$(curl -sL https://api.github.com/repos/twpayne/chezmoi/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//")_linux_amd64.deb
sudo apt update && sudo apt install /home/me/ram/chezmoi.deb -y
sudo rm -v /home/me/ram/chezmoi.deb

Установливаем zsh качестве оболочки по-умолчанию для root

sudo -i
sudo chsh -s /bin/zsh

Установка ZSH пользователю me

sudo usermod me -s /usr/bin/zsh
exit

Установка Antigen

wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/antigen.zsh https://github.com/zsh-users/antigen/releases/download/v$(curl -sL https://api.github.com/repos/zsh-users/antigen/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//")/antigen.zsh
cp --verbose /home/me/ram/antigen.zsh /home/me
rm -v /home/me/ram/antigen.zsh

Установка ccat

sudo wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/ccat-linux-amd64.tar.gz $(curl -sL https://api.github.com/repos/jingweno/ccat/releases/latest | jq -r ".assets[].browser_download_url" | grep linux | grep amd64)
sudo tar -xvzf /home/me/ram/ccat-linux-amd64.tar.gz -C /home/me/ram
sudo cp --verbose /home/me/ram/linux-amd64-*/ccat /usr/local/bin
sudo chmod a+rx /usr/local/bin/ccat
sudo rm -r -f -v /home/me/ram/linux-amd64-*
sudo rm -r -f -v /home/me/ram/ccat-linux-amd64.tar.gz

Устанавливаем git-extras чтобы получить дополнительные команды Git

sudo git clone --verbose https://github.com/tj/git-extras.git /home/me/ram/git-extras
cd /home/me/ram/git-extras
sudo git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
sudo make install
sudo wget --no-cache --no-cookies --https-only --output-document=/usr/share/git-core/git-extras-completion.zsh https://raw.githubusercontent.com/tj/git-extras/master/etc/git-extras-completion.zsh
cd /home/me/ram
sudo rm -r -f -v /home/me/ram/git-extras

Настройка chezmoi

Это действие создаст chezmoi репозиторий в папке /home/me/.local/share/chezmoi

chezmoi -v init git@github.com:akimdi/dotfiles.git

Этой командой можно увидеть что будет изменено, прежде чем применить изменения

chezmoi -v diff

Эта команда проверит репозиторий и любые его подмодули и при необходимости создаст конфигурационный файл chezmoi и применит склонированный репозиторий в систему, то есть dotfiles которые будут в репозитории будут аналогичными и в системе

chezmoi -v apply

Последняя команда выполняет git pull из репозитория с dotfiles и одновременно применяет все изменения в систему, то есть по сути команда chezmoi update это git pull + chezmoi apply

chezmoi -v update

Устанавливаем необходимые пакеты из списка в файле

cat /home/me/packages.txt | xargs sudo apt install -y

Настраиваем JDK и Go

sudo update-java-alternatives --set java-1.11.0-openjdk-amd64 --verbose
sudo mkdir -p /usr/share/desktop-directories
mkdir -p /home/me/go
java -version
java -fullversion
javac -version
javac -fullversion
java -Xinternalversion
gccgo --version
go env
go version

Установка Nerd Fonts

git clone --depth 1 --verbose https://github.com/ryanoasis/nerd-fonts.git /home/me/ram/nerd
chmod +x /home/me/ram/nerd/install.sh
/home/me/ram/nerd/install.sh
fc-list | ag terminess
fc-list | ag hack
sudo rm -r -f -v /home/me/ram/nerd

Шрифты установятся в папку /home/me/.local/share/fonts/NerdFonts

Перезагружаемся

sudo shutdown -r 0

Установка SpaceVim

curl -sLf https://spacevim.org/install.sh | bash

Следует обязательно запустить SpaceVim чтобы установились необходимые плагины

vim

Файл настроек SpaceVim лежит в /home/me/.SpaceVim.d/init.toml

Проверка обновления микрокода Intel

sudo dmesg | sudo ag microcode

Должно выдать что-то похожее на следующее, что указывает на то, что микрокод обновляется при ранней загрузке

[    0.000000] CPU0 microcode updated early to revision 0x1b, date = 2014-05-29
[    0.221951] CPU1 microcode updated early to revision 0x1b, date = 2014-05-29
[    0.242064] CPU2 microcode updated early to revision 0x1b, date = 2014-05-29
[    0.262349] CPU3 microcode updated early to revision 0x1b, date = 2014-05-29
[    0.507267] microcode: CPU0 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507272] microcode: CPU1 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507276] microcode: CPU2 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507281] microcode: CPU3 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507286] microcode: CPU4 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507292] microcode: CPU5 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507296] microcode: CPU6 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507300] microcode: CPU7 sig=0x306a9, pf=0x2, revision=0x1b
[    0.507335] microcode: Microcode Update Driver: v2.2.

Установка Rust и Сargo

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Выбираем опцию Customize installation и прописываем установку toolchain stable и Modify PATH variable? (no)

info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

It will add the cargo, rustc, rustup and other commands to
Cargo's bin directory, located at:

  /home/me/.cargo/bin

This can be modified with the CARGO_HOME environment variable.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/me/.rustup

This can be modified with the RUSTUP_HOME environment variable.

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/me/.profile
/home/me/.zprofile

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>2

I'm going to ask you the value of each of these installation options.
You may simply press the Enter key to leave unchanged.

Default host triple?


Default toolchain? (stable/beta/nightly/none)
stable

Profile (which tools and data to install)? (minimal/default/complete)
default

Modify PATH variable? (y/n)
n    


Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable
               profile: default
  modify PATH variable: no

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

info: profile set to 'default'
info: setting default host triple to x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2020-01-30, rust version 1.41.0 (5e1a79984 2020-01-27)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
 12.0 MiB /  12.0 MiB (100 %)  11.1 MiB/s in  1s ETA:  0s
info: downloading component 'rust-std'
 17.5 MiB /  17.5 MiB (100 %)  11.0 MiB/s in  1s ETA:  0s
info: downloading component 'rustc'
 57.9 MiB /  57.9 MiB (100 %)  11.1 MiB/s in  5s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
 12.0 MiB /  12.0 MiB (100 %)   8.7 MiB/s in  1s ETA:  0s
info: installing component 'rust-std'
 17.5 MiB /  17.5 MiB (100 %)  17.1 MiB/s in  1s ETA:  0s
info: installing component 'rustc'
 57.9 MiB /  57.9 MiB (100 %)  12.4 MiB/s in  4s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable'

  stable installed - rustc 1.41.0 (5e1a79984 2020-01-27)

Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable.

To configure your current shell run source $HOME/.cargo/env

Если вы установили предыдущую версию Rust средствами rustup, то для обновления до его последней версии версии, вам достаточно выполнить следующую команду

rustup update stable

Чтобы убедиться, что установка прошла успешно, можно воспользоваться командой, которая выводит версию Cargo

cargo --version
rustc --version

Установка ripgrep-all

cargo install ripgrep_all

cargo install click

Установка vimiv-gtk

Внимание ⚠️

Версия vimiv-gtk является устаревшей и разработчики переписали её на qt. Поэтому релиз v0.9.1 является последним и больше не будет разрабатываться. В будущем когда версия vimiv-qt достигнет стабильной версии 1.0 и будет готова, нужно будет переписать установку vimiv под qt.

Ссылка на новый репозиторий версия vimiv-qt.

wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/v0.9.1.tar.gz https://github.com/karlch/vimiv/archive/v0.9.1.tar.gz
tar -xvzf /home/me/ram/v0.9.1.tar.gz -C /home/me/ram
cd /home/me/ram/vimiv-0.9.1
sudo make install
cd /home/me/ram
sudo rm -r -f -v /home/me/ram/vimiv-0.9.1

Установка Axel

Внимание ⚠️

Интегрировать установку и обновление Axel в алиас fullupgrade. Так как после установки он не обновляется больше.

wget --no-cache --no-cookies --https-only --output-document=/home/me/ram/axel.tar.gz https://github.com/axel-download-accelerator/axel/releases/download/v$(curl -sL https://api.github.com/repos/axel-download-accelerator/axel/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//")/axel-$(curl -sL https://api.github.com/repos/axel-download-accelerator/axel/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//").tar.gz
tar -xvzf /home/me/ram/axel.tar.gz -C /home/me/ram
cd /home/me/ram/axel-$(curl -sL https://api.github.com/repos/axel-download-accelerator/axel/releases/latest | jq -r ".tag_name" | sed -e "s/^.\{1\}//")
./configure
make
sudo make install

Установка Wire

sudo -i
sudo printf "deb [arch=amd64] https://wire-app.wire.com/linux/debian stable main" > /etc/apt/sources.list.d/wire.list
sudo wget -q https://wire-app.wire.com/linux/releases.key -O- | sudo apt-key add -
sudo apt update
sudo apt install wire-desktop -y
sudo printf "deb [arch=amd64] https://wire-app.wire.com/linux/debian stable main" > /etc/apt/sources.list.d/wire.list
exit

Установка aws-cli

sudo pip3 install awscli

Установка Docker

sudo apt update
sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Убедитесь что есть ключ с отпечатком 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

sudo apt-key fingerprint 0EBFCD88
sudo sh -c 'echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list'
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
sudo sh -c 'echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list'
sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo systemctl status docker.service
sudo usermod -aG docker me

Настраиваем драйвер хранения docker

sudo vim /etc/docker/daemon.json

Прописываем следущее чтобы использовать overlay2

{
  "storage-driver": "overlay2"
}

А также есть всеми любимый список Awesome Docker

Установка happyfinder

go get -u -v github.com/hugows/hf

Настройка отображения кодировки в текстовых редакторах

gedit или xed открывает текстовые файлы в неправильной кодировке. Выполняем в терминале gconf-editor (запомните это приложение, оно полезное), идем в /apps/gedit-2/preferences/encodings. Двойной клик по ключу auto-detected, поднимаем на самый верх пункт CURRENT. Двойной клик по ключу shown-in-menu, поднимаем на самый верх пункты UTF-8 и WINDOWS-1251. P.S. для Ubuntu и Mint нужно сделать через sudo apt-get install dconf-editor -y

Для редактора gedit

gsettings set org.gnome.gedit.preferences.encodings candidate-encodings "['UTF-8', 'WINDOWS-1251', 'KOI8-R', 'CURRENT', 'ISO-8859-15', 'UTF-16']"

Для редактора pluma

gsettings set org.mate.pluma auto-detected-encodings "['UTF-8', 'WINDOWS-1251', 'CURRENT', 'ISO-8859-15', 'UTF-16']"

Настройка web-камеры

sudo ls -ltrh /dev/* | sa video
v4l2-ctl --list-devices
qv4l2

Настройка PulseAudio

Создаём общесистемный файл

sudo vim /etc/asound.conf

Пишем следующие строки, что бы PulseAudio использовался по-умолчанию

pcm.!default {
    type pulse
}

ctl.!default {
     type pulse
}

При некоторых ошибках установки alsa отключает звук всех каналов и устанавливает для всех громкость 0. Запустите программу командной строки alsamixer и включите звук (нажмите m) и измените громкость каналов, которые вас интересуют (используйте клавиши со стрелками для навигации и изменения громкости). Вы можете включить звук предпочтительно Master и PCM каналов.

Системы объемного звука. Многие люди имеют многоканальные звуковые карты, но используют акустические системы для двух каналов. PulseAudio не имеет настроек по умолчанию для поддержки объемного звука. Для включения поддержки все каналов отредактируйте файл /etc/pulse/daemon.conf: раскомментируйте строку default-sample-channels (т.е. удалите точку с запятой в начале строки) и установите значение в 6 если у Вас система 5.1, или в 8, если у Вас система 7.1.

Тогда редактируем файл

sudo vim /etc/pulse/daemon.conf

Нужно расскоментировать строку

default-sample-channels = 2

После внесения изменений необходимо перезапустить Pulseaudio.

Полезные ссылки

https://help.ubuntu.ru/wiki/pulseaudio https://wiki.debian.org/ru/PulseAudio https://wiki.archlinux.org/index.php/PulseAudio https://wiki.archlinux.org/index.php/PulseAudio/Examples https://wiki.debian.org/AlsaMixer

Настраиваем виртуальную машину через QEMU и libvirt

qemu-img create -f qcow2 debian-deploy.qcow2 128G

-f указывает на формат файла, лучше использовать формат qcow2 родной для QEMU, так как qcow2 формат записи образа виртуальных машины с поддержкой сжатия, снапшотов и шифрования. Кроме того qcow2 образ занимает столько места, сколько данных записано в него виртуальной машиной, вне зависимости от размера созданного изначально при создании.

debian-deploy.qcow2 это имя нашего файла образа.

128G это размер файла для образа, в данном примере 128 гигабайт.

После выполнения данной команды будет такое сообщение

Formatting 'debian-deploy.qcow2', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off

Установка ISO образа в QEMU

Сначала нам надо запустить ISO образ в QEMU, затем проинсталлировать и потом уже использовать полученную виртуальную систему.

qemu-system-x86_64 -cpu IvyBridge -enable-kvm -hda debian-deploy.qcow2 -cdrom /home/me/projects/vm/debian-deploy/debian-10.2.0-amd64-netinst.iso -boot d -m 4096

-cpu IvyBridge это опция отвечающая за эмуляцию командных инструкций процессоров под кодовым названием IvyBridge. В принципе вы можете узнать какие еще процессора поддерживает qemu и выбрать свой.

-enable-kvm = включаем поддержку kvm ядра. Если мы не включим эту опцию, то qemu будет запущен без использования kvm.

-hda debian-deploy.qcow2 это указываем какой файл образ будем использовать. Выше было описано, как его создавать.

-cdrom /home/me/projects/vm/debian-deploy/debian-10.2.0-amd64-netinst.iso это опция указывает, что мы будем использовать ISO образ который находится виртуально на устройстве cdrom.

-boot d это указывает, что грузиться qemu будет с cdrom (т.е. с нашего ISO образа) но буква d говорит о том, что ISO образ находится не в приводе cdrom, а на жестком диске.

-m 4096 это указывает, сколько памяти будет выделено под работу qemu. В данном примере 4 Гигабайта.

Запуск виртуальной ОС в QEMU

qemu-system-x86_64 -cpu IvyBridge -enable-kvm -hda debian-deploy.qcow2 -m 4096

Отличие данной строки запуска, от строки запуска с ISO образом в том, что в первом случае мы указываем параметр: -cdrom /home/me/projects/vm/debian-deploy/debian-10.2.0-amd64-netinst.iso и -boot d. Здесь, же нам это не требуется, т.к. уже имеется файл с установленной виртуальной системой.

Просмотр информации об образе системы

qemu-img info debian-deploy.qcow2

Добавляем текущего пользователя me пользователя в группу kvm

sudo gpasswd -a me kvm

или же можно сделать вот так

sudo gpasswd -a $(whoami) kvm

В зависимости от процессора Intel или AMD, прописываем модуль ядра в /etc/modules-load.d/kvm.conf

sudo vim /etc/modules-load.d/kvm.conf
kvm_intel

Или что бы не вписывать можно скачать конфигурационный файл kvm.conf (файл предназначен только для машин работающих под управлением процессоров Intel)

sudo wget --https-only --output-document=/etc/modules-load.d/kvm.conf https://raw.githubusercontent.com/akimdi/help-install-arch/master/kvm.conf

Подгружаем модули ядра kvm_intel или kvm_amd в зависимости от процессора Intel или AMD

sudo modprobe kvm_intel

Запускаем и устанавливаем в автозагрузку libvirtd

sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo systemctl status libvirtd

Создаём группу пользователей libvirt

sudo groupadd libvirt

Добавляем пользователя me в группу libvirt

sudo gpasswd -a me libvirt
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo systemctl status libvirtd

Просмотр всех сетей в virsh

sudo virsh net-list --all

sudo virsh net-start default

virsh net-autostart default

virsh net-info default

virt-manager

Важно знать что после установки, в гостевую систему нужно установить пакет spice-vdagent. Например для Debian он находится здесь. Для ArchLinux здесь. Для Windows здесь.

Eсли хотим подключить shared folder в гостевую систему нужно запустить virt-manager, открыть свою виртуальную машину, дважды щелкнув по ней. Нажать на детали виртуального оборудования (лампочка). Далее «Добавить оборудование» и выбрать файловую систему. Драйвер выбираем Path. Режим Mapped. Правила записи Immediate. Указываем путь на хостовой и на гостевой системах.

А также обязательно выставляем видеодрайвер Virtio чтобы не было проблем с 3D графикой

В гостевой системе создаём папку и монтируем её

mkdir -p /home/me/projects
sudo mount -t 9p -o trans=virtio,version=9p2000.L /home/me/projects /home/me/projects

Для автомонтирования при загрузке системы, следует прописать следующие стоки в файле /etc/fstab

sudo vim /etc/fstab
/home/me/projects /home/me/projects 9p noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,x-systemd.idle-timeout=0,trans=virtio,version=9p2000.L,rw 0 0

Так как гостевая система работает от имени libvirt-qemu пользователя, а настройки ACL ограничивают разрешения этого пользователя, на хостовой операционной системе следует выполнить следующие команды

sudo chmod -R 777 /home/me/projects
sudo chown -R me:me /home/me/projects
sudo chmod -R 777 /var/lib/libvirt/images
sudo chown -R me:me /var/lib/libvirt/images
sudo groupadd libvirt
sudo usermod -G libvirt -a me
sudo groupadd libvirtd
sudo usermod -a -G libvirtd me
sudo useradd libvirt-qemu
sudo usermod -a -G libvirt-qemu me
sudo useradd kvm
sudo usermod -a -G kvm me
sudo setfacl -R -m u:libvirt-qemu:rwx /home/me/projects
sudo chown -R me:me /home/me/projects

Для гостевой Windows инструкция здесь

Для подключения по SSH нужно на гостевой системе узнать IP

sudo ip a

Должно выдать что-то типо этого

enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:e3:07:bc brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.106/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
       valid_lft 3366sec preferred_lft 3366sec
    inet6 fe80::5054:ff:fee3:7bc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Далее на хостовой системе уже выполняем подключение

Конкретно в этом примере IP 192.168.122.106

ssh -p 22 me@192.168.122.106

Полезные ссылки:

How to change the default Storage Pool from libvirt

Easy instructions to get QEMU/KVM and virt-manager up and running on Arch

Virt Tools Blog Planet

Коротко о том что и где принято хранить:

*/var/lib/libvirt/boot — ISO-образы для установки гостевых систем.*

*/var/lib/libvirt/images — образы жестких дисков гостевых систем.*

*/var/log/libvirt — здесь следует искать все логи.*

*/etc/libvirt — каталог с файлами конфигурации.*

Далее можно установить виртуалку, а в качестве начального пособия рекомендую статью от Александра Алексеева https://eax.me/kvm

Далее по-желанию можно настроить системные уведомления через Dunst

Ставим расширения для Firefox

Adguard

Firefox Multi-Account Containers

Block Site

CanvasBlocker

Container proxy

FoxyTab

Copy PlainText

Decentraleyes

DuckDuckGoogle

Don't touch my tabs

Don't track me Google

LanguageTool

User-Agent Switcher and Manager

uMatrix

Temporary Containers

Tabby - Window & Tab Manager

Privacy Possum

NoScript Security Suite

KeePassXC-Browser

Iridium for YouTube

Privacy Badger

HTTPS Everywhere

Hide Tabs

Google Redirects Fixer & Tracking Remover

Google search link fix

FoxyProxy Standard

Flagfox

Emoji Cheatsheet

ClearURLs

Smart HTTPS

Forget Me Not - Forget cookies & other data

Containerise

Last updated