Arch linux мануал по установке

Состояние перевода: На этой странице представлен перевод статьи Installation guide. Дата последней синхронизации: 3 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Этот документ является руководством по установке Arch Linux с помощью системы, загруженной с официальным установочным образом. Данный образ включает в себя специальные возможности, описанные на странице Install Arch Linux with accessibility options. Также на странице Category:Installation process доступны альтернативные методы установки.

Перед установкой рекомендуется прочитать часто задаваемые вопросы. Чтобы получить разъяснения по понятиям, используемым на этой странице, смотрите статью Help:Чтение. В частности, примеры кода могут содержать заполнители (отформатированные в курсиве), которые необходимо заменить вручную.

Более подробные инструкции приведены в соответствующих статьях ArchWiki и на страницах справочных руководств (man) различных программ. Ссылки и на то, и на другое присутствуют в этом руководстве. Также вы можете получить помощь в IRC-канале и на англоязычном и русскоязычном форумах Arch Linux.

Arch Linux способен работать на любой x86_64-совместимой машине, имеющей хотя бы 512 МиБ ОЗУ, однако понадобится больше памяти для загрузки live-системы.[1] Базовая установка занимает меньше 2 ГиБ дискового пространства. Поскольку для процесса установки требуется получать пакеты из удалённого репозитория, необходимо работающее интернет-соединение.

Перед установкой

Загрузка установочного образа

В зависимости от желаемого способа загрузки, скачайте образ ISO или netboot (а также соответствующую подпись GnuPG) со страницы загрузок.

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

Рекомендуется проверять подпись образа перед его использованием, особенно когда он был загружен с зеркала HTTP, где загрузки обычно подвержены перехвату для подмены образа на вредоносный.

На системах с установленным GnuPG вы можете сделать это, скачав ISO PGP signature (ссылка на него есть на странице загрузок в разделе Checksums) в каталог с образом и выполнив команду:

$ gpg --keyserver-options auto-key-retrieve --verify archlinux-версия-x86_64.iso.sig

Также можно проверить подпись из установленного Arch Linux:

$ pacman-key -v archlinux-версия-x86_64.iso.sig

Примечание:

  • Самой подписью можно манипулировать, если загрузить её с зеркала, а не с archlinux.org, как указано выше. В этом случае убедитесь, что открытый ключ, который используется для декодирования подписи, подписан другим надёжным ключом. Команда gpg выведет отпечаток (fingerprint) открытого ключа.
  • Ещё один метод проверки подлинности подписи — убедиться, что отпечаток открытого ключа идентичен отпечатку ключа разработчиков Arch Linux, которые подписали ISO-образ. Для получения дополнительной информации о процессе проверки подлинности открытых ключей смотрите статью Wikipedia:ru:Криптосистема с открытым ключом.

Подготовка установочного носителя

Установочный образ можно загрузить на конечном устройстве с помощью USB-накопителя, оптического диска или сети (при помощи PXE) — следуйте соответствующей статье для подготовки установочного носителя.

Загрузка live-окружения

Примечание: Установочные образы Arch Linux не поддерживают Secure Boot, в связи с чем необходимо отключить данную функцию перед загрузкой. Однако при желании возможно настроить Secure Boot после завершения установки Arch Linux.

  1. Загрузите устройство с установочного носителя с Arch Linux. Обычно при включении компьютера нажимается специальная клавиша (иногда она указывается на заставке) во время фазы POST для выбора загрузочного устройства. Обратитесь к руководству вашей материнской платы для получения более подробных инструкций.
  2. Когда появится меню установочного носителя, выберите Arch Linux install medium и нажмите Enter для входа в установочное окружение.
  3. Вы загрузитесь в первую виртуальную консоль в качестве root-пользователя и увидите приглашение командной оболочки Zsh.

Чтобы переключиться на другую виртуальную консоль в процессе установки (например, для просмотра этого руководства в Lynx), используйте горячие клавиши Alt+стрелка. Для редактирования файлов доступны программы mcedit(1), nano и vim. Список пакетов, присутствующих в установочном образе, доступен на странице pkglist.x86_64.txt.

Установка раскладки клавиатуры

По умолчанию используется раскладка консоли US. Чтобы посмотреть список доступных раскладок, запустите:

# ls /usr/share/kbd/keymaps/**/*.map.gz

Чтобы выбрать раскладку, передайте имя соответствующего файла команде loadkeys(1), не указывая полного пути и расширения. Например, чтобы выбрать русскую раскладку, запустите:

# loadkeys ru

Консольные шрифты расположены в каталоге /usr/share/kbd/consolefonts/ и могут быть выбраны аналогичным способом с помощью команды setfont(8).

Проверка режима загрузки

Чтобы проверить режим загрузки, просмотрите содержимое каталога efivars:

# ls /sys/firmware/efi/efivars

Если содержимое отображается без каких-либо ошибок, система загружена в режиме UEFI. Если же такого каталога не существует, возможно, система загружена в режиме BIOS (или CSM). Если система загрузилась не в том режиме, который вам нужен, обратитесь к руководству пользователя вашей материнской платы.

Соединение с интернетом

Для настройки сетевого соединения в live-окружении выполните следующие действия:

  • Убедитесь, что ваш сетевой интерфейс обнаружен и включён, например, с помощью ip-link(8):
    # ip link
  • Если планируется использовать Wi-Fi или WWAN, убедитесь, что беспроводная карта не заблокирована с помощью rfkill.
  • Подключитесь к сети:
    • Ethernet: подключите кабель.
    • Wi-Fi: подключитесь к беспроводной сети с помощью iwctl.
    • Мобильный широкополосный модем: подключитесь к мобильной сети с помощью утилиты mmcli.
  • Настройте сетевые соединения:
    • DHCP: установка динамического IP-адреса и адреса DNS-сервера (при помощи systemd-networkd и systemd-resolved) должна срабатывать автоматически для проводных и беспроводных сетевых интерфейсов.
    • Статический IP: смотрите Настройка сети#Статический IP-адрес.
  • Соединение можно проверить с помощью утилиты ping:
    # ping archlinux.org

Примечание: Установочный образ включает в себя преднастроенные и активированные службы systemd-networkd, systemd-resolved, iwd и ModemManager. В случае с установленной системой необходима будет ручная настройка и активация данных служб.

Синхронизация системных часов

В live-окружении по умолчанию включен systemd-timesyncd, который выполнит синхронизацию времени автоматически после подключения интернета.

Чтобы удостовериться, что время задано правильно, используйте timedatectl(1):

# timedatectl status

Разметка дисков

Когда запущенная система распознает накопители, они становятся доступны как блочные устройства, например, /dev/sda, /dev/nvme0n1 или /dev/mmcblk0. Чтобы посмотреть их список, используйте lsblk или fdisk.

# fdisk -l

Результаты, оканчивающиеся на rom, loop и airoot, можно игнорировать.

На выбранном накопителе должны присутствовать следующие разделы:

  • Раздел для корневого каталога /.
  • Для загрузки в режиме UEFI также необходим системный раздел EFI.

Если вы хотите создать составное блочное устройство для LVM, шифрования системы или RAID, сделайте это сейчас.

Для изменения таблицы разделов используйте fdisk или parted. Например:

# fdisk /dev/диск_для_разметки

Примечание:

  • Если диск не отображается, убедитесь, что контроллер диска не находится в режиме RAID.
  • Если диск, с которого планируется загрузка системы, уже содержит системный раздел EFI — не создавайте новый раздел, а используйте существующий.
  • Подкачка может быть размещена в файле подкачки, если файловая система поддерживает его.

Примеры схем

UEFI с GPT

Точка монтирования Раздел Тип раздела Рекомендуемый размер
/mnt/boot1 /dev/системный_раздел_efi системный раздел EFI Минимум 300 МиБ
[SWAP] /dev/раздел_подкачки Linux swap Более 512 МиБ
/mnt /dev/корневой_раздел Linux x86-64 root (/) Остаток
  1. Можно использовать другие точки монтирования, например /mnt/efi, если используемый загрузчик будет способен загрузить ядро и initramfs с корневого раздела. Смотрите соответствующее предупреждение в статье Процесс загрузки Arch#Загрузчик.
BIOS с MBR

Точка монтирования Раздел Тип раздела Рекомендуемый размер
[SWAP] /dev/раздел_подкачки Linux swap Более 512 МиБ
/mnt /dev/корневой_раздел Linux Остаток

Также смотрите Разметка дисков#Примеры схем.

Форматирование разделов

Когда новые разделы созданы, каждый из них необходимо отформатировать в подходящую файловую систему. Для получения дополнительной информации смотрите раздел Файловые системы#Создание файловой системы.

Например, чтобы отформатировать /dev/корневой_раздел в Ext4, выполните следующую команду:

# mkfs.ext4 /dev/корневой_раздел

Если вы создали раздел для подкачки (swap), инициализируйте его с помощью утилиты mkswap(8):

# mkswap /dev/раздел_подкачки

Примечание: В случае с многоуровневыми (stacked) блочными устройствами замените /dev/*_раздел соответствующим путём к блочному устройству.

Если вы создали системный раздел EFI, отформатируйте его в FAT32 с помощью mkfs.fat(8).

Важно: Выполняйте форматирование, только если вы создали новый раздел в процессе разметки. Если системный раздел EFI уже существует, его форматирование уничтожит загрузчики других установленных операционных систем.

# mkfs.fat -F32 /dev/системный_раздел_efi

Монтирование разделов

Смонтируйте корневой раздел в каталог /mnt. Например, если корневой раздел — /dev/корневой_раздел, выполните следующую команду:

# mount /dev/корневой_раздел /mnt

Создайте точки монтирования для всех остальных разделов (например, /mnt/efi) и примонтируйте соответствующие разделы.

Совет: Команда mount(8), запущенная с опцией --mkdir, автоматически создаст требуемую точку монтирования. Можно создать их и вручную с помощью mkdir(1).

Для UEFI примонтируйте системный раздел EFI:

# mount --mkdir /dev/системный_раздел_efi /mnt/boot

Если вы ранее создали раздел подкачки (swap), активируйте его с помощью swapon(8):

# swapon /dev/раздел_подкачки

В дальнейшем genfstab(8) обнаружит смонтированные файловые системы и пространство подкачки.

Установка

Выбор зеркал

Пакеты для установки должны скачиваться с серверов-зеркал, прописанных в файле /etc/pacman.d/mirrorlist. В установочном образе, после подключения к сети, reflector обновит список зеркал (выбрав 20 наиболее актуальных HTTPS-зеркал) и отсортирует их по скорости загрузки.

Чем выше зеркало расположено в списке, тем больший приоритет оно имеет при скачивании пакета. Вы можете проверить этот файл и, при необходимости, отредактировать его вручную, переместив наверх наиболее географически близкие зеркала. При этом также учитывайте и другие критерии.

Позже pacstrap скопирует этот файл в новую систему, так что это действительно стоит сделать.

Установка основных пакетов

Используйте скрипт pacstrap(8), чтобы установить пакет base, ядро Linux и прошивки часто встречающихся устройств:

# pacstrap -K /mnt base linux linux-firmware

Совет:

  • linux можно заменить на другой желаемый пакет ядра. Можно вообще не устанавливать ядро, если установка происходит в контейнере.
  • Можно пропустить установку пакета прошивок, если установка происходит в контейнере или виртуальной машине.

Пакет base содержит не все инструменты, имеющиеся на установочном носителе, из-за чего может потребоваться установка дополнительных пакетов для получения полностью функциональной базовой системы. В частности, вам могут пригодиться следующие программы:

  • утилиты для управления файловыми системами в пользовательском пространстве, которые будут использоваться в системе,
  • утилиты для доступа к RAID- или LVM-разделам,
  • специфические прошивки других устройств, не включённые в linux-firmware (например, sof-firmware для некоторых звуковых карт),
  • ПО, необходимое для организации сети (например, менеджер сети или DHCP-клиент),
  • текстовый редактор,
  • пакеты для доступа к документации в man и info: man-db, man-pages и texinfo.

Чтобы установить другие пакеты или группы, добавьте их названия к команде pacstrap (разделяя их пробелом) или используйте pacman во время этапа #Chroot. Список пакетов, присутствующих в установочном образе, доступен на странице pkglist.x86_64.txt.

Настройка системы

Fstab

Сгенерируйте файл fstab (используйте ключ -U или -L, чтобы для идентификации разделов использовались UUID или метки, соответственно):

# genfstab -U /mnt >> /mnt/etc/fstab

После этого проверьте файл /mnt/etc/fstab и отредактируйте его в случае необходимости.

Chroot

Перейдите к корневому каталогу новой системы:

# arch-chroot /mnt

Часовой пояс

Задайте часовой пояс:

# ln -sf /usr/share/zoneinfo/Регион/Город /etc/localtime

Запустите hwclock(8), чтобы сгенерировать /etc/adjtime:

# hwclock --systohc

Эта команда предполагает, что аппаратные часы настроены в формате UTC. Для получения дополнительной информации смотрите раздел System time (Русский)#Стандарт времени.

Локализация

Отредактируйте файл /etc/locale.gen, раскомментировав en_US.UTF-8 UTF-8 и другие необходимые локали (например, ru_RU.UTF-8 UTF-8), после чего сгенерируйте их:

# locale-gen

Создайте файл locale.conf(5) и задайте переменной LANG необходимое значение:

/etc/locale.conf
LANG=ru_RU.UTF-8

Если вы меняли раскладку клавиатуры, сделайте это изменение постоянным в файле vconsole.conf(5). Также добавьте шрифт для консоли с поддержкой кириллицы:

/etc/vconsole.conf
KEYMAP=ru
FONT=cyr-sun16

Настройка сети

Создайте файл hostname:

/etc/hostname
моёимяхоста

Завершите настройку сети для вновь установленной среды. В частности, установите подходящее ПО для управления сетевым подключением.

Initramfs

Как правило, создание нового образа initramfs не требуется, поскольку pacstrap автоматически запускает mkinitcpio после установки пакета ядра.

Если вы используете LVM, шифрование системы или RAID, отредактируйте файл mkinitcpio.conf(5) и пересоздайте образ initramfs:

# mkinitcpio -P

Пароль суперпользователя

Установите пароль суперпользователя:

# passwd

Загрузчик

Выберите и установите загрузчик с поддержкой Linux. Если вы используете процессор Intel или AMD, включите также обновление микрокода.

Перезагрузка

Выйдите из окружения chroot, набрав exit или нажав Ctrl+d.

Вы можете размонтировать все разделы с помощью команды umount -R /mnt, чтобы убедиться в том, что ни один из разделов не остался занят какой-либо программой. Если нужно, для поиска таких программ используйте fuser(1).

Теперь перезагрузите компьютер, набрав reboot: если какие-нибудь разделы остались смонтированными, systemd их размонтирует. Не забудьте извлечь установочный носитель. После загрузки войдите в систему в качестве суперпользователя.

После установки

Дальнейшие указания по настройке системы после установки (например, создание аккаунта обычного пользователя, настройка графического интерфейса, звука или тачпада) вы можете найти на странице Основные рекомендации.

Множество интересных и полезных программ вы найдете на странице Список приложений.

Время на прочтение
4 мин

Количество просмотров 146K

Как установить Arch без боли??

Предисловие

Слышал, что некоторые считают Arch сложным в установке. Отчасти они правы, но для любого человека, который способен разобраться в установке и настройке linux, установка Arch довольно проста. Также это самый гибкий дистрибутив, поэтому настроить под себя его получится лучше других дистрибутивов.

Данный гайд является сборной солянкой из всех гайдов, что я прочитал (как русскоязычные, так и иноязычные). Его цель просто и без лишней технической информации показать пошаговую установку Arch и сделать это на русском языке. Главное, что статья написана от непонимающего для непонимающих. Заранее скажу, что некоторые скрины будут уже с установленного Arch, но это никак не меняет работу команд и то, что вы увидите при их использование.

Итак, начнём с простого.

Идём на сайт и качаём ISO-файл:

Там ищем зеркало(скорее всего русское) и скачиваем образ:

Для упрощения дальнейшей жизни лучше скачать Etcher, прямо на сайте есть довольно понятная инструкция в картинках, так что справятся все.

 Установка

// начну с настройки VirtualBox, если вы используете её, то выполните следующие действия

1.Идём в настройки машины:

2.Во вкладке система ставим галочку около пункта »Включить EFI»:

3.Далее идём во вкладку носители, там добавляем контроллер IDE и выбираем наш дистрибутив

Далее установка будет для всех одинакова.

Начинаем с запуска

Выбираем первую строку и жмём Enter

Проверим соединение с интернетом:

Это нужно, потому что Arch требует интернет для своей установки.

Такой командой можно проверить своё соединение и увидеть время ответа сайта.

ping -c 3  google.com

Если вы используете wifi на своём ПК, то используйте утилиту :

wifi-menu

Вы увидите примерно это:

Разделы диска

Для того, чтоб разбить наш диск на разделы, можно сначала узнать какие диски подключены. Скорее всего у вас будет USB флешка и HDDSSD вашего ПК.

Команда для просмотра разделов (понадобится нам ещё много раз):

lsblk

Если у вас несколько дисков, а вы хотите установить на какой-то конкретный, то можно посмотреть диски по размерам.

fdisk -l

Время размечать наш диск. Используем команду cfdisk для этого и выбираем gpt формат :

cfdisk /dev/sda

Bажно! если во время использования команды lsblk и fdisk вы увидели что sda является не тем диском, что нужен вам, то вы дописываете в конец название другого диска, например sdb.

Используя стрелочки создаём 3 раздела на диске:

  • /dev/sda1 # размером 1G места под UEFI
  • /dev/sda2 # размером примерно 10-15 GB под root
  • /dev/sda3 # всё оставшееся место под директорию home

PS: Если вы решили переделать разметку диска, то через эту утилиту можно и удалять разделы

Для проверки используем lsblk снова. Если всё норм, что /dev/sda будет содежать в себе 3 раздела.


Далее форматируем наши разделы.

  1. Форматируем тот раздел, который мы выделили под UEFi

    mkfs.fat -F32 /dev/sda1

  2. Раздел root

    mkfs.ext4 /dev/sda2

  3. Раздел home

    mkfs.ext4 /dev/sda3

Монтируем root и создаём папку home:

mount /dev/sda2 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home

И снова lsblk для проверки

Установка

Начинается самая долгая часть, потому что нужно будет много скачать. Устанавливаем все основные пакеты, а также nano, чтоб редачить файлы системы. Если вдруг вы знакомы с  vim можете скачать и его (дописать в конец).

pacstrap -i /mnt base linux linux-firmware sudo nano

Вам предложат что установить выбирайте all и далее yes. Встречался с проблемой, что можно было скачать первый или второй вариант, можно просто выполнить команду дважды выбирая вначале один пакет, а затем второй.

Создадим  fstab файл

genfstab -U -p /mnt >> /mnt/etc/fstab

 Настраиваем установленную систему

Chroot

Chroot (change root) нужен нам, чтобы мы могли сменить  root пользователя (как и сказано в названии команды).

arch-chroot /mnt /bin/bash

Настройка файла локали

Для начала идём в файл локали, чтоб настроить язык

nano /etc/locale.gen

Находим там #en_US.UTF-8 и стираем #, с русским языком так же. PS: можно использовать Ctrl + W для поиска языка в файле.

Чтобы всё сохранить Ctrl + O, затем Enter и Ctrl + X, затем Enter

Далее пишем команды, которые сгенерируют локаль и создаём locale.conf с нужными настройками языка.

locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

Настраиваем временную зону

ln -sf /usr/share/zoneinfo/

Далее жмём 2 раза на Tab и видим список регионов, после городов.

В моём случае было так:

ln -sf /usr/share/zoneinfo/Europe/Kaliningrad /etc/localtime

Задаём время

Тут 2 команды. Одна ставит время для системы, а другая его показывает.

hwclock --systohc --utc
date

Имя хоста и адрес

Я решил назвать ПК ArchMe, поэтому используем следующую команду:

echo ArchMe > /etc/hostname

Далее идём в файл localhosts и записываем ip. Если у вас ip статический, используйте свой.

nano /etc/hosts
127.0.1.1 localhost.localdomain ArchMe

Сетевой менеджер

Качаем и включаем.

pacman -S networkmanager
systemctl enable NetworkManager 

Установка GRUB

Для начала сменим пароль root пользователя :

passwd

GRUB — это загрузчик, который нужен, чтоб запускать нашу установленную систему (в режиме EFI). Далее будет куча команд, которые нужно выполнить.

pacman -S grub efibootmgr
mkdir /boot/efi
mount /dev/sda1 /boot/efi
lsblk # для проверки всё ли норм смонтировано 
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi --removable
grub-mkconfig -o /boot/grub/grub.cfg

Перезагрузка

Чтобы без потерь перезагрузить нашу систему используем эти команды:

exit
umount -R /mnt
reboot

После перезагрузки вы увидите следующее. Если это так, то наш GRUB установился правильно

Входим в root аккаунт и создаём  swapfile (что-то вроде доп оперативки) и задаём ему размер как у вашей ОЗУ

fallocate -l 3G /swapfile

Далее выполняем следующие команды:

chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

И проверяем, работает ли swap:

free -m

Добавим пользователя и окружение

useradd -m -g users -G wheel -s /bin/bash username
passwd username

username замените на то имя, что хотите вы)

Также нужно дать ему права суперюзера:

EDITOR=nano visudo

там ищем  и убираем #, а дальше Ctrl + O, затем Enter и Ctrl + X, затем Enter

# %wheel ALL=(ALL) ALL

Дрова

pacman -S pulseaudio pulseaudio-alsa xorg xorg-xinit xorg-server

Вам будет предложен выбор, выбирайте исходя из своей графики.

Окружение

Вначале покажу как поставить довольно простое — XFCE

pacman -S xfce4 lightdm lightdm-gtk-greeter
echo "exec startxfce4" > ~/.xinitrc
systemctl enable lightdm

И моё любимое  i3, там выбираем пакеты 2 4 5. Возможно вы увидите квадраты вместо символов, но это нормально, вам просто нужно будет скачать шрифт dejavu (pacman -S ttf-dejavu). Cписок горячих клавиш можно посмотреть  тут

echo "exec i3"  > ~/.xinitrc
sudo pacman -S i3

Если вы решите поменять своё окружение, то нужно будет менять запись в файле xinitrc.

Для запуска вашего окружения используйте

startx

Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie

В современной Linux-тусовке бытует мнение, будто установка Archlinux — это весьма сложный и утомительный процесс, а неподготовленному пользователю даже не стоит и пытаться лесть в эти дебри. В этом материале мы попытаемся наглядно опровергнуть все эти глупые заблуждения на примере нового установщика Archlinux.

Содержание

  • Подготовка
  • Установка
  • Файлы
  • Пользователь
  • Компоненты системы
  • Пример рабочей системы
  • Итоги
  • Видеоверсия

Подготовка

Хотя дистрибутив Archlinux в последнее время и стал более популярен, но многие продолжают задавать вопросы о том, где его скачать и чем записать на носитель.

Скачать чистую систему без лишних пакетов и вирусов вы всегда можете с официального сайта проекта. Запись же на носитель лучше производить с помощью Belena Etcher во избежание ошибок. Перейдём к установке.

Установка

Установка весьма проста и не должна вызвать каких-либо затруднений. Вставляем наш носитель в PC и перезагружаемся. Встречает нас командная строка. Вводим команду ArchInstall и дожидаемся срабатывания скрипта.

Скрипт запускает меню конфигурации, в котором по порядку указаны варианты настройки модулей системы. Пропускаем первые два пункта, отвечающих за язык установщика c вводом, и переходим к конфигурированию будущей ОС. Чтобы не плодить сотни скриншотов, поделим установку на модули: файлы, пользователь и компоненты системы.

Файлы

Select mirror region
Select harddrives
Select disk layout
Выбор файловой системы
Set encryption password
Select boot loader
Use swap
Specify hostname
  • Select mirror region отвечает с репозиториев какой страны вы будете скачивать пакеты для работы и установки OC. 
    Выбираем свою страну и продолжаем.
  • Select harddrives позволяет указать, на какой диск установить систему. Вновь выбираем желаемый носитель.
  • Select disk layout отвечает за форматирование. Выбираем Wipe all (удалить всё с диска) и желаемую файловую систему.

Файловые системы:

  1. BTRFS — новая файловая сочитающая в себе сохранность данных и скоротные показатели. Использовать только для SSD.
  2. EXT4 — проверенная временем универсальная файловая система, что идеально подходит HDD и SSD.
  3. F2FS — файловая система созданная специально дря раскрытия потенциала SSD-носителей от компании Samsung.
  4. XFS — старая файловая система для киношных станций. Для десктопа не подходит.
  • Set encryption password можно пропустить, если вам не нужно шифрование содержимого на диске. Лично я пропускаю.
  • Select boot loader отвечает за выбор загрузчика, тоесть того ПО, которое будет грузить нашу систему.
    На самом деле загрузчиков весьма много, но разработчики ArchLinux выбрали из коробки не самый лучший выриант.
    Выбираем yes, и загрузчик сам изменится на привычный Grub.
  • Следующие два пункта посвящены созданию Swap и именованию компьютера в сети (Use swap и Specify hostname), их можно пропустить, так как никакого существенного влияния на работу будущей системы это не окажет.

Пользователь

Set root password
Specify user account

Наконец-то мы подобрались к основным модулям, что отвечают за добавление и настройку аккаунта пользователя:
Set root password (Назначить пароль администратора), Specify user account (создать отдельного пользователя). Вновь вводим желаемые данные и переходим к конфигурированию основных компонентов системы.

Компоненты системы

Specify profile
Выбор рабочего окружения
Выбор видеодрайвера

Specify profile позволяет выбрать весьба обширный список заранее подготовленных компонентов: предварительную пакетную базу, графическое окружение (DE) и видеодрайверы. Если вы не являетесь прошаренным пользователем, то выбирайте Desktop, KDE или Gnome и видеодрайвер в зависимости от вашей видеокарты. Следом уже пойдут пункты отвечающие за звук (Select audio), ядро системы (Select kernels), добавление ПО (Packages to install), настройка времени (Select timezone и Set automatic time sync).
Всех их можно пропустить, так как они уже заранее настроены. (Если не используете DE, то укажите Select audio).

Configure Network
Repositories to enable

Выбираем теперь настройку интернета (Configure Network) и задействуем репозиторий с 32-битными библиотеками (Repositories to enable). Для любого типа подключения лучше использовать NetworkManager из-за своей универсальности и multilib, если собираетесь устанавливать Wine или Steam. Выбираем Install и начинаем установку. 

Видеоверсия установки

Пример рабочей системы

Если вы всё сделали правильно и выбрали Gnome как рабочее окружение, то вы получите примерно такую систему.
Всю дополнительную информацию о послеустановочной настройке вы всегда можете найти в теме оптимизации ArchLinux или в нашем файле ARU.

Итоги

Вот собственно и всё, меньше чем за 5 минут мы установили одну из самых сложных систем Linux-мира и развеяли глупые заблуждения о сложности её установки. Попробуйте и вы данную систему, ведь может оказаться, что именно она является тем, что вы так долго искали. 

Видеоверсия

Сейчас на главной

Новости

Публикации

Технология виртуальной реальности (VR) является относительно новой и перспективной областью, которая может изменить способ обучения и работы. В этой статье я рассмотрю устройство технологии VR, ее…

Средневековые замки давно потеряли свой первоначальный смысл. Однако и в наше время для них находится применение, чаще всего в роли музея и объекта, привлекающего туристов. Есть и такие замки,…

Недавно в интернете завирусилась новая версия ChatGPT — AutoGPT. В Твиттере ее назвали ChatGPT на стероидах, потому что она работает на GPT-4 и общается сама с собой автоматически. То есть, вам…

В этом обзоре я расскажу про компактный WiFi адаптер Ugreen AX1800. Для его работы не надо скачивать драйвера или дополнительное прогамное обеспечение, достаточно свободный USB разъем. Адаптер…

В обзоре рассмотрим монитор Uperfect MDS-156A07 –
портативное решение с диагональю дисплея 15.6″, которое может пригодиться
как в поездках, так и при использовании дома или на работе. В общем,…

Отличный вариант для ленивых — самостоятельный робот-пылесос ILIFE T10S со станцией для самоочистки: только раз в 60 дней потребуется сменить мешок для мусора в самой станции. Очень удобно,…

ArchLinux Logo

The Arch Linux Installation Guide

Deep Grewal — January 27, 2021


Introduction

The installation of Arch has been and continues to be a rite-of-passage within the Linux community. Although there are many guides that discuss the steps needed to install Arch Linux, I couldn’t resist writing my very own guide. This guide promises to be different by being a narrative-style approach to the topic. The goals of this guide are to be educational, informative, and to make & keep it simple (in the spirit of the Arch philosophy). The guide assumes that you have some proficiency with the command line and have a basic understanding of Linux. I hope that this guide can help you succeed with this rite and put you in control of a system that you have built from the ground-up.

As an Arch user, the Arch Wiki will be an extremely valuable resource to you. This resource is so well-composed and maintained that even non-Arch users glean knowledge, wisdom, and solutions from it daily.

And now, may the adventure begin…


Download the Arch ISO

The first thing that we need to do is to obtain an image of Arch Linux. To do so, let’s visit the the Arch Linux home page.

You can either click here or visit the link below to download the latest ISO image file for Arch.

https://www.archlinux.org/download


Boot the System to the Arch ISO

Depending upon the type of system that Arch will be installed on, there are different methods of booting the Arch ISO.

Physical Machine

For physical machines, a bootable medium can be created from the Arch ISO file.

Prepare Live Bootable USB

Although an optical disk could have been used to create a bootable physical medium, USB was chosen due to its relevance. The simplest way to prepare a live USB is via the dd command:

# dd if=/location/of/iso/file of=/device/entry/of/usb/drive

Boot to USB

Insert the USB drive into the physical machine and boot into the USB drive. BIOS settings/boot order may need to be adjusted to ensure that the physical machine boots from the USB drive.

Confirm You are In

Once you have properly booted into the Arch ISO, a prompt similar to the one below will be displayed.

Virtual Machine

Virtual machines do not require a physical medium to be created. The Arch ISO file can be mounted as a virtualized optical disk within the virtualized optical drive.

Confirm You are In

Once you have properly booted into the Arch ISO, a prompt similar to the one below will be displayed.


Verify Connectivity to the Internet

During the installation, I prefer to have a wired connection to the Internet. This guide has been written based on a machine that is connected to the Internet using a wired connection.

To check Internet connectivity, simply ping a website as shown in the example below.

root@archiso ~ # ping -c 4 archlinux.org
PING archlinux.org (95.217.163.246) 56(84) bytes of data.
64 bytes from archlinux.org (95.217.163.246): icmp_seq=1 ttl=47 time=206 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=2 ttl=47 time=181 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=3 ttl=47 time=181 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=4 ttl=47 time=181 ms

--- archlinux.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 180.629/187.159/205.907/10.828 ms

Update the System Clock

Now that we have confirmed connectivity to the Internet, we can leverage NTP. Use timedatectl command to ensure the system clock is accurate by enabling NTP.

root@archiso ~ # timedatectl set-ntp true
Starting Network Time Synchronization...
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Set.
[  OK  ] Reached target System Time Synchronized.

Disk Partitioning

In order for us to have a working distribution, we have to create some partitions on the target hard disk so that we can properly install and run Arch Linux. There are numerous tools and commands that can be used for disk partitioning. This guide uses fdisk to create the partitions.

The recommended partition schemes vary depending on whether or not the system has UEFI mode enabled.

So, let’s verify if UEFI mode is enabled by checking for the existence of this directory:

root@archiso ~ # ls /sys/firmware/efi/efivars
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

Based on the output of the command above, we can determine that the system being used in this guide does not have UEFI.

Now, we can list all existing disk and disk partitions. For the purposes of this guide and for a simpler installation, a virtual machine has been created with a blank 20GB hard disk identified by /dev/sda.

root@archiso ~ # fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop0: 566.52 MiB, 594034688 bytes, 1160224 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Let’s begin the partitioning process on the /dev/sda hard disk.

root@archiso ~ # fdisk /dev/sda

Welcome to the fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa1936afe.

Command (m for help):

If you would like to see all fdisk commands, this is an ideal opporunity to press the m key and Enter to display a list of all commands. You could do that for your information (FYI). However, this guide will walk you through the commands that are needed to partition the disk.

Before we create any partitions, let’s review the recommended partition schemes.

Recommended Partition Schemes

The schemes below are mere recommendations and can be altered to your liking. Notably, there are many viewpoints on the size of a swap partition, so take these recommendations with a grain of salt and do what suits you best. After all, that’s the beauty of creating your very own system from the ground-up.

NON-UEFI

Mount Point Partition Partition Type Partition Size File System
/mnt /dev/sda1 Linux Remainder of the device ext4
[SWAP] /dev/sda2 Linux swap More than 512 MiB ext4

UEFI

Mount Point Partition Partition Type Partition Size File System
/mnt/boot or mnt/efi /dev/sda1 EFI System Partition 260MB — 512MB fat32
/mnt /dev/sda2 Linux x86-64 root (/) Remainder of the device ext4
[SWAP] /dev/sda3 Linux swap More than 512MiB ext4

Create the Partitions

Since we have a non-UEFI system, it makes sense to follow the NON-UEFI partition scheme above. This means that we will create 2 partitions: a swap partition (Linux swap) and a partition where root will be mounted (Linux).

We have a hard drive that is approximately 20GB in size, so we can easily spare approximately half of a gigabyte (512MB) for the Linux swap partition (/dev/sda2). Leaving us with approximately 19.5GB for the Linux partition (/dev/sda1).

Linux Partition

First, let’s create the Linux partition (/dev/sda1/).

Command (m for help): n

Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p   

Partition number (1-4, default 1): 1

First sector (2048-41943039, default 2048): 2048

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943049, default 41943039): +19.5G

Created a new partition of type 'Linux' and of size 19.5 GiB.

Swap Partition

Next, let’s go ahead and create the Linux swap partition (/dev/sda2/).

Command (m for help): n

Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p   

Partition number (2-4, default 2): 2

First sector (40896512-41943039, default 40896512): 40896512

Last sector, +/-sectors or +/-size{K,M,G,T,P} (40896512-41943039, default 41943039): 41943039

Created a new partition 2 of type 'Linux' and of size 511 MiB.

With the Linux swap partition, we need to change the partition type so that it is a true swap partition.

If you would like to see all partition types, this is an ideal opporunity to press the l key and Enter to display a list of all partition types. You could do that for your information (FYI). However, this guide will walk you through the commands that are needed to partition the disk.

We now need to change the partition type of our intended Linux swap partition (/dev/sda2).

Command (m for help): t

Partition number (1,2, default 2): 2

Hex code or alias (type L to list all): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Verify Proposed Partition Table

Before we save our changes and commit them to the disk, let’s take a moment to verify that everything was done correctly.

Command (m for help): p
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc12ff6e9

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1           2048 40896511 40894464 19.5G 83 Linux
/dev/sda2       40896512 41943039  1046528  511M 82 Linux swap / Solaris

Write Partition Table to Disk

Finally, let’s write the newly created partition table to the disk and exit the fdisk utility.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@archiso ~ #

Create File System

The creation of the partitions in the previous steps simply drew boundaries on the storage space offered by the hard disk and specified the type of space betweeen each boundry line. In order for these partitions to be of any use, they should be initialized with a file system and have the swap partition enabled.

Again depending on the type of system (UEFI, non-UEFI), the process will vary.

NON-UEFI

For our non-UEFI system, let’s create an ext4 file system on the root partition (you may choose any other viable file system).

root@archiso ~ # mkfs.ext4 /dev/sda1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 5111808 4k blocks and 1277952 inodes
Filesystem UUID: ca970c3e-5a47-468c-8ff7-6ba9dda277af
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Also, let’s prepare the swap partition.

root@archiso ~ # mkswap /dev/sda2
Setting up swapspace version 1, size = 511 MiB (535818240 bytes)
no label, UUID=12e273d1-4dc4-4151-9ffe-6a09ae78be38

root@archiso ~ # swapon /dev/sda2

UEFI

For the EFI partition type, create a FAT32 file system.

# mkfs.fat -F32 /dev/sda1

For the root partition, create an ext4 file system (or any other viable file system of your choice).

Prepare the swap partition:

# mkswap /dev/sda3
# swapon /dev/sda3

Optimize Mirrors

Much like any other distro, Arch Linux relies on mirrors to obtain updates. There are a plethora of mirrors that are hosted on hundreds of servers spanning the entire globe. Usually, the mirrors which are geographically nearer in distance should provide for the fastest connection speeds.

Arch Linux comes with a file known as the «mirrorlist» which contains all known mirrors. However, this file is not optimized since it contains every single mirror. We could manually go through this file and edit it, but that would take quite some time. Luckily, there is a tool (Python script) called reflector that has been created that will automatically optimize the file for us. We just need to provide some input.

Sync the pacman Repository

Before we go about downloading any applications/tools, we should update the repository and ensure that we have the latest and greatest available to us.

root@archiso ~ # pacman -Syy
:: Synchronizing package databases...
 core                            132.8 KiB  5.64 MiB/s 00:00 [#################################] 100%
 extra                          1633.0 KiB  10.4 MiB/s 00:00 [#################################] 100%
 community                         5.3 MiB  8.91 MiB/s 00:00 [#################################] 100%

Install reflector

With a fully-updated repository, we are in good-standing to install the reflector tool so that we can optimize the /etc/pacman.d/mirrorlist file for local mirrors.

root@archiso ~ # pacman -S reflector
resolving dependencies...
looking for conflicting packages...

Packages (1) reflector-2021-1

Total Download Size:   0.03 MiB
Total Installed Size:  0.10 MiB
Net Upgrade Size:      0.01 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 reflector-2021-1-any             25.9 KiB 0.00   B/s 00:00 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) upgrading reflector                                   [#################################] 100%
:: Running post-transaction hooks...
(1/2) Reloading system manager configuration...
(2/2) Arming ConditionNeedsUpdate... 

Back up Existing Mirrorlist File

It doesn’t hurt to make a backup of a file that is going to be changed. Let’s make a backup of the /etc/pacman.d/mirrorlist file.

root@archiso ~ # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

Run reflector Against the Mirrorlist File

Execute the reflector command to optimize the /etc/pacman.d/mirrorlist file. The end result will be a leaner file which contains the most optimal entries. Since I am in the United States, I have used «US» as the country code within the command.

root@archiso ~ # reflector -c "US" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist

Install Arch Linux

Our system has now been prepared and optimized to take on the install of Arch Linux. This phase involves mounting the Linux partition and installing desired packages using the pacstrap command on to the mounted Linux partition.

Mount the Linux Partition

We must mount the root directory before we can perform any installation.

NON-UEFI

root@archiso ~ # mount /dev/sda1 /mnt

UEFI

root@archiso ~ # mount /dev/sda2 /mnt

Perform the Installation

Use the pacstrap command to install Arch Linux, required packages, and any additional packages (in this case, the nano text editor) to the mounted Linux partition. Additional packages can always be installed later; the installation of nano as an additional package was included to demonstrate the ability of the pacstrap command (and to promote nano as my favorite text editor which will come in handy later in this guide).

root@archiso ~ # pacstrap /mnt base linux linux-firmware nano

After issuing the command above, the screen will be very busy with the installation of multiple packages which comprise the Arch Linux distribution. Once complete, we can now say that we have installed Arch Linux! But, there’s still more to do: configuration, bootloader installation, and selecting a desktop environment.


Configure the Installed Arch System

During the configuration phase, we will start things off by setting the root partition to mount automatically. Then, we will set the timezone so that it reflects the current/local timezone. Next, we will set the locale so that dates, times, numbers, etc. are formatted correctly based on the geographical locale of the machine. Also, we can take this opportunity to make some minor network configurations so that this machine has a proper and accurate identity on the network. Finally, we can enhance the security of the machine by setting a password for the root user.

Automating the Mounts

Let’s create the /etc/fstab so that the root partition is mounted automatically when the system is booted. The /etc/fstab file can be edited manually, but our goal is to simplify the installation of Arch Linux. Similar to what we did with the reflector tool to automate the optimal mirror selection process, we will introduce and use yet another tool to create the /etc/fstab file.

We can automatically generate the fstab file using the genfstab command.

root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab

Change Root

Recall that we initially booted into this machine using an image file. We are still in the root directory of the image file and our session is in RAM. Now that we have installed Arch Linux, we need to switch to the physically installed root partition using the arch-chroot command.

Change root to the root directory at /mnt.

root@archiso ~ # arch-chroot /mnt

Setting the Timezone

At the beginning of this guide, we were able to set NTP to true. This ensured that we had the correct time, but did not ensure that we had the correct timezone. In this step, we will apply the correct timezone (UTC offset) so that the time represented in our installation is relevant to the geographical location.

Use the timedatectl command to find your timezone. You can use the arrow keys and the PgUp and PgDn keys to navigate through the list. Once complete press q to exit the list.

[root@archiso /]# timedatectl list-timezones

Create a symbollic link to set the timezone (replace «America/Los_Angeles» with your timezone).

[root@archiso /]# ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Run hwclock to generate /etc/adjtime.

[root@archiso /]# hwclock --systohc

Setting Up Locale

The term «locale» refers to language, number, date and currency formats The file /etc/locale.gen contains locale settings and system languages and is commented by default. We must open this file using a text editor and uncomment the line which contains the desired locale. This is why nano was installed previously using the pacstrap command.

Open the /etc/locale.gen file and remove the «#» from the start of the line which contains your locale. Then, save the file.

[root@archiso /]# nano /etc/locale.gen

Since I am in the United States, the following entry has been uncommented prior to saving the file and the locale of en_US.UTF-8 will be used for the remainder of the steps.

# /etc/locale.gen

en_US.UTF-8 UTF-8 

Generate the /etc/locale.conf file.

[root@archiso /]# locale-gen
Generating locales...
  en_US.UTF-8... done
Generation complete.

Create and set the LANG variable.

[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# export LANG=en_US.UTF-8 

Network Configuration

Let’s use that text editor once more to give our machine a hostname and proper identity on the network.

Create the /etc/hostname file and add the hostname entry. Then, save the file.

[root@archiso /]# nano /etc/hostname

This entry has been added:

# /etc/hostname

ArchLinuxPC

Create the /etc/hosts file and add the proper entries. Then, save the file.

[root@archiso /]# nano /etc/hosts

These entries have been added:

# /etc/hosts

127.0.0.1 localhost
::1 localhost
127.0.1.1 ArchLinuxPC

Root Password

Finally, let’s give the root user a password for the sake of security.

Use the passwd command to set the password for root.

[root@archiso /]# passwd
New password:
Retype new password:
passwd: password updated successfully

Install Grand Unified Bootloader (GRUB)

Up to this point, we have created a functional Arch Linux system. It has been installed on the root partition, but a bootloader is needed to properly and automatically load our newly installed system. There are a few choices when it comes to bootloaders. I have chosen to use GRUB as the bootloader of choice for this guide.

Once again, we have two general methods of installing a bootloader: the UEFI and non-UEFI methods.

NON-UEFI

For our non-UEFI system, the process is shown below.

Install the grub package.

[root@archiso /]# pacman -S grub
resolving dependencies...
looking for conflicting packages...

Packages (1) grub-2:2.04-8

Total Download Size:    6.74 MiB
Total Installed Size:  32.91 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 grub-2:2.04-8-x86_64              6.7 MiB 6.97 MiB/s 00:01 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) installing grub                                       [#################################] 100%
Generate your bootloader configuration with:
  grub-mkconfig -o /boot/grub/grub.cfg
Optional dependencies for grub
    freetype2: For grub-mkfont usage
    fuse2: For grub-mount usage
    dosfstools: For grub-mkrescue FAT FS and EFI support
    efibootmgr: For grub-install EFI support   
    libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue
    os-prober: To detect other OSes when generating grub.cfg in BIOS systems
    mtools: For grub-mkrescue FAT FS support
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate... 

Install GRUB to the hard disk.

[root@archiso /]# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.

Finally, generate the /boot/grub/grub.cfg file.

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done

UEFI

Install the grub package.

[root@archiso /]# pacman -S grub efibootmgr

Create the directory where EFI partition will be mounted.

[root@archiso /]# mkdir /boot/efi

Mount the ESP partition.

[root@archiso /]# mount /dev/sda1 /boot/efi

Install GRUB to the hard disk.

[root@archiso /]# grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi

Finally, generate the /boot/grub/grub.cfg file.

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg

Create a User Account

This is an excellent opportunity to create a user account. A non-root account is a preferred method of logging into the graphical desktop environment which will be install in the next section. The method of creation for the user account will automatically create the home directory for the user as well. In addition, we can give this account sudo privileges. For that, we will also need to install the sudo command, itself.

Add User and Home Directory

Use the useradd command with the -m option to create a new user and to generate the home directory for the new user.

[root@archiso /]# useradd -m deep

User Password

Set up user password.

[root@archiso /]# passwd deep
New password:
Retype new password:
passwd: password updated successfully

Install sudo

Install the sudo command.

[root@archiso /]# pacman -S sudo
resolving dependencies...
looking for conflicting packages...

Packages (1) sudo-1.9.5.p2-1

Total Download Size:    1.09 MiB
Total Installed Size:   4.45 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 sudo-1.9.5.p2-1-x86_64         1116.4 KiB 15.6 MiB/s 00:01 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) installing sudo                                       [#################################] 100%
:: Running post-transaction hooks...
(1/3) Reloading system manager configuration...
Running in chroot, ignoring command 'daemon-reload'
(2/3) Creating temporary files...
(3/3) Arming ConditionNeedsUpdate... 

Give User sudo Privileges

NOTE: The configuration file for sudo is /etc/sudoers. This file should always be edited with the visudo command. The visudo command locks the «sudoers» file, saves edits to a temporary file, and then checks the file’s syntax before copying it to /etc/sudoers.)

Set an editor for use when launching visudo.

[root@archiso /]# EDITOR=nano visudo

Add the following line for the newly created user. Then, save the file.

# /etc/sudoers

deep ALL=(ALL) ALL

Install a Desktop Environment

If you thought swap partition sizes and text editors were controversial, they don’t compare to the tribalism that exists for desktop environments. But that’s what makes Linux amazing: the freedom to choose. There are many desktop environments that can be used with Arch Linux. My favorite desktop environments have been included below (in no particular order).

Choose your desktop environment, perform the installation, and finalize the configuration. If you are unsure about the options presented during the installation of your desktop environment of choice, choose the defaulted options. Then, let’s reconnect in the Summary section of this tutorial.

NOTE: KDE doesn’t allow the root user to login directly. You must initially login with the user account created in the previous section.

GNOME

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install the GNOME desktop environment.

[root@archiso /]# pacman -S gnome

Enable the GDM display manager and Network Manager.

[root@archiso /]# systemctl enable gdm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.

CINNAMON

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install the Xorg terminal.

[root@archiso /]# pacman -S xterm

Install the Cinnamon desktop environment.

[root@archiso /]# pacman -S cinnamon

Install the GDM display manager.

[root@archiso /]# pacman -S gdm

Enable the GDM display manager and Network Manager.

NOTE: During the login process, look for a settings (gear) icon. This icon will allow you to choose the Cinammon desktop environment.

[root@archiso /]# systemctl enable gdm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.

KDE

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install plasma, plasma-wayland-session, and kde-applications.

[root@archiso /]# pacman -S plasma plasma-wayland-session kde-applications 

Enable the SDDM display manager and Network Manager.

[root@archiso /]# systemctl enable sddm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.


Summary

Congratulations! You now have a working Arch Linux system which you have designed based on your choices and preferences. Arch, by default, is a rolling-release distribution. This means that you shouldn’t have to install it more than once for any system. One of the benefits (and drawbacks) of being a rolling release like Arch, is that you are always on the cutting edge (and sometimes bleeding edge) of system and software updates which, at times, can be unstable. Arch is an excellent distribution for a personal workstation or development machine. However, you should avoid deploying Arch on critical machines which are intended to run in a production environment. If (or when) you run into trouble, the Arch Wiki will be an excellent source of any further configuration, troubleshooting, or general/specific knowledge about a given topic.

This was just the beginning; there is much more to install, configure, tweak, and learn. I hope that you have enjoyed this guide and have gained some insight into the installation of Arch Linux. You can now boast to your friends and colleagues about your distro of choice. Don’t hesitate to sprinkle in the occasional, «By the way, I use Arch» in casual conversations.

Table of Contents

  • Table of Contents
  • Установка Arch Linux
    • Arch Linux
    • Создание образа
    • Изменяем приоритет загрузки в BIOS/UEFI
    • Начало установки
    • Настройка сети
    • Выбор файловой системы
    • Размечаем диск
    • Вариант 1: LVM
    • Вариант 2: Btrfs
    • Устанавливаем ядро
    • Генерируем fstab
    • arch-chroot
    • Настраиваем дату и локаль
    • Прописываем хосты
    • Initramfs
    • Ставим пакеты
    • Пользователи
    • Установка grub
    • Ставим Gnome
    • Завершение установки
  • man & help
  • Типы файлов в выводе ls и других стандартных команд
  • Пакетные менеджеры
  • Нужные пакеты
  • Заменяем ядро на стабильное
  • Масштабировавние 150% как в Windows
  • Расширения для Gnome
  • Пользовательские сочетания клавиш
  • Запуск исполняемых файлов по двойному клику в Nautilus
  • Добавляем новые действия в контекстное Nautilus
  • Шаблоны файлов
  • Гибернация
  • RAID
  • Права
  • Монтирование
  • Добавляем путь в PATH
  • bin в домашнем каталоге
  • Монтируем Windows разделы
  • Шрифты
  • Emoji
  • Спецсимволы
  • Сетевые интерфесы
  • Блокируем сайты с рекламой через hosts
  • Информация о железе
  • Редактирование DConf
  • ZSH
    • Установка ZSH
    • Oh My Zsh
    • Темы Oh My Zsh!
      • Bullet Train for oh-my-zsh
      • Jovial
      • Powerlevel10k
    • Подробнее про ZSH
  • Разноцветный cat
  • Цветовые схемы для терминала
  • Бекап системы
  • asdf-vm
  • NVM
  • Настройка Docker
  • Настройка Visual Code
  • LVM
  • Btrfs
  • Snapper
  • Timeshift
  • Логи
  • Установка и настройка Postgres
  • Мониторинг процессов
  • systemd
  • Git
  • Работаем с github через ssh
  • Tor Service
  • Менеджер паролей pass
  • Частые проблемы
    • Система не грузится дальше rootfs
    • Grub Rescue
    • Случайно нажали Ctrl + Alt + F* и экран стал темным
    • Что делать, если каталоги открываются в VSCode?
    • Enter password to unlock your login keyring
  • Справка по командам и т.д.
    • Cheat.sh
    • Marker
    • TLDR
  • Шпаргалка по командам Shell
  • i3: Введение
  • i3: Установка и настройка
  • XTerm
  • Termite: горячие клавиши
  • Termite: цветовые схемы
  • i3: заставка lockscreen
  • i3: сохранение/восстановление рабочего пространства

Arch Linux

Arch Linux ‒ это один из немногих дистрибутивов Linux, использующих модель роллинг-релизов. Это означает, что в нем доступны самые последние версии пакетов. Это одновременно является его как преимуществом так и недостатком. Пересесть на него меня заставила необходимость: мое компьютерное железо (процессор ryzen 5 2600 и видеоадаптер rx 590) оказались не совместимы с версией Linux Kernel младше 4.20.

image

На самом деле все не так плохо, но неприятные инциденты имеют место хотя и очень редко.

Создание образа

Качаем образ и записываем его с помощью команды:

$ sudo dd if=/path/to/iso of=/dev/sdX bs=8M status=progress; sync

Где sdX – имя нашего USB устройства. Перегружаемся после удачного завершения операции.

В Windows для создания загрузочной флешки можно использовать Rufus.

image

Изменяем приоритет загрузки в BIOS/UEFI

При загрузке системы нажимаем F2 или Del (зависит от производителя материнской платы). Во вкладке BIOS в приоритете загрузки делаем первым наше USB-устройство. Нажимаем F10 и сохраняем настройки.

Начало установки

Инструкцию по установке Arch Linux можно посмотреть так:

Небольшой лайфхак: во время установки можно переключаться между терминалами с помощью Ctrl+Alt+F1..6. Если мы нажмем Ctrl+Alt+F2 откроется второй терминал (по-умолчанию мы работаем в первом) и потребуется ввести пароль root, во втором терминале мы можем открыть инструкцию и периодически подсматривать ее, переключаясь между терминалами.

Настройка сети

При подключении от кабеля ничего настраивать не надо. Настройка wifi требует ввода пары команд:

rfkill unblock wifi
wifi-menu

Следует отметить, что не все usb wifi адаптеры гараниторованно поддерживаются. Например, у меня не захотел работать dexp wfa 301, а вот с tp-link все ок.

Проверить соединение можно с помощью команды ping:

$ ping -c 3 ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=53 time=12.1 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=53 time=12.1 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=53 time=12.1 ms

--- ya.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 12.137/12.139/12.141/0.127 ms

Выбор файловой системы

Самыми удобными являются три варианта: LVM+ext4 либо Btrfs, либо Btrfs под LVM.

Теперь нужно разметить раздел по LVM. Касательно LVM: единственное удобство в нем для меня – это возможность динамически менять размер разделов. Самая частая проблема, которая у меня была раньше – это то, что я не угадывал размер для корня. Мы можем добавлять в группу другие разделы (не обязательно на одном устройстве) и устройства. Нет ограничений как для обычных разделов, когда не возможно расширить раздел за счет предыдущего, нам вообще об этом не нужно заботиться. В LVM у нас есть группы разделов и логическите разделы. У логических разделов свои файловые системы. Увеличение размера логического раздела в отличии от уменьшения размонтирования не требует. resize2fs в LVM работает заметно быстрее.

Файловая система Btrfs может размещаться на одном и более устройствах/разделах. Устройства и разделы можно как добавлять так и удалять после создания. У нас тут нет групп и логических разделов со своими файловыми системами. У нас есть только подразделы с динамическим размером, что удобно. Так же мы можем ограничить размер подраздела.

LVM и Btrfs имеют механизм снапшотов, которые позволяют сохранять состояние системы.

Размечаем диск

Для начала посмотрим все доступные устройства:

Создадим новый раздел:

# fdisk /dev/nvme0n1
# Более удобная утилита чем fdisk, в ней можно выбирать все стрелочками
cfdisk /dev/nvme0n1
# При разметке swap размещайте после home, т.е. самым последним на случай, если потребуется увеличить его размер

Если есть раздел с Windows сделайте от него отступ 1-2 MB, т.к. Windows выходит за установленные лимиты и портит соседние разделы.

Если не установлен Windows:

Создаем раздел в FAT-32 размером 300-1000 Мб, а затем форматируем его:

mkfs.fat -F32 /dev/nvme0n1p1

В дальнейших примерах предполагается, что у нас установлена Windows, которая занимает 4 раздела: recovery, efi, reserved, Windows. Поэтому в примерах новый раздел nvme0n1p5.

Вариант 1: LVM

# Создадим группу на разделе без файловой системы
vgcreate linux /dev/nvme0n1p5
# Теперь создадим в ней логические разделы:
lvcreate -L 30G linux -n root
lvcreate -L 20G linux -n home
# Можно для раздела отдать все оставшееся место
lvcreate -L +100%FREE linux -n home
mkfs.ext4 /dev/linux/root
mkfs.ext4 /dev/linux/home
mount /dev/linux/root /mnt
mkdir /mnt/home
mount /dev/linux/home /mnt/home
# Создаем файл подкачки. Не нужно верить дурачкам: он нужен всегда. Без него система будет лагать
fallocate -l 2G /mnt/swapfile
# Если хотим использовать гибернацию, то размер файла подкачки должен составлять около 2/5 от размера оперативной памяти на современном компьютере, в идеале он должен быть ему равен либо даже больше
# fallocate -l `awk '/Mem:/ {print $2}' <(free -m)`M /mnt/swapfile
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p2 /mnt/boot/efi

Вариант 2: Btrfs

# Сначала монтируем раздел
mount /dev/nvme0n1p5 /mnt
# Потом создаем на нем подразделы
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
# Теперь мы демонтируем устройство
umount /mnt
# и монтируем созданные подразделы
mount -o noatime,compress=lzo,space_cache,subvol=@ /dev/nvme0n1p5 /mnt
mkdir /mnt/home
mount -o noatime,compress=lzo,space_cache,subvol=@home /dev/nvme0n1p5 /mnt/home
# Файл подкачки нужно создавать так
# И что очень важно: поддержка файлов подкачки в Btrfs доступна в версией ядра linux, начниная с 5.0.0
truncate -s 0 /mnt/swapfile
chattr +C /mnt/swapfile
btrfs property set /mnt/swapfile compression none
# fallocate -l 2G /mnt/swapfile
# С fallocate могут возникнуть проблемы
dd if=/dev/zero of=/mnt/swapfile count=2000 bs=1M
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p2 /mnt/boot/efi

Эта инструкция лучше

Устанавливаем ядро

pacstrap /mnt base base-devel

base-devel содержит набор утилит для компиляции, позже пригодится

Генерируем fstab

genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot

При использовании LVM нужно выполнить чуть больше действий:

# Предотвращаем ошибки lvm:
#   WARNING: Failed to connect lvmetad...
#   WARNING: Device /dev/nvme0n1 not initialized in udev database...
mkdir /mnt/hostlvm
mount --bind /run/lvm /mnt/hostlvm
arch-chroot /mnt
ln -s /run/lvm /hostlvm

Настраиваем дату и локаль

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
hwclock --systohc

Далее:

Раскоментируем:

Генерируем локаль:

locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

Если пропустить этот шаг, то не будет запускаться терминал.

Прописываем хосты

echo "sergey-pc" > /etc/hostname

Добавляем в файл такие строки:

127.0.0.1 localhost
::1 localhost
127.0.1.1 sergey-pc.localdomain sergey-pc

Initramfs

mkinitcpio это Bash скрипт используемый для создания начального загрузочного диска системы. Из mkinitcpio man page:

⚠ Это обязательный шаг даже, если не используется LVM, а так же при изменение пути до корня

При использовании LVM нужно отредактировать /etc/mkinitcpio.conf и модифицировать список HOOKS, добавив lvm2 ДО ЗНАЧЕНИЯ filesystems:

HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)

Генерация:

Ставим пакеты

Эти пакеты понадобятся далее:

pacman -S linux linux-headers linux-firmware btrfs-progs sudo grub efibootmgr ntfs-3g os-prober alsa-utils xf86-video-ati xorg xorg-server

linux больше в base не входит, linux-headers для любителей покомпилировать, linux-firmware содержит набор драйверов.

btrfs-progs нужен только, если используется файловая система btrfs.

xf86-video-ati – свободный драйвер для видеокарт AMD. xorg и xorg-server можно не ставить, они являются зависимостями пакета gnome.

Пользователи

Задаем пароль для супер-пользователя:

Создаем пользователя:

useradd -m -g users -G wheel -s /bin/bash sergey

Устанавливаем пароль для нового пользователя:

passwd sergey
chage -d 0 sergey

Пароль для пользователя можно ставить 1, так как при логине придется его сменит.

Теперь в файле /etc/sudoers нужно раскоментировать строку:

%wheel ALL=(ALL:ALL) ALL

Установка grub

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Arch Linux"

Чтобы отключить автоматическую загрузку Linux, редактируем дефолтный конфиг груба:

Меняем GRUB_TIMEOUT:

GRUB_TIMEOUT=-1

Затем генерируем grub:

grub-mkconfig -o /boot/grub/grub.cfg

Ставим Gnome

pacman -S gnome
# Включаем Gnome Display Manager
systemctl enable gdm

Вместо Gnome можно попробовать тайловый менеджер i3.

Завершение установки

Включаем NetworkManager для автоматического подключения к сети:

systemctl enable NetworkManager

Надо еще настроить звук:

# Сохраним на всякий случай состояние
alsactl store
# Для автоматического сохранения/восстановления значения громкости звука:
systemctl enable alsa-restore

Теперь можно выходить и перегружаться:


man & help

$ man [ <section> ] <page>

# Section	Description
# 1	General Commands
# 2	System Calls
# 3	Library functions, covering in particular the C standard library
# 4	Special files (usually devices, those found in /dev) and drivers
# 5	File formats and conventions
# 6	Games and screensavers
# 7	Miscellanea
# 8	System administration commands and daemons

# Узнать где хранятся страницы манулов можно так
$ manpath
/usr/local/man:/usr/local/share/man:/usr/share/man

$ man -w printf
/usr/share/man/man1/printf.1.gz

# Поиск страниц по ключевому слову
$ man -k printf

# Смотрим все страницы
$ man -f printf
printf (1)           - format and print data
printf (1p)          - write formatted output
printf (3)           - formatted output conversion
printf (3p)          - print formatted output

# Выбираем конкретную
$ man 1p printf

# Краткая справка по функции
$ command -h
$ command --help

Типы файлов в выводе ls и других стандартных команд

There is only 1 command you need to know, which will help you to identify and categorize all the seven different file types found on the Linux system.

Here is an example output of the above command.

 $ ls -ld /etc/services
-rw-r--r-- 1 root root 19281 Feb 14  2012 /etc/services

ls command will show the file type as an encoded symbol found as the first character of the file permission part. In this case it is «-«, which means «regular file». It is important to point out that Linux file types are not to be mistaken with file extensions. Let us have a look at a short summary of all the seven different types of Linux file types and ls command identifiers:

- : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link

Пакетные менеджеры

Пакетным менеджером по-умолчанию для Arch Linux является pacman. Для подсветки вывода pacman в /etc/pacman.conf нужно раскомментировать Color. Пользовательским репозиторием является AUR. Пакеты из него можно использовать только на свой страх и риск. Чтобы не собирать пакеты из него ручками можно поставить yay:

sudo pacman -S git
cd /tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Пакеты всегда нужно ставить из репозиториев. Смысла собирать их из исходников нет, так как в AUR и так самые последние версии. Так будет меньше хлама оставаться в системе после их удаления.

В AUR много пакетов, оканчивающихся на -git. При их установке исходники копируются с github, а затем собираются, что занимает много времени и требуется дополнительное дисковое пространство для создания временных файлов и т.п., а еще для сборки могут потребоваться дополнительные пакеты. Поэтому лучше избегать установки таких пакетов, если есть альтернативы.

Синтаксис команды Yay аналогичен pacman. Так что будет полезным почитать справку по pacman.

Ссылки:

  • Сравнеие пакетных менеджеров.

Нужные пакеты

Это список необходимых для меня пакетов:

yay -Sy linux-headers  # нужны для компиляции некоторых программ
  wget  # позволяет выполнять HTTP-запросы, скачивать файлы
  curl  # делает то же самое, что и предыдущий
  adobe-source-code-pro-fonts  # шрифт для терминала, нужен для темы Oh My Zsh! agnoster
  ttf-droid  # шрифт по-умолчанию для VScode
   # шрифты по-умолчанию для Chrome
   # consolas-font 
   # ttf-ms-fonts 
  arc-gtk-theme-git  # тема для интерфейса
  apache  # самый популярный веб-сервер
  apache-tools  # содержит ab, нагрузочный клиент
   # blender  # самый простой 3D-редактор
  dconf-editor  # все настройки gnome в одном месте
  dmraid  # утилита для работы с raid-массивами дисков
  docker-compose  # содержит docker и docker compose
  exfat-utils  # добавляет поддержку файловой системы exfat
  firefox  # один из лучших браузеров, единственный конкурент Chrome и единственный популярный non-chromium браузер
  flat-remix-git  # тема с иконками
   # gimp  # скромненький аналог Photoshop
  gnome-panel  # я ставил только чтобы ярлыки из GUI создавать
  google-chrome  # лучший браузер, противники проприетарщины предпочитают chromium
  chrome-gnome-shell  # позволяет устанавливать расширения для Gnome
  gparted  # графическая оболочка для разметки дисков
  htop  # показывает запущенные процессы, загрузку cpu и потребление памяти
   # inkscape  # векторный графический редактор
   # mariadb  # свободная реализация самой популярной СУБД MySQL
  mc  # аналог виндового Far + mcedit, замена nano
   # mongodb-bin  # лучшая NoSQL база данных
  net-tools  # содержит netstat
  neofetch  # выводит в консоль информацию о системе
  nginx  # самый быстрый веб-сервер
  ntfs-3g  # добавляет поддержку файловой системы ntfs
   # nvm  # менеджер версий для Node.js
   # postgresql  # лучшая SQL база данных
   # phpenv  # менеджер версий для PHP
   # pyenv  # менеджер версий для Python
  asdf-vm  # Заменяет собой все выше перечисленные менеджеры версий + умеет управлять базами
   # pgadmin4  # админка для Postgres
   # pgmodeler  # визуальный редактор для моделирования в Postgres
   # redis  # СУБД в оперативной памяти, используемая для межпроцессового взаимодействия
  smartmontools  # утилита для проверки состояния SSD
  telegram-desktop-bin  # лучший мессенджер
  texmaker  # редактор LaTex, генерирует PDF
  tor  # сервис, который можно использовать для подключения к сети Tor
  torsocks  # утилита torify, которая заставляет другие программы работать через Tor
  transmission-qt  # торрент-клиент
  thunderbird  # email-клиент
  virtualbox  # виртуальная машина, позволяет запускать Windows и Linux
  visual-studio-code-bin  # лучший бесплатный текстовый редактор
  vlc  # видеоплеер
  websocat-bin  # утилита для тестированя вебсокетов
  woeusb  # создание загрузочных флешек с Windows
  xclip  # копирование файла в буффер обмена из консоли
  seahorse  # Приложение для управления паролями, а так же PGP и SSH ключами
  baobab  # Приложения для мониторинга дисков
  jq  # Утилита для работы с JSON
  pv  # получает на вход поток и перенаправляет его, показывая статистику
  httpie  # лучшая замена curl с подсветкой вывода
  tor-browser  # Tor браузер
  

Заменяем ядро на стабильное

Если надоело, что что-то ломается почти после каждого обновления ядра, запускаем терминал и выполняем:

yay -S linux-lts linux-headers-lts
yay -R linux linux-headers
mkinitcpio -p linux

Масштабировавние 150% как в Windows

По-умолчанию в Gnome масштабирование кратно 100. Чтобы добавить варианты масштабирования 125% и 150% нужно выполнить в терминале:

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Отключение:

gsettings reset org.gnome.mutter experimental-features

Расширения для Gnome

Устанавливаем расширение для Chrome.

image

Управление расширениями осуществляется через Tweaks.

image

Расширения для установки:

Название Описание
Dash to Dock. Выезжающий Dash — панель с избранными приложениями
Desktop Icons Иконки на рабочем столе
ShellTile Тайловый менеджер
Log Out Button Добавляет кнопку, которая выполняет выход из системы

Пользовательские сочетания клавиш

В Settings → Devices → Keyboard добавляем сочетания клавиш:

  • Ctrl + Alt + T для запуска терминала (gnome-terminal);
  • Ctrl + Alt + V для запуска Visual Code (code).

image

Запуск исполняемых файлов по двойному клику в Nautilus

Заставляем Nautilus выполнять исполняемые файлы вместо открытия их в текстовом редакторе. Нужно нажать на три точки, а потом выбрать Preferences:

image

Добавляем новые действия в контекстное Nautilus

$ yay -S filemanager-actions

У программы есть интерфейс, который позволяет добавлять свои команды. Существуют два плейсхолдера: %d для текущего каталога и %f для файла.

To install nautilus-action on Ubuntu, run simply this command via the Terminal:

sudo apt-get install nautilus-actions
(or equivalant packet manager as yum or pacman)

After the installation is complete, let’s now see a quick example of how to add an extra action to the right-click menu with nautilus-actions.

The example consists of adding to the right-click menu the «Edit With Gimp» action to edit, for example, image files using The Gimp (Image Editor).

_Using the dash search «nautilus-actions» and click Nautilus-Actions Configuration.

_Under the Action tab, fill the following fields:

Context label: The text that will be displayed in the right-click menu, in our example, it’s «Edit With Gimp»
Icon: This option allows to select an icon for your action (optional)
_Open now the Command tab and fill in the following fields:

Label: Enter any label of your choice for your action.
Path: Enter the path to the program you want to use using the Browse button. For our example, we will simply type «gimp».
Parameters: Click the Legend button to get suggested parameters. In our example, we will use the %f parameter to be able to edit image files with The Gimp.
_Log out the current session and log on again, or simply restart Nautilus with these commands from the Terminal:

nautilus -q
nautilus

Страница проекта.

Шаблоны файлов

Чтобы в Nautilus в контекстном меню отображался пункт New Document, нужно в ~/Templaytes создать шаблоны файлов:

touch ~/Templates/{Empty Document,Text Document.txt,README.md,pyfile.py}

Гибернация

Режим гибернациии от режима сна отличается тем, что в первом случае содержимое оперативной памяти сохраняется на жесткий диск и питание полностью отключается, во втором — питание подается только на оперативку. Чем хороша гибернация? — Например, мы работаем в Linux, вошли в режим гибернации, а затем загрузились в Windows и играем. Когда мы в следующий раз загрузимся в Linux, то увидим все то, что было перед выключением. Прекрасно?! Но часто ли такое нужно?

При переходе в режим гибернации делается дамп используемой оперативной памяти на диск. Размер файла/раздела подкачки для этих целей советуют делать не менее 2/5 от объема RAM на современных компьютерах. Так же можно применять сжатие при дампе. Про гибернацию лучше почитать здесь.

Режим гибернации по-умолчанию отключен. Чтобы его включить для начала нужно узнать UUID раздела, где расположен своп, а так же смещение своп-файла относительно начала раздела:

$ lsblk `df /swapfile | awk '/^/dev/ {print $1}'` -no UUID
217df373-d154-4f2e-9497-fcac21709729
$ sudo filefrag -v /swapfile | awk 'NR == 4 {print $5}' | cut -d ':' -f 1
1423360

screenshot from 2019-02-23 02-12-34

В /etc/default/grub прописать:

GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=217df373-d154-4f2e-9497-fcac21709729 resume_offset=1423360"

resume_offset нужен только для файла. Для дисков и разделов вместо UUID можно указывать /dev/sda3 или /dev/mapper/linux-swap.

Теперь нужно изменить /etc/mkinitcpio.conf:

# resume должен следовать после filesystems
HOOKS=(...filesystems resume...)

Обновляем grub и генерируем initramfs:

sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo mkinitcpio -p linux

Сам переход в режим гибернации выглядит так:

Чтобы появилась кнопка для перехода в режим гибернации ставим расширение.

image
image

RAID

Аппаратный RAID

В Linux RAID на аппаратном уровне называют FakeRAID. Для работы с FakeRAID используется пакет dmraid.

Редактируем конфиг mkinitcpio:

sudo nano /etc/mkinitcpio.conf

В хуки добавляем dmraid:

HOOKS=(base udev autodetect modconf block lvm2 dmraid filesystems keyboard fsck)

И генерируем mkinitcpio:

На моей материнке с чипсетом b450 с апаратным RAID из Linux работать нельзя: нет драйвера.

Программный Windows RAID

Этот раздел можно было бы озаглавит как RAID, доступный в Windows и в Linux. В Windows, в Disk Management нужно создать Striped Volume, аналог RAID 0 (правой кнопкой мыши по нужному диску). Это когда данные пишутся параллельно на разные устройства без дублирования. Одтн блок пишется на один диск, другой на второй, причем одновременно. Чтение происходит также. Таким образом при использовании 2 дисков мы получаем двойную скорость чтения/записи.

$ yay -S ldmtool

$ sudo ldmtool scan                                                
[
  "8d0cc1a7-b10c-11e9-80d3-b42e9916909d"
]

$ sudo ldmtool show diskgroup 8d0cc1a7-b10c-11e9-80d3-b42e9916909d 
{
  "name" : "DESKTOP-VR9KKHM-Dg0",
  "guid" : "8d0cc1a7-b10c-11e9-80d3-b42e9916909d",
  "volumes" : [
    "Volume1"
  ],
  "disks" : [
    "Disk1",
    "Disk2"
  ]
}

$ sudo ldmtool create all                                          
[
  "ldm_vol_DESKTOP-VR9KKHM-Dg0_Volume1"
]

Теперь можно монтировать устройство /dev/mapper/ldm_vol_DESKTOP-VR9KKHM-Dg0_Volume1.

Но нам нужно чтобы устройство автоматически создавалось. Для этого нужно создать сервис /etc/systemd/system/ldmtool.service:

[Unit]
Description=Windows Dynamic Disk Mount
Before=local-fs-pre.target
DefaultDependencies=no
[Service]
Type=simple
User=root
ExecStart=/usr/bin/ldmtool create all
[Install]
WantedBy=local-fs-pre.target

Включим его:

$ sudo systemctl enable ldmtool.service

Редактируем /etc/fstab:

/dev/mapper/ldm_vol_DESKTOP-VR9KKHM-Dg0_Volume1 /mnt/d ntfs-3g rw,user,fmask=0111,dmask=0000 0 0

В Windows есть так же технология Storage Spaces, но ее поддержка в Linux не реализована.

Права

4 — Чтение (r)
2 — Запись (w)
1 — Выполнение (x)

Сумма этих чисел дает разные сочетания типа:
1 + 2 + 4 = 7 или 1 + 4 = 5

Права задаются тремя числами, например, 755, где первое число – права владельца, далее: группа и остальные пользователи. Владелец может делать все (1 + 2 + 4 = 7), другие пользователи – только читать и исполнять файлы (1 + 4 = 5).

Для работы с правами на файлы используется команда chroot:

В Python права можно записывать так:

$ ll
total 20K
drwxr-xr-x 3 sergey sergey 4,0K июн 20 17:22 backend
...

d         | rwx      | r-x    | r-x
тип файла | владелец | группа | остальные

Ссылки:

  • Права доступа к файлам и каталогам

Монтирование

$ sudo mount [ -t <fs> ] <device> <path> [ -o <options> ]

# Можно монтировать образы, созданные через dd
mount -t fstype -o loop,ro image.dd /mntpoint

Опции:

ro     Mount the filesystem read-only.

rw     Mount the filesystem read-write.

sync   All I/O to the filesystem should be done synchronously.  In  the
	case  of  media with a limited number of write cycles (e.g. some
	flash drives), sync may cause life-cycle shortening.

user   Allow an ordinary user to mount the filesystem.  The name of the
	mounting  user  is  written  to the mtab file (or to the private
	libmount file in /run/mount on systems without a  regular  mtab)
	so  that  this same user can unmount the filesystem again.  This
	option implies the options noexec,  nosuid,  and  nodev  (unless
	overridden   by  subsequent  options,  as  in  the  option  line
	user,exec,dev,suid).

noexec ‒ запретить выполнение файлов
noatime ‒ не обновлять время домступа к файлу
defaults = rw,suid,dev,exec,auto,nouser,async
uid ‒ 1000 для первого пользователя
gid ‒ см. далее

$ id
uid=1000(sergey) gid=985(users) groups=985(users),969(docker),998(wheel)

users  Allow any user to mount and to unmount the filesystem, even when
	some other ordinary user mounted it.  This  option  implies  the
	options  noexec,  nosuid, and nodev (unless overridden by subse‐
	quent options, as in the option line users,exec,dev,suid).

umask=value
	Set the umask (the bitmask  of  the  permissions  that  are  not
	present).  The default is the umask of the current process.  The
	value is given in octal.

dmask=value
	Set the umask applied to directories only.  The default  is  the
	umask of the current process.  The value is given in octal.

fmask=value
	Set the umask applied to regular files only.  The default is the
	umask of the current process.  The value is given in octal.

Указываются права не в виде восьмиричного числа!

    0   1   2   3   4   5   6   7
r   +   +   +   +   -   -   -   -
w   +   +   -   -   +   +   -   -
x   +   -   +   -   +   -   +   -

Например, 0755 = 0022
  • mount.

Добавляем путь в PATH

  • Bash Shell: ~.bash_profile, ~/.bashrc or ~/.profile
  • Korn Shell: ~/.kshrc or ~/.profile
  • Z Shell: ~/.zshrc or ~/.zprofile
export PATH=/path/to/bin:$PATH

bin в домашнем каталоге

mkdir ~/bin
echo 'export PATH=$HOME/bin:$PATH' >> ~/.zprofile
# or
echo 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Теперь самописные скрипты можно кидать в ~/bin, так они будут доступны только для текущего пользователя.

~/bin/hello:

#!/usr/bin/env bash
function hello() {
  local name=${1:-World}
  printf "Hello, %s!n" $name
}
hello $@

Сделаем скрпит исполняемым:

Проверка:

# Если не перелогинивались после добавления пути в ~/.zprofile, то сначала выполняем
$ source ~/.zprofile
$ hello $USER
Hello, sergey!

Монтируем Windows разделы

Редактируем /etc/fstab:

/dev/nvme0n1p4 /mnt/c ntfs-3g rw,user,fmask=0111,dmask=0000 0 0

Шрифты

Шрифты надо кидать в /usr/share/fonts либо в ~/.fonts или в ~/.local/share/fonts.

# Обновить шрифты
$ fc-cache -f -v

# Чтобы проверить установлен ли шрифт
$ fc-list | grep "<name-of-font>"

Шарим Windows шрифты:

$ sudo ln -sf /mnt/c/Windows/Fonts /usr/share/fonts/WindowsFonts

screenshot from 2019-02-20 23-17-46

Наборы шрифтов:

  • Powrline Fonts;
  • Nerd Fonts.

Emoji

yay -S ttf-joypixels

Я не совсем понимаю как отображаются emoji. В гномовских приложения они выглядят одинаково, а в сторонних, в том же VScode рендерятся по-другому.

Спецсимволы

Для вставки специальных символов в Gnome применяется сочетание клавиш Ctrl+Shift+U, далее вводим 4-х значный код символа.

Символ Unicode
« 00ab
» 00bb
© 00a9
2122
§ 00a7
2013
20ac
20bd
2192
λ 03bb

Сетевые интерфесы

$ ifconfig -a
...
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.106  netmask 255.255.255.0  broadcast 192.168.0.255
...

# inet 192.168.0.106 ‒ это наш адрес в локальной сети, если запустить на локальной машине nginx, то перейдя по ссылке http://192.168.0.106 мы увидим приветствие Nginx

Расшифрорвка имен:

Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan

Так же можно менять свой локальный ip.

Ссылки:

(Linux ifconfig command)[https://www.computerhope.com/unix/uifconfi.htm].

Блокируем сайты с рекламой через hosts

# Сохраняем копию оригинального файла
$ cp /etc/hosts ~/Documents/hosts.bak
$ wget -qO- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sudo tee --append /etc/hosts

Информация о железе

$ lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.4 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 5 (rev c4)
00:1c.5 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 6 (rev c4)
00:1c.6 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 7 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation H77 Express Chipset LPC Controller (rev 04)
00:1f.2 IDE interface: Intel Corporation 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
00:1f.5 IDE interface: Intel Corporation 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] (rev 04)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 09)
04:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)
05:00.0 IDE interface: Marvell Technology Group Ltd. 88SE9172 SATA III 6Gb/s RAID Controller (rev 11)

# Видеоадаптер(ы)
$ lspci -v | grep "VGA" -A 12

# SATA-устройства
$ lsscsi

# Список USB-устройств
$ lsusb

# Очень подробная информация о всех устройствах
$ inxi -Fx

$ hwinfo --short
cpu:
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3500 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3480 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3500 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3491 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3550 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3484 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3492 MHz
                       Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz, 3496 MHz
keyboard:
  /dev/input/event2    Logitech Keyboard K120
mouse:
  /dev/input/mice      Logitech M-U0004 810-001317 [B110 Optical USB Mouse]
monitor:
                       SAMSUNG SMS24A650
                       SAMSUNG SMB2340
graphics card:
                       Intel 2nd Generation Core Processor Family Integrated Graphics Controller
sound:
                       Intel 7 Series/C216 Chipset Family High Definition Audio Controller
storage:
                       Intel 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode]
                       Intel 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode]
                       Marvell 88SE9172 SATA III 6Gb/s RAID Controller
network:
  enp3s0               Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
  wlp4s0               Qualcomm Atheros AR9485 Wireless Network Adapter
network interface:
  docker0              Ethernet network interface
  enp3s0               Ethernet network interface
  lo                   Loopback network interface
  wlp4s0               Ethernet network interface
  br-1d7c88a3dc61      Ethernet network interface
disk:
  /dev/sdb             WDC WD5000AZLX-0
  /dev/sda             INTEL SSDSC2CW24
partition:
  /dev/sdb1            Partition
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda3            Partition
usb controller:
                       Intel 7 Series/C216 Chipset Family USB Enhanced Host Controller #2
                       Intel 7 Series/C216 Chipset Family USB Enhanced Host Controller #1
                       Intel 7 Series/C210 Series Chipset Family USB xHCI Host Controller
bios:
                       BIOS
bridge:
                       Intel 7 Series/C216 Chipset Family PCI Express Root Port 1
                       Intel H77 Express Chipset LPC Controller
                       Intel Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
                       Intel 7 Series/C210 Series Chipset Family PCI Express Root Port 6
                       Intel 2nd Generation Core Processor Family DRAM Controller
                       Intel 7 Series/C210 Series Chipset Family PCI Express Root Port 7
                       Intel 7 Series/C210 Series Chipset Family PCI Express Root Port 5
hub:
                       Intel Integrated Rate Matching Hub
                       Linux Foundation 2.0 root hub
                       Linux Foundation 3.0 root hub
                       Linux Foundation 2.0 root hub
                       Intel Integrated Rate Matching Hub
                       Linux Foundation 2.0 root hub
memory:
                       Main Memory
unknown:
                       FPU
                       DMA controller
                       PIC
                       Keyboard controller
  /dev/lp0             Parallel controller
                       Intel 7 Series/C216 Chipset Family MEI Controller #1
                       Intel 7 Series/C216 Chipset Family SMBus Controller
                       Serial controller
  /dev/input/event3    Logitech Keyboard K120

# Список блочных устройств
$ lsblk

# Покажет разделы и занимаемое ими место
$ df -h

# Fdisk is a utility to modify partitions on hard drives, and can be used to list out the partition information as well.

$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x30093008

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   146801969    73400953+   7  HPFS/NTFS/exFAT
/dev/sda2       146802031   976771071   414984520+   f  W95 Ext'd (LBA)
/dev/sda5       146802033   351614654   102406311    7  HPFS/NTFS/exFAT
/dev/sda6       351614718   556427339   102406311   83  Linux
/dev/sda7       556429312   560427007     1998848   82  Linux swap / Solaris
/dev/sda8       560429056   976771071   208171008   83  Linux

# The mount is used to mount/unmount and view mounted file systems.

$ mount | column -t
/dev/sda6    on  /                                            type  ext4             (rw,errors=remount-ro)
proc         on  /proc                                        type  proc             (rw,noexec,nosuid,nodev)
sysfs        on  /sys                                         type  sysfs            (rw,noexec,nosuid,nodev)
none         on  /sys/fs/cgroup                               type  tmpfs            (rw)
none         on  /sys/fs/fuse/connections                     type  fusectl          (rw)
none         on  /sys/kernel/debug                            type  debugfs          (rw)
none         on  /sys/kernel/security                         type  securityfs       (rw)
udev         on  /dev                                         type  devtmpfs         (rw,mode=0755)
devpts       on  /dev/pts                                     type  devpts           (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs        on  /run                                         type  tmpfs            (rw,noexec,nosuid,size=10%,mode=0755)
none         on  /run/lock                                    type  tmpfs            (rw,noexec,nosuid,nodev,size=5242880)
none         on  /run/shm                                     type  tmpfs            (rw,nosuid,nodev)
none         on  /run/user                                    type  tmpfs            (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none         on  /sys/fs/pstore                               type  pstore           (rw)
/dev/sda8    on  /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1  type  ext4             (rw,nosuid,nodev,errors=remount-ro)
/dev/sda5    on  /media/4668484A68483B47                      type  fuseblk          (rw,nosuid,nodev,allow_other,blksize=4096)
binfmt_misc  on  /proc/sys/fs/binfmt_misc                     type  binfmt_misc      (rw,noexec,nosuid,nodev)
systemd      on  /sys/fs/cgroup/systemd                       type  cgroup           (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse   on  /run/user/1000/gvfs                          type  fuse.gvfsd-fuse  (rw,nosuid,nodev,user=enlightened)

# Again, use grep to filter out only those file systems that you want to see

$ mount | column -t | grep ext

# The dmidecode command is different from all other commands. It extracts hardware information by reading data from the SMBOIS data structures (also called DMI tables).

# display information about the processor/cpu
$ sudo dmidecode -t processor

# memory/ram information
$ sudo dmidecode -t memory

# bios details
$ sudo dmidecode -t bios

# cpu information
$ cat /proc/cpuinfo

# memory information
$ cat /proc/meminfo

$ cat /proc/version
Linux version 3.11.0-12-generic (buildd@allspice) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7) ) #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013

# SCSI/Sata devices

$ cat /proc/scsi/scsi
Attached devices:
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST3500418AS      Rev: CC38
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: SONY     Model: DVD RW DRU-190A  Rev: 1.63
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Partitions

$ cat /proc/partitions
major minor  #blocks  name

   8        0  488386584 sda
   8        1   73400953 sda1
   8        2          1 sda2
   8        5  102406311 sda5
   8        6  102406311 sda6
   8        7    1998848 sda7
   8        8  208171008 sda8
  11        0    1048575 sr0

# The hdparm command gets information about sata devices like hard disks.

$ sudo hdparm -i /dev/sda

/dev/sda:

 Model=ST3500418AS, FwRev=CC38, SerialNo=9VMJXV1N
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode

Редактирование DConf

DConf хранит профили терминала в ~/.config/dconf/user, в формате GVDB пруф.

image

# Делаем дамп
$ dconf dump / > /tmp/dconf
# Редактируем и загружаем
$ dconf load / < /tmp/dconf

ZSH

Установка ZSH

Меняем shell на /bin/zsh:

Чтобы изменения вступили в силу нужно залогиниться по-новой.


## [Oh My Zsh](https://github.com/robbyrussell/oh-my-zsh)

Установка:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Пакет из репозитория ставится вне домашнего каталога, а потому требует root права при установке плагинов, что не удобно.

Так же для некоторых тем Oh My Zsh нужны шрифты наподобие Powerline:

Ставим must-have плагины:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

Изменяем .zshrc:

ZSH_THEME="agnoster"
...
plugins=(
  command-not-found
  extract
  git
  zsh-autosuggestions
  zsh-completions
  zsh-syntax-highlighting
)

autoload -Uz compinit && compinit

source $ZSH/oh-my-zsh.sh

Для темы Agnoster настройках терминала выбираем шрифт Source Code Pro Regular, чтобы отображались стрелочки.

  • Встроенные темы;
  • Сторонние темы;
  • Так же можно поискать на Github’е.

ZGen

Позволяет избавиться от мусора в ~/.zshrc.

Пример файла ~/.zshrc:

# load zgen
source /usr/share/zsh/share/zgen.zsh

# if the init script doesn't exist
if ! zgen saved; then

  # specify plugins here
  zgen oh-my-zsh
  zgen oh-my-zsh plugins/git
  zgen oh-my-zsh plugins/sudo
  zgen oh-my-zsh plugins/command-not-found
  zgen oh-my-zsh plugins/extract 
  zgen load zsh-users/zsh-autosuggestions
  zgen load zsh-users/zsh-completions
  zgen load zsh-users/zsh-syntax-highlighting
  zgen load caiogondim/bullet-train-oh-my-zsh-theme bullet-train

  # generate the init script from plugins above
  zgen save
fi

После изменения .zshrc делаем zgen reset, а потом exec "$SHELL"?

См. справку:

Темы Oh My Zsh!

Bullet Train for oh-my-zsh

$ wget -P $ZSH_CUSTOM/themes https://raw.githubusercontent.com/caiogondim/bullet-train-oh-my-zsh-theme/master/bullet-train.zsh-theme

Jovial

# Сначала сохраняем копию zhsrc, потому как jovial изменить оригинальеный файл
$ cp ~/.zshrc ~/.zshrc.bak
$ curl -sSL git.io/jovial | sudo bash -s $USER

У меня эта тема упорно устанавливается в /root/.oh-my-zsh.

Powerlevel10k

Это красивая тема для ZSH.

git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

~/.zshrc:

ZSH_THEME=powerlevel10k/powerlevel10k

Изменим prompt:

cd && curl -fsSLO https://raw.githubusercontent.com/romkatv/dotfiles-public/master/.purepower
echo 'source ~/.purepower' >>! ~/.zshrc

image

Подробнее про ZSH

  • Приемы при работе с ZSH.

Разноцветный cat

  • ccat;
  • lolcat.

Цветовые схемы для терминала

# Интерактивная установка
# Падает с ошибкой, если нет профиля по-умолчаниюю для терминала
# Для всех созданных профилей будет использовавться шрифт профиля по-умолчанию
bash -c  "$(wget -qO- https://git.io/vQgMr)"
# Удаление всех профилей
dconf reset -f /org/gnome/terminal/legacy/profiles:/

Ссылки:

  • Обзор тем.

Бекап системы

Предполагается, что бекап мы будем делать с установочной флешки.

mkdir /mnt/{backup,root}
mount /path/to/backup /mnt/backup
mount /path/to/root /mnt/root

# Делаем бекап
cd /mnt/root
tar -cvpzf /mnt/backup/root.tar.gz .

# Извлекаем бекапа
tar -xzpvf /mnt/backup/root.tar.gz -C /mnt/root

Ссылки:

  • Делаем бекап системы с помощью tar.

asdf-vm

Установка asdf через Git:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"

echo -e 'n. $HOME/.asdf/asdf.sh' >> ~/.zshrc
echo -e 'n. $HOME/.asdf/completions/asdf.bash' >> ~/.zshrc

Установка asdf через AUR:

В ~/.zshrc (после compinit) добавляем строки:

. /opt/asdf-vm/asdf.sh
. /opt/asdf-vm/completions/asdf.bash

В ~/.zprofile:

export PATH=/opt/asdf-vm/bin:$PATH

Эту строку можно и в ~/.zshrc.

Удаление:

rm -rf ~/.asdf/ ~/.tool-versions

Примеры:

$ asdf plugin-add python
$ asdf install python 3.7.3
$ asdf install python 2.7.15
$ asdf list python
  2.7.15
  3.7.3
$ asdf uninstall python 2.7.15
$ asdf global python 3.7.3
# Сделать системную версию Python глобальной
$ asdf global python system
$ which python
/home/sergey/.asdf/shims/python

$ asdf plugin-add nodejs
# see: <https://github.com/asdf-vm/asdf-nodejs#install>
$ bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
$ asdf install nodejs 10.16.0
$ asdf global nodejs 10.16.0
$ which node
/home/sergey/.asdf/shims/node
$ which npm
/home/sergey/.asdf/shims/npm
$ asdf list
golang
  1.12
nodejs
  10.16.0
postgres
  11.4
python
  2.7.15
  3.7.3
sqlite
  3.29.0

Все доступные плагины. При установке, использовании плагинов могут возникать проблемы. Например, плагин для Python работает поверх pyenv и при возникновении проблем, следует изучить страницу «Common build problems».

If you use pip to install a module like ipython that has a binaries. You will need to run asdf reshim python for the binary to be in your path.

После установки через pip пакетов, которые добавляют команды, чтобы те были доступны, нужно всегда выполнять asdf reshim python.

Ссылки:

  • Документация.

NVM

⚠️ Использование asdf-vm предпочительнее.

Устанавливаем последнюю версию Node.js:

Настройка Docker

$ yay -S docker
$ sudo systemctl start docker
$ sudo systemctl enable docker
# sudo groupadd docker
# groupadd: group 'docker' already exists
sudo usermod -aG docker $USER

Нужно выйти и войти в систему, а потом проверить:

Ссылка.

Настройка Visual Code

{
  "editor.fontSize": 16,
  "editor.rulers": [
    72,
    80,
    100,
    120
  ],
  "editor.tabSize": 2,
  "editor.wordWrap": "bounded",
  "editor.wordWrapColumn": 120,
  "files.insertFinalNewline": true,
  "files.trimFinalNewlines": true,
  "files.trimTrailingWhitespace": true,
  "terminal.integrated.fontFamily": "Source Code Pro"
}

LVM

Список логических разделов LVM:

$ sudo lvscan
  ACTIVE            '/dev/linux/root' [40.00 GiB] inherit
  ACTIVE            '/dev/linux/home' [20.00 GiB] inherit

Изменение размера логического раздела:

# Ключ -r выполняет resizefs
$ lvresize -r -L +10G /dev/linux/home

# Аналогично двум командам:

# Увеличиваем размер логического раздела
$ sudo lvresize -L +10GB /dev/mapper/linux-home

# После lvresize нужно обязательно изменить размер файловой системы
$ sudo resize2fs /dev/mapper/linux-home

# Делает то же самое, что и две команды выше
$ sudo lvresize -r -L +10GB /dev/mapper/linux-root

Переименование логического раздела:

$ sudo lvrename <oldname> <newname>

После нужно отредактировать /etc/fstab, изменив пути до разделов, а затем выполнить:

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

Btrfs

Про снапшоты. В Btrfs есть механизм, аналогичный git, который позволяет фиксировать изменения снимками. Снапшоты хранят в себе только изменения между снимками, поэтому занимают мало места и по этой же причине не могут быть созданы вне текущей файловой системы. Они содержат только диффы. Как только мы создали снапшот, состояние системы зафиксировалось. Например у нас есть три файла: foo, bar, baz. Мы сделали снапшот, а потом удалили foo и baz, но пока существует снапшот эти файлы продолжат занимать место + если мы изменим bar, то и его первоначальная копия продолжит свое существование. Так что чтобы освободить место придется периодически удалять ненужные снапшоты.

Обнаружил баг: из-за своп-файла не делались снапшоты корня.

# Создать subvolume
$ sudo btrfs sub create /path/to/@name

# Создание снапшота
# Снапшоты являются разновидностью полдазделов, потому с ними можно выполнять те же операции
$ sudo mkdir /.snapshots
$ sudo chmod 750 /.snapshots

# Этой командой не получится создать снапшот на другой Btrfs (на флешке)
$ sudo btrfs sub snap -r /home /.snapshots/@home_`date +%F-%s`
Create a readonly snapshot of '/home' in '/.snapshots/@home_2019-07-15-1563181292'

$ sudo btrfs sub li -a /
ID 257 gen 1457 top level 5 path <FS_TREE>/@
ID 258 gen 1458 top level 5 path <FS_TREE>/@home
ID 281 gen 1458 top level 5 path <FS_TREE>/@var
ID 283 gen 1458 top level 257 path <FS_TREE>/@/.snapshots/@home_2019-07-15-1563181292

# Удаление снапшота аналогично удалению подраздела
$ sudo btrfs sub del /.snapshots/@home_2019-07-15-1563181292
Delete subvolume (no-commit): '/.snapshots/@home_2019-07-15-1563181292'

# Смонтировать subvolume/снапшот по указанному пути
$ sudo btrfs sub set-default <ID> /

# Восстановление данных

# С сохранением снапшота
$ cp -aR --reflink /.snapshots/@home_YYYY-MM-DD-ssssssssss /@home

# С удалением снапшота
# Таким же способом можно переименовывать подразделы/снапшоты
$ mv /.snapshots/@home_YYYY-MM-DD-ssssssssss /@home

$ btrfs filesystem df /
Data, single: total=15.01GiB, used=12.42GiB
System, single: total=4.00MiB, used=16.00KiB
Metadata, single: total=1.01GiB, used=772.20MiB
GlobalReserve, single: total=44.47MiB, used=0.00B

# Как сделать бекап и восстановить его в другой ФС
$ btrfs send /source/subvolume >/another/filesystem/subvolume-image   # just a file
# (or you can gzip it and/or send with nc on the fly, whatever)
# then later
$ </another/filesystem/subvolume-image btrfs receive /some/btrfs/directory

# Можно так же добавлять новые разделы и устройства в уже существующую ФС
# Можно так же сделатиь ограничения на размер подраздела, добавив его в группу и включив для него квоту
$ man btrfs
бтрфс ничего не жмет.
наилучший вариант сделать ридонли снапшот системы, потом из снапшота сделать образ через send и уж его можно жать и в хвост и в гриву
к примеру

sudo btrfs filesystem sync /
sudo btrfs subvolume snapshot -r / /mnt/backup/root_base
sudo btrfs send /mnt/b11/root_base | gzip > root_`date '+%F'`.gz

но почему бы не воспользоваться обыденным tar ??
так-то формат упаковки btrfs-stream (формат выхода btrfs send) не фундаментально отличается от формата tar. выполнить на сервере

sudo tar -czpf %backup%/srv4full-`date "+%F"`.tgz -X /etc/backupfull_exclude /

в файл /etc/backupfull_exclude пишешь список того что не нужно упаковывать в архив с системой (кроме классических /dev /proc /run /sys и прочих еще докинуть саму директорию куда архивишься  и плюс рабочие директории сервисов, к примеру база данных такую архивацию не всегда переживет)
а далее восстановление из tar архива

если свободного места на сервере будет меньше трети всего объема то такой бекап может не прокатить, либо жать сильнее к примеру через lzma (жрет памяти и проц очень хорошо) либо писать напрямую по интернету к себе (если будет разрыв то передача обломится)

Типы файловых систем:

Flat:

toplevel         (volume root directory, not to be mounted by default)
  +-- root       (subvolume root directory, to be mounted at /)
  +-- home       (subvolume root directory, to be mounted at /home)
  +-- var        (directory)
  |   -- www    (subvolume root directory, to be mounted at /var/www)
  -- postgres   (subvolume root directory, to be mounted at /var/lib/postgresql)

Nested:

toplevel                  (volume root directory, to be mounted at /)
+-- home                  (subvolume root directory)
+-- var                   (subvolume root directory)
    +-- www               (subvolume root directory)
    +-- lib               (directory)
         -- postgresql   (subvolume root directory)

Snapper

Snapper ‒ это утилита для управления снапшотами для LVM и Btrfs.

# Установка
$ yay -S snapper

# Глобальные настройки
$ sudo nano /etc/conf.d/snapper

# Из этого шаблона генерируются другие конфиги
# Тут мы увеличим время после которого снапшоты будут удаляться до 24 часов
$ sudo sed -ri 's/MIN_AGE="[0-9]+"/MIN_AGE="86400"/g' /etc/snapper/config-templates/default

# Создаем конфиги для каждого подраздела отдельно
$ sudo snapper -c root create-config /
$ sudo snapper -c home create-config /home
$ sudo snapper -c var create-config /var

# Сгенерированные шаблоны находятся в /etc/snapper/configs

# Список конфигов
$ sudo snapper list-configs
Config | Subvolume
-------+----------
home   | /home
root   | /
var    | /var

# Созданные конфиги меют такой адрес: /etc/snapper/configs/<config>

# Список снапшотов для конфига
$ snapper -c CONFIG list

# Удаление конфига
$ sudo snapper -c CONFIG delete-config

# Создать новый снапшот
$ snapper -c CONFIG snapshot

# Удалить снапшот
$ snapper -c CONFIG delete snapshot_number

# Удалить диапазон снапшотов
$ snapper -c CONFIG delete snapshot_X-snapshot_Y

<<<<<<< HEAD
# Включаем автоматическое создания снапшотов
# Запускаем бекап через 5 минут после загрузки и далее каждые 24 часа
=======
# Добавляем .snapshots в исключения для mlocate
$ sudo nano /etc/updatedb.conf
...
PRUNENAMES = ".git .hg .svn .snapshots"
...

# Делаем снимки через 5 минут после загрузки и далее каждые 24 часов
>>>>>>> c67ee04f7511ffe5c7ed83f2c751da05ac42de29
$ sudo nano $(locate snapper-timeline.timer)
...
[Timer]
OnBootSec=5min
OnUnitActiveSec=24h
...

# Включаем автоматическое создания снапшотов
$ sudo systemctl enable snapper-timeline.timer && sudo systemctl start snapper-timeline.timer

# Можно так же периодичность очистки снапшотов изменить
$ sudo nano $(locate snapper-cleanup.timer)

# Автоматически  удаляет снапшоты при превышении квот
$ sudo systemctl enable snapper-cleanup.timer && sudo systemctl start snapper-cleanup.timer

# Просмотр логов
$ tail -f /var/log/snapper.log

Описание настроек:

### SNAPPER-CONFIGS(5)# Filesystem Snapshot Management
### Boolean values must be "yes" or "no".

SUBVOLUME="/"
        # Path of the subvolume or mount point.
        # There is no default value. The value must always be specified.

FSTYPE=btrfs
        # Filesystem type for the subvolume.
        # Default value is "btrfs" but it's recommended to always specify the
        # filesystem type.

ALLOW_USERS=""
        # List of users allowed to operate with the config. The user-names
        # must be separated by spaces. Spaces in usernames can be escaped with
        # a "".
        # Also see the PERMISSONS section in snapper(8).
        # Default value is "" but "root" is always implicitly included.

ALLOW_GROUPS="snapper"
        # List of groups allowed to operate with the config. The group-names
        # must be separated by spaces. Spaces in group-names can be escaped
        # with a "".
        # Also see the PERMISSONS section in snapper(8).
        # Default value is "".

SYNC_ACL=yes
        # Defines whether snapper will sync the users and groups from
        # ALLOW_USERS and ALLOW_GROUPS to the ACL of the .snapshots directory.
        # Also see the PERMISSONS section in snapper(8).
        # Default value is "no".
        # New in version 0.2.0.

BACKGROUND_COMPARISON=yes
        # Defines whether pre and post snapshots should be compared in the
        # background after creation.
        # Default value is "yes".

### CLEANUP ALGORITHMS
######################

### NUMBER
NUMBER_CLEANUP=no
        # Defines whether the number cleanup algorithm should be run for the
        # config.
        # Default value is "no".

NUMBER_MIN_AGE=1800
        # Minimal age for snapshots to be deleted by the number cleanup
        # algorithm.
        # Default value is "1800".

NUMBER_LIMIT=50
        # Defines how many snapshots the number cleanup algorithm should
        # keep. The youngest snapshots will be kept.
        # Default value is "50".

NUMBER_LIMIT_IMPORTANT=10
        # Defines how many important snapshots the number cleanup algorithm
        # should keep. Important snapshots have important=yes in the userdata.
        # The youngest important snapshots will be kept.
        # The number of normal and important snapshots are counted
        # independently.
        # Default value is "10".
        # New in version 0.1.8.

### TIMELINE
TIMELINE_CREATE=yes
        # Defines whether hourly snapshots should be created.
        # Together with the timeline cleanup algorithm this will create a
        # collection of snapshots with more snapshots is the near past and less
        # snapshots in the far past.
        # Default value is "no".

TIMELINE_CLEANUP=yes
        # Defines whether the timeline cleanup algorithm should be run for
        # the config.
        # Default value is "no".

TIMELINE_MIN_AGE=14400
        # Minimal age for snapshots to be deleted by the timeline cleanup
        # algorithm.
        # Default value is "1800".

TIMELINE_LIMIT_HOURLY=23
        # Defines how many hourly snapshots the timeline cleanup algorithm
        # should keep. An hourly snapshot is the first snapshot in an hour. The
        # youngest hourly snapshots will be kept.
        # Default value is "10".

TIMELINE_LIMIT_DAILY=14
        # Defines how many daily snapshots the timeline cleanup algorithm
        # should keep. A daily snapshot is the first snapshot in a day. The
        # youngest daily snapshots will be kept.
        # Default value is "10".

TIMELINE_LIMIT_MONTHLY=6
        # Defines how many monthly snapshots the timeline cleanup algorithm
        # should keep. A monthly snapshot is the first snapshot in a month. The
        # youngest monthly snapshots will be kept.
        # Default value is "10".

TIMELINE_LIMIT_YEARLY=1
        # Defines how many yearly snapshots the timeline cleanup algorithm
        # should keep. A yearly snapshot is the first snapshot in a year. The
        # youngest yearly snapshots will be kept.
        # Default value is "10".

### EMTPY PRE POST
EMPTY_PRE_POST_CLEANUP=yes
        # Defines whether the empty-pre-post cleanup algorithm should be run
        # for the config.
        # Default value is "no".

EMPTY_PRE_POST_MIN_AGE=1800
        # Minimal age for snapshots to be deleted by the empty-pre-post
        # cleanup algorithm.
        # Default value is "1800".

GUI:

# Не запускается
$ yay -S snapper-gui-git

Ссылки:

  • Snapper;
  • Systemd/Timers.

Timeshift

Программа для управления бекапами. Работает с Btrfs и в rsync-режиме (полный дамп).

Логи

# Как посмотреть логи?
$ less /var/log/messages
$ more -f /var/log/messages
$ cat /var/log/messages
$ tail -f /var/log/messages
$ grep -i error /var/log/messages

# Сообщения ядра Linux
$ dmesg | less
Файл Описание
/var/log/messages General message and system related stuff
/var/log/auth.log Authenication logs
/var/log/kern.log Kernel logs
/var/log/cron.log Crond logs (cron job)
/var/log/maillog Mail server logs
/var/log/qmail/ Qmail log directory (more files inside this directory)
/var/log/httpd/ Apache access and error logs directory
/var/log/lighttpd/ Lighttpd access and error logs directory
/var/log/boot.log System boot log
/var/log/mysqld.log MySQL database server log file
/var/log/secure or /var/log/auth.log Authentication log
/var/log/utmp or /var/log/wtmp Login records file
/var/log/yum.log Yum command log file.

Установка и настройка Postgres

[sergey@sergey-pc ~]$ sudo pacman -S postgresql
[sergey@sergey-pc ~]$ sudo chown postgres /var/lib/postgres/data
[sergey@sergey-pc ~]$ sudo -i -u postgres
[postgres@sergey-pc ~]$ initdb  -D '/var/lib/postgres/data'
[postgres@sergey-pc ~]$ logout
[sergey@sergey-pc ~]$ sudo systemctl start postgresql
[sergey@sergey-pc ~]$ sudo systemctl enable postgresql
[sergey@sergey-pc ~]$ sudo -u postgres -i initdb --locale $LANG -E UTF8 -D /var/lib/postgres/data
[sergey@sergey-pc ~]$
[postgres@sergey-pc ~]$ createuser --interactive -P
Enter name of role to add: sergey
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n)
Please answer "y" or "n".
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
[postgres@sergey-pc ~]$ createdb -O sergey sergey # создаем пользователя и БД с именами совпадающими с пользователем системы, чтобы psql запускать без параметров
[postgres@sergey-pc ~]$ logout
[sergey@sergey-pc ~]$ psql
psql (11.1)
Type "help" for help.

sergey=>

# Дамп базы схемы БД
$ pg_dump -d db -f /tmp/dump.sql
# Загрузка дампа
$ psql db < /tmp/dump.sql

Мониторинг процессов

# Замена стандартному top
$ yay -S htop
$ htop

systemd

# Все сервисы

# Покажут только включенные
$ systemctl
$ systemctl list-units --type service

# + выключенные
$ systemctl list-unit-files --type service

$ sudo systemctl enable docker

$ sudo systemctl disable docker

$ sudo systemctl restart nginx.service

$ sudo systemctl start application.service

$ sudo systemctl start application.service

$ systemctl status nginx.service

$ sudo systemctl is-enabled service

Создание своего сервиса:

/etc/systemd/system/rot13.service:

[Unit]
Description=ROT13 demo service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=/usr/bin/env php /path/to/server.php

[Install]
WantedBy=multi-user.target

Ссылки:

  • Timers.

Git

# Установка
$ yay -S git

# Глобальные настройки
$ git config --global user.name <yourname>
$ git config --global user.email <email>

# Цветной вывод
$ git config --global color.ui true

# Сменить ветку
$ git checkout <branchname>

# Создать ветку и переключится на нее
$ git checkout -b <branchname>

# Объединить текущую ветку с branchname
$ git merge <branchname>

# Добавить изменения (все файлы в каталоге и вложеннхы)
$ git add .

# Закоммитить изменения (сделать описание)
$ git commit -m "Тест"

# Если не были добавлены новые файлы, а лишь производились изменения в уже добавленных, то можно использовать только одну команду
$ git commit -am "Тест"

# Обновить репозиторий на сервере
$ git push

# Выгрузить изменения с сервера (тоже самое, что git fetch + git merge)
$ git pull

# Копировать репозиторий
$ git clone https://github.com/someuser/repo.git [<assigneddirectory>]

# Посмотреть историю
$ git log --graph --oneline --decorate --all

# Посмотреть отличия по сравнения с предыдущей версией
$ git diff 871d36b [<filename>]

# Сохранить изменения
$ git stash [save "my stash message here"]

# Удалить stach и применить его
$ git stash pop [stash@{1}]

# Список stash
$ git stash list

# Посмотреть что там лежит
$ git stash show stash@{0}

$ git stash apply
$ git stash drop stash@{2}
$ git stash clear

# List all the tags:

$ git tag

# Search tags for a particular pattern:

$ git tag -l <tag-pattern>

# Show a tag data:

$ git show <tag-name>

# Create a Lightweight Tag:

$ git tag <tag-name>

# Create an Annotated Tag:

$ git tag -a <tag-name> -m <tag-message>

# Create a tag for a specific commit:

$ git tag -a <tag-name> <commit-checksome>

# Push a specific tag to remote:

$ git push origin <tag-name>

# Push all the tags to remote:

$ git push origin --tags

# Checkout a specific to local:

$ git checkout -b <branch-name> <tag-name>

Работаем с github через ssh

Генерация нового ключа:

$ ssh-keygen -t rsa -b 4096 -C "<email>"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sergey/.ssh/id_rsa): /home/sergey/.ssh/github_rsa
Created directory '/home/sergey/.ssh'.
...

В настройках нужно добавить сгенерированный ключ, скопировав содержимое pub-файла (для примера — github_rsa.pub), который лежит в ~/.ssh.

Если уже есть проекты, которые были ранее склонированы по https, то нужно изменить .git/config проекта. :

...
[remote "origin"]
url = git@github.com:<username>/<project>.git
...

Правильный адрес проекта можно посмотреть на странице репозитория:

image

Для проекта можно указать локальные email и имя:

git config user.email <email>
git config user.name <name>

Tor Service

Включаем Tor:

sudo systemctl start tor
sudo systemctl enable tor

Проверка:

$ torify curl http://httpbin.org/ip
{
  "origin": "173.244.209.5, 173.244.209.5"
}

Менеджер паролей pass

$ yay -S pass
# Далее нужно сгенерировать PGP ключ. Сгенерированный ключ можно удалить через seahorse
$ gpg2 --gen-key
gpg (GnuPG) 2.2.16; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Sergey M
Email address: tz4678@gmail.com
You selected this USER-ID:
    "Sergey M <tz4678@gmail.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 82AD537DDC8DD344 marked as ultimately trusted
gpg: revocation certificate stored as '/home/sergey/.gnupg/openpgp-revocs.d/<gpg_id>.rev'
public and secret key created and signed.

pub   rsa2048 2019-07-13 [SC] [expires: 2021-07-12]
      <gpg_id>
uid                      Sergey M <tz4678@gmail.com>
sub   rsa2048 2019-07-13 [E] [expires: 2021-07-12]

# Теперь инициализируем хранилище
$ pass init gpg_id

# Можем сгенерировать пароль (будет автоматически сохранен)
$ pass generate example.com 15
The generated password for example.com is:
'.kXKEs<lx4dcKM

# Посмотреть пароль (потребует passphrase)
$ pass example.com
'.kXKEs<lx4dcKM

# Копировать пароль в буфер обмена
$ pass -c example.com
Copied example.com to clipboard. Will clear in 45 seconds.

# Удалить пароль
$ pass rm example.com
Are you sure you would like to delete example.com? [y/N] y
removed '/home/sergey/.password-store/example.com.gpg'

Базу паролей можно разместить на Google Диск.

Ссылки:

  • Pass — утилита для хранения паролей в Linux;
  • Приложение для Android;
  • Устаревшее расширение для Chrome.

Частые проблемы

Система не грузится дальше rootfs

Нужно пофиксить разделы:

Пример: у нас на диске есть два ntfs раздела раздела, а за ними идет раздел Linux, мы в Windows удаляем ntfs-2, а размер ntfs-1 увеличиваем на все освободившееся пространство, в итоге Windows выходит за свои границы и портит раздел Linux. Вывод: нужно между разделами Windows и Linux оставлять пару мегабайт свободного места.

Grub Rescue

Чаще всего эта ошибка происходит после переименования логических разделов LVM, подразделов Btrfs, переноса системы на новый раздел (когда не совпадают GUID’ы).

error: ... not found.
Entering rescue mode...

# Для начала нужно посмотреть все устройства и разделы
grub rescue> ls
(hd0) (hd1) (hd1,gpt1) (hd2) (hd2,gpt5) (hd2,gpt4) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1) (hd3,gpt2) (hd3,gpt1) (hd4) (hd5)

# Мы помним, что наша система находится на 5 разделе, так что тут гадать не нужно
grub rescue> set prefix=(hd2,gpt5)/@/boot/grub
# «@» ‒ это имя подраздела Btrfs. Для обычного Ext4 раздела, команда будет выглядеть так:
#
#   set prefix=(hd2,gpt5)/boot/grub
#
# А для LVM:
#
#  set prefix=(lvm/arch-root)/boot/grub
grub rescue> set root=(hd2,gpt5)

# Проверим
grub rescue> ls /
@/ @home

# Да, это наш корневой раздел Linux
# Теперь можно загрузиться в систему
grub rescue> insmod normal
grub rescue> normal

После загрузки системы нужно переустановить grub:

$ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Arch Linux"
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

Случайно нажали Ctrl + Alt + F* и экран стал темным

Это переключение между виртуальными терминалами. с 1-6 текстовые, остальные ‒ графические. В gdm Ctrl+Alt+F1 ‒ логин в систему, Ctrl+Alt+F2 ‒ рабочий стол. В lightdm переключиться на рабочий стол можно нажатием Ctrl+Alt+F7.

Что делать, если каталоги открываются в VSCode?

Существует файл /usr/share/applications/mimeinfo.cache. В нем хранятся ассоциации между mime-типами и приложениями. Его редактирование исправляет проблему, НО такое решение является временным, так как этот файл генерируется при каждом обновлении системы из *.desktop файлов.

Нужно отредактировать MimeType (я его просто закомментировал) в /usr/share/applications/visual-studio-code.desktop и обновить mimeinfo.cache:

$ sudo nano /usr/share/applications/visual-studio-code.desktop
...
# MimeType=text/plain;inode/directory;
...
$ sudo update-desktop-database /usr/share/applications

Enter password to unlock your login keyring

В один прекрасный день Chrome выдаст такое предупреждение, после чего перестанут сохраняться пароли и не будет работать автозаполнение форм для логина.

Решение:

# можно нажать `Super+A` и поискать приложение `passwords and keys`
$ seahorse &

# Если пакет не установлен
$ yay -S seahorse

image

Удаляем вкладку Login:

image

Другой вариант удалить все кейринги вручную:

$ rm -rf ~/.local/share/keyrings

Далее удаляем настройки Chrome:

$ rm -rf ~/.config/google-chrome

Теперь остается только перезапустить Chrome.

Справка по командам и т.д.

Cheat.sh

Ищет на stackoverflow и других ресурсах справку по командам и языкам программирования.

Установка:

curl https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh
sudo chmod +x /usr/local/bin/cht.sh

# Так же требуются пакеты xsel и rlwrap
yay -S xsel rlwrap

Использование:

# Интерактивный режим
$ cht.sh --shell <language>
$ cht.sh --shell bash
type 'help' for the cht.sh shell help
cht.sh/bash> for
# shell - Bash 'for' loop syntax?
#
# Replace

for (($i=0...

# with

for ((i=0;i<10;i++))

# [jman] [so/q/6854118] [cc by-sa 3.0]
cht.sh/bash>

$ cht.sh go create file
/*
 * go - Create an empty text file
 *
 * Don't try to check the existence first, since you then have a race if
 * the file is created at the same time. You can open the file with the
 * O_CREATE flag to create it if it doesn't exist:
 */

os.OpenFile(name, os.O_RDONLY|os.O_CREATE, 0666)

// [JimB] [so/q/35558787] [cc by-sa 3.0]

# Небольшой туториал по языку
$ cht.sh python :learn

Marker

Установка:

$ git clone --depth=1 https://github.com/pindexis/marker ~/.marker && ~/.marker/install.py
  • Ctrl-space: search for commands that match the current written string in the command-line.
  • Ctrl-k (or marker mark): Bookmark a command.
  • Ctrl-t: place the cursor at the next placeholder, identified by ‘{{anything}}’
  • marker remove: remove a bookmark

image

Пользовательские команды хранятся в ~/.local/share/marker/user_commands.txt.

Пример:

yay -S {{package}}##install package
yay -S --noconfirm {{package}}##install package without confirmations
yay -Ss {{search}}##search packages
yay -Si {{package}}##package information
yay -Sc##clean
yay -Syu##update all packages
yay -Ps##print system stats
yay -Pu##print list of packages that needs to be updated
yay -Rns {{package}}##remove package
exec "$SHELL"##reload shell

«Встроенные» в /home/sergey/.marker/tldr/.

TLDR

Этим я пользовался до cht.sh.

Получаем краткую справку по команде:

$ tldr nvm
✔ Page not found. Updating cache...
✔ Creating index...

  nvm

  Install, uninstall or switch between Node.js versions.
  Supports version numbers like "0.12" or "v4.2", and labels like "stable", "system", etc.
  Homepage: https://github.com/creationix/nvm.

  - Install a specific version of Node.js:
    nvm install node_version

  - Use a specific version of Node.js in the current shell:
    nvm use node_version

  - Set the default Node.js version:
    nvm alias default node_version

  - List all available Node.js versions and highlight the default one:
    nvm list

  - Uninstall a given Node.js version:
    nvm uninstall node_version

  - Launch the REPL of a specific version of Node.js:
    nvm run node_version --version

  - Execute a script in a specific version of Node.js:
    nvm exec node_version node app.js

Шпаргалка по командам Shell

# ==============================================================================
#
# Основы синтаксиса
#
# ==============================================================================

# $1, $2, $3, ... are the positional parameters.
# "$@" is an array-like construct of all positional parameters, {$1, $2, $3 ...}.
# "$*" is the IFS expansion of all positional parameters, $1 $2 $3 ....
# $# is the number of positional parameters.
# $- current options set for the shell.
# $$ pid of the current shell (not subshell).
# $_ most recent parameter (or the abs path of the command to start the current shell immediately after startup).
# $IFS is the (input) field separator.
# $? is the most recent foreground pipeline exit status.
# $! is the PID of the most recent background command.
# $0 is the name of the shell or shell script.

# присвоить значение переменной
x=42

# Для вывода используем echo и printf
echo "x=$x"
echo "x=${x}"
printf "x=%sn" x

# Если переменная не задана, то присваиваем ей дефолтное значение
x=${x:-default}

# $ { varname :- word }
# If varname exists and isn’t null, return its value; otherwise return word.

# Purpose:
# Returning a default value if the variable is undefined.

# Example:
# ${count:-0} evaluates to 0 if count is undefined.

# $ { varname := word}
# If varname exists and isn’t null, return its value; otherwise set it to word and then return its value. Positional and special parameters cannot be assigned this way.

# Purpose:
# Setting a variable to a default value if it is undefined.

# Example:
# $ {count := 0} sets count to 0 if it is undefined.

# $ { varname :? message }
# If varname exists and isn’t null, return its value; otherwise print varname : followed by message, and abort the current command or script (non-interactive shells only). Omitting message produces the default message parameter null or not set.

# Purpose:
# Catching errors that result from variables being undefined.

# Example:
# {count :?” undefined! " } prints “count: undefined!” and exits if count is undefined.

# $ { varname :+word }
# If varname exists and isn’t null, return word; otherwise return null.

# Purpose:
# Testing for the existence of a variable.

# Example:
# $ {count :+ 1} returns 1 (which could mean “true”) if count is defined.


# $ { varname : offset }
# $ { varname : offset:length }

# Purpose:
# Returning parts of a string (substrings or slices).

# Example:
# If count is set to frogfootman, $ {count :4} returns footman. $ {count :4:4} returns foot.

# Экспорт глобальной переменной
export VAR=42

# Генерация строк с помощью Brace expansion
$ echo a{d,c,b}e
ade ace abe

# Массивы

arr=(Hello World)

echo ${arr[0]} ${arr[1]}

${arr[*]} # Все записи в массиве
${!arr[*]} # Все индексы в массиве
${#arr[*]} # Количество записей в массиве
${#arr[0]} # Длина первой записи (нумерация с нуля)

array=(one two three four [5]=five)

echo "Array size: ${#array[*]}"  # Выводим размер массива

echo "Array items:" # Выводим записи массива
for item in ${array[*]}
do
  printf "   %sn" $item
done

echo "Array indexes:" # Выводим индексы массива
for index in ${!array[*]}
do
  printf "   %dn" $index
done

echo "Array items and indexes:" # Выводим записи массива с их индексами
for index in ${!array[*]}
do
  printf "%4d: %sn" $index ${array[$index]}
done

# Следующий пример покажет, как кавычки и конструкции без кавычек возвращают строки (особенно важно, когда в этих строках есть пробелы):

array=("first item" "second item" "third" "item")

echo "Number of items in original array: ${#array[*]}"
for ix in ${!array[*]}
do
  printf "   %sn" "${array[$ix]}"
done
echo

arr=(${array[*]})
echo "After unquoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
  printf "   %sn" "${arr[$ix]}"
done
echo

arr=("${array[*]}")
echo "After * quoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
  printf "   %sn" "${arr[$ix]}"
done
echo

arr=("${array[@]}")
echo "After @ quoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
  printf "   %sn" "${arr[$ix]}"
done

# Циклы

for i in $(seq 1 10);
do
  echo $i
done

for ((i = 0 ; i < max ; i++ ))
do
  echo $i
done

for i in {0..10}
do
  echo $i
done

for w in word1 word2 word3
do
  doSomething($w)
done

# А вот это zsh не умеет!
for filename in *.sh
  echo "$filename"
end

i=0
while (( ++i <= num )); do
  printf 'counter is at %dn' "$i"
done

i=1
while [ "$i" -le "$num" ]; do
  printf 'counter is at %dn' "$i"
  i=$(( i + 1 ))
done

# Условия

if [ "$seconds" -eq 0 ]; then
  timezone_string="Z"
elif [ "$seconds" -gt 0 ]; then
  timezone_string=$(printf "%02d:%02d" $((seconds/3600)) $(((seconds / 60) % 60)))
else
  echo "Unknown parameter"
fi

# В условиях нужно использовать двойные скобки

# [ is just a regular command with a weird name.
# ] is just an argument of [ that prevents further arguments from being used.

# [[ a = a && b = b ]]: true, logical and
# [ a = a && b = b ]: syntax error, && parsed as an AND command separator cmd1 && cmd2just an argument of [ that prevents further arguments from being used.

# x='a b'; [[ $x = 'a b' ]]: true, quotes not needed
# x='a b'; [ $x = 'a b' ]: syntax error, expands to [ a b = 'a b' ]

# Подробнее тут:
#   <https://stackoverflow.com/a/47576482>

# -eq
# is equal to

[ "$a" -eq "$b" ]

# -ne
# is not equal to

[ "$a" -ne "$b" ]

# -gt
# is greater than

[ "$a" -gt "$b" ]

# -ge
# is greater than or equal to

[ "$a" -ge "$b" ]

# -lt
# is less than

[ "$a" -lt "$b" ]

# -le
# is less than or equal to

[ "$a" -le "$b" ]

# <
# is less than (within double parentheses)

(("$a" < "$b"))

# <=
# is less than or equal to (within double parentheses)

(("$a" <= "$b"))

# >
# is greater than (within double parentheses)

(("$a" > "$b"))

# >=
# is greater than or equal to (within double parentheses)

(("$a" >= "$b"))

# <http://tldp.org/LDP/abs/html/comparison-ops.html>

# [ ‒ это всего лишь команда, последним аргументом которой всегда должна быть "]"! Все операторы описаны в man'е:
man [

# Это вполне себе валидное выражение
"[" 1 -eq 0 "]" || echo fail

# Строка слева всегда имя переменной
x=42; [[ "x" -eq "42" ]] || echo fail

# выражение слева всегда переменная

case $VAR in
  foo) ... ;;
  bar) ... ;;
  # Все остальные значения
  *) ... ;;
esac

# Объявление функции
foo() {
  # Аргументы функции
  $1..$N
  # Локальная переменная
  local x=42
  ...
  # Теперь в $1 будет $2, в $2 ‒ $3 и т.д.
  shift
}

# Экспорт функции
export -f foo

die() { echo "$*" 1>&2 ; exit 1; }
...
die "Kaboom"

[ "$#" -eq 2] || die "Needs 2 arguments, input and output"

# The syntax is token-level, so the meaning of the dollar sign depends on the token it's in. The expression $(command) is a modern synonym for `command` which stands for command substitution; it means, run command and put its output here. So

echo "Today is $(date). A fine day."

# Управление выводом

# Направить stdout одной программы в stdin другой
command1 | command2

# Перенаправление stdout и stderr
command1 |& command2

# Создать либо перезаписать файл, добавив строку
command > out

# Создать файл, если его не существует и дописать строку в конец
command >> out

# Направить stderr команды в файл
command 2>&1 out

# stdout 2-ой команды, является stdin для первой
command1 <<< command2

# Вывод многострочного текста
cat <<EOF
хуй
пизда
джигурда
EOF

cat >> /path/to/file <<EOL
хуй
пизда
джигурда
EOL

# ==============================================================================
#
# Написание скриптов
#
# ==============================================================================

# Первой строкой скрипта идет Shebang, торый указывает какой интерпретатор использовать

#!/usr/bin/env bash

# При наличии ошибок прекратит выполнение сценария
set -e

# Так же часто делают каталог скрипта рабочим (по-умолчанию рабочим является тот откуда запустили скрипт)
cd "$(dirname "$0")"

# ==============================================================================
#
# Выполнение скриптов
#
# ==============================================================================

# Сделать файл исполняемым
$ chmod +x /path/to/file

# Выполнит скрипт в текущем процессе (переменные и функции, объявленные внутри скрипта станут доступны в терминале)
$ source /path/to/file

# ==============================================================================
#
# Запуск команд
#
# ==============================================================================

# Запустить процесс и вернуть его дескриптор (при закрытии терминала будет остановлена)
$ command &

# То же самое за исключением того, что процесс не будет остановлен при закрытии терминала
$ nohup command &

# ==============================================================================
#
# Пакеты
#
# ==============================================================================

# Установить пакет
$ yay -S <package>

# Удалить пакет
$ yay -Rns <package>

# Обновить все установленные пакеты
$ yay -Syu

# Обновить в т.ч. с пакетами для разработчика
$ yay -Syu --devel --timeupdate

# Очистить кеш
$ yay -Sc

# Удалить все ненужные зависимости
$ yay -Yc

# Статистика по пакетами
$ yay -Ps

# Generates development package DB used for devel updates
$ yay -Y --gendb

# Ошибки с удалением зависимостей

$ yay -Rns gnome-extra
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: nautilus: removing nautilus-sendto breaks dependency 'nautilus-sendto'
$ yay -Rdd nautilus-sendto

# Теперь можно снести gnome-extra

# ==============================================================================
#
# Текст
#
# ==============================================================================

# Замена в тексте
$ echo "This is a test" | sed 's/test/another test/'

# Ключ -e позволяет выполнить несколько команд:
#   sed -e 's/This/That/; s/test/another test/'

# Перевод регистра
$ echo lowercase | tr '[:lower:]' '[:upper:]'
LOWERCASE

# ==============================================================================
#
# Файловая система
#
# ==============================================================================

# Список разделов
$ sudo fdisk -l

$ sudo mkdir /mnt/usb1
# Монтировать устройство
$ sudo mount /dev/sdb1 /mnt/usb1

# Размонтируем устройство
$ sudo umount /dev/sdb1
# или
$ sudo umount /mnt/usb1

# Сменить владельца и группу для файла
$ sudo chown $USER:$USER /path/to/file

# В Linux все файлы. Регулярные файлы ‒ обычные файлы, каталоги ‒ это файлы содержащие список файлов и т.д.

# Перемещение/переименование файла
$ mv <src> <dst>

# Копирование файлов
$ cp <src> <dst>

# Копировать каталог и все вложенные файлы
$ cp -r <src> <dst>

# Полный путь до файла
$ realpath example.txt
/home/username/example.txt

# Листинг каталога
$ ls
$ tldr ls

# Вывести информацию о владельце и группе файла
$ ls -ld /path/to/file
$ stat /path/to/file

# Вывести все вложенные файлы
$ ls -R <path>
$ find <path> -print

# Покажет имя и размер
$ du -a <path>

# Размер всех файлов с расширеним .txt
$ du -chs *.txt

# Создание каталога
$ mkdir <target>

# Создание каталога вместе с родительскими каталогами, если тех не существует
$ mkdir -p <target>

# Создать каталог с определенными правами
$ mkdir -m 0750 <directory>

# Создание множества каталогов
$ mkdir foo bar baz
# или
$ mkdir prefix-{foo,bar,baz}

# Такой же трюк работает при создании файлов
$ touch {foo,bar,baz}.txt

# Создать мягкую ссылку на файл либо заменить ее новой
$ ln -sf path/to/new_file path/to/symlink

# Мягкая ссылка содержит путь до файла. Жесткая ссылается на inode, искомый
# файл при перемещении остается доступен по ссылке и невозможно ссылаться на
# файл на другом устройстве

# Слияние файлов в один
$ paste file1.txt file2.txt > fileresults.txt

# Удалить файлы старше 5 дней
$ find /path/to/files* -mtime +5 -exec rm {} ;

# Удалить все шрифты соответствущие шаблону *powerline* без учета регистра
# «{} ;» rm будет вызван множество раз
# «{} +» добавляет агрументы к rm
$ sudo find /usr/share/fonts -iname "*powerline*" -exec rm {} +

# Поиск фала по имени в специальной базе
$ locate -e login.keyring
/home/sergey/.local/share/keyrings/login.keyring

# Установка
$ yay -S mlocate

# Перед первым запуском следует выполнить
$ sudo updatedb

# После установки будет доступен сервис updatedb.timer, который будет ежедневно обновлять базу

# Стастика
$ locate -S
Database /var/lib/mlocate/mlocate.db:
	157 512 directories
	1 384 522 files
	119 423 666 bytes in file names
	38 722 751 bytes used to store database

# Поиск исполняемых файлов, исходников и страниц манула
$ whereis <q>

# Покажет что куда смонтировано (можно свободное место узнать)
$ df -h --total

# Узнать на каком разделе смонтирован каталог
$ df -h /tmp

# Просмотр числа inode
$ df -i

# Просмотр содержимого фйала с навигацией
$ less /path/to/file

# или более короткая версия в ZSH
$ < /path/to/file

# Просмотр логов в реальном времени
$ tail -f /var/log/syslog | less

# Вывести строки не соответствующие шаблону
$ grep -Pv <exclude_pattern> <filename>

# Создать файл, забитый null-байтами
$ dd if=/dev/zero of=/tmp/nullbytes bs=1M count=1

# Конфертировать .md в .rst
$ pip install m2r
$ m2r --help

# Конвертировать .webp в .png
$ yay -S libwebp
$ dwebp file.webp -o file.png

# Вывод содержимого файла с подсветкой синтаксиса
$ yay -S ccat
$ ccat ./file

# Вывести файлы в каталоге, отсортировав их по времени до доступа
$ ls -ltu <path>

# Изменить размер каталога /tmp
$ mount -o remount,size=4G /tmp/

# Подробная информация о диске
$ sudo smartctl -a /dev/nvme0

# ==============================================================================
#
# Работа с архивами
#
# ==============================================================================

# Заархивировать каталог
$ tar -czvf filename.tar.gz directory

# Для извлечения файлов проще всего пользоваться плагином Oh My ZSH extract

# Извлечь архив и удалить его (ключ -r)
$ extract -r <filename>

# Извлечь .tar.gz
$ tar zxvf <yourfile>.tar.gz -C /usr/src/

# Скачать и Распаковать Архив с помощью WGET
$ wget http://example.com/archive.tar -O - | tar -x
$ wget http://example.com/archive.tar.gz -O - | tar -xz
$ wget http://example.com/archive.tar.bz2 -O - | tar -xj

# Скачать и Распаковать Архив с помощью CURL
$ curl http://example.com/archive.tar | tar -x
$ curl http://example.com/archive.tar.gz | tar -xz
$ curl http://example.com/archive.tar.bz2 | tar -xj

# ==============================================================================
#
# Сеть
#
# ==============================================================================

# Показать все прослушиваемые и установленные порты TCP и UDP вместе с PID
# связанного процесса
$ netstat -plantu

# Все запущенные сервера на хосте
$ netstat -lnt

# Скачать файл в каталог
$ wget -P $ZSH_CUSTOM/themes https://raw.githubusercontent.com/caiogondim/bullet-train-oh-my-zsh-theme/master/bullet-train.zsh-theme

# ==============================================================================
#
# Шрифты
#
# ==============================================================================

# Список установленных шрифтов
$ fc-list

# Обновить базу шрифтов после добавления/удаления их в/из `/usr/share/fonts`
# либо `~/.local/share/fonts`
$ fc-cache -f -v

# ==============================================================================
#
# Буфер обмена
#
# ==============================================================================

$ yay -S xclip

# Скопировать текст в буфер обмена
$ echo 123 | xclip -sel clip

# Копировать содержимое файла в буфер обмена
$ xclip -sel clip < ~/.ssh/github_rsa.pub

# Вывести содержимое буфера обмена
$ xclip -o -sel clip

# Конвертировать файл в base64 и скопировать в буфер обмена
$ file="test.docx"
$ base64 -w 0 $file  | xclip -selection clipboard


# ==============================================================================
#
# Языковые настройки
#
# ==============================================================================

# Список влюченных локалей
$ locale -a

# Добавление локалей

# В этом файле находится список всех поддерживаемых локалей
# Раскомментируем нужную
$ sudo nano /etc/locale.gen

# Генерируем локали
$ sudo locale-gen

# Можно так же локали так добавлять
$ sudo locale-gen de_DE.UTF-8

# Меняем язык системы (нужно перегрузиться)
echo "LANG=de_DE.UTF-8" > /etc/locale.conf

# ==============================================================================
#
# Генерация паролей
#
# ==============================================================================

$ yay -S pwgen
$ pwgen -cnsy 10 1
1u_dr<ZLH;

$ pip install xkcdpass
$ xkcdpass -n 3 -d -
backdrop-unruly-yodel
$ xkcdpass -n 3 -d - --min 2 --max 6
shrank-trio-thong

# ==============================================================================
#
# Прочее
#
# ==============================================================================

# Перегрузить Shell
$ exec "$SHELL"

# Список всех доступных команд
$ compgen -c

# Ищем Chrome
$ compgen -c | grep chrome
google-chrome-stable
chrome-gnome-shell
google-chrome

# Просмотр логов в реальном времени
$ journalctl -f

# Изменить размер терминала
$ gnome-terminal --geometry 135x45

# Документация по командам
$ tldr cat
$ tldr --search create file

Ссылки:

  • Цвет и форматирование текста в консоли;
  • Поиск файлов на Сервере;
  • Файловая система Linux;
  • Inode;
  • Управление разделами LVM;
  • Часто используемые команды Git;
  • Использование регулярных выражений

i3: Введение

i3 – это тайловый оконный менеджер для Linux. Тут настройки под меня.

i3: Установка и настройка

$ yay -S awesome-terminal-fonts bumblebee-status compton fonts-powerline dmenu i3-gaps i3lock-fancy-git lxappearance nitrogen rofi scrot termite xclip
$ sudo nano /usr/share/xsessions/i3-custom.desktop
[Desktop Entry]
Name=i3 custom
Exec=/usr/local/bin/i3-custom
Type=Application
$ sudo nano /usr/local/bin/i3-custom
#!/bin/bash
mkdir -p ~/.config/i3/logs
export TERMINAL=termite
exec i3 -V >> ~/.config/i3/logs/$(date +'%F-%T').log 2>&1
$ sudo chmod +x /usr/local/bin/i3-custom
$ i3-config-wizard
$ cp /etc/xdg/termite/config ~/.config/termite/config
$ nano ~/.config/termite/config
[options]
# ...
font pango:Inconsolata, Font Awesome 10
# ...
[colors]
# ...
# 20% background transparency (requires a compositor)
background = rgba(63, 63, 63, 0.8)
$ cp /etc/xdg/compton.conf ~/.config
$ nano ~/.config/i3/config
# ...
font pango:Droid Sans 10
# ...
# Заменяем все Mod1 на $m и создаем переменную выше вызовов bindsym
set $m Mod1

# lockscreen
bindsym Ctrl+$m+l exec i3lock

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness

# Touchpad controls
bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad

# Media player controls
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

# rofi
bindsym $m+t exec "rofi -combi-modi window,drun -show combi"

# захватывает весь экран и копирует в буфер обмена
bindsym --release Print exec "scrot /tmp/%F_%T_$wx$h.png -e 'xclip -selection c -t image/png < $f && rm $f'"
# захватывает область экрана и копирует в буфер обмена
bindsym --release Shift+Print exec "scrot -s /tmp/%F_%T_$wx$h.png -e 'xclip -selection c -t image/png < $f && rm $f'"
# ...
bar {
  set $disk_format "{path}: {used}/{size}"
  status_command bumblebee-status -m nic disk:root disk:home cpu memory sensors pulseaudio datetime layout pacman -p root.left-click="nautilus /" root.format=$disk_format home.path=/home home.left-click="nautilus /home" home.format=$disk_format -t solarized-powerline
  position top
}
# ...
# отступы между окнами
gaps outer -10
gaps inner 20

floating_minimum_size 75 x 50
floating_maximum_size -1 x -1
# Убрать рамки у окон:
# 1)
# new_window pixel 0
# 2)
# for_window [class="^.*"] border none
# force floating for all new windows
# for_window [class=".*"] floating enable
for_window [class="Nautilus" instance="file_progress"] floating enable
for_window [class="^Telegram"] floating enable, resize set 800 600
# Всплывающие окна браузера
for_window [window_role="pop-up"] floating enable
# no_focus [window_role="pop-up"]
# прозрачность терминала
exec --no-startup-id compton --config ~/.config/compton.conf
# смена расскладки
exec --no-startup-id setxkbmap -model pc105 -layout us,ru -option grp:ctrl_shift_toggle
# восстановление заставки рабочего стола
exec --no-startup-id nitrogen --restore

Нужно выйти из сессии и выбрать в Display Manager сессию i3 custom.

LXAppearance используется для изменения значков, шрифта по-умолчанию в приложениях.

Nitrogen позволяет менять обои.

Для изменения оформления i3 – служит i3-style:

$ yay -S i3-style
$ i3-style archlinux -o ~/.config/i3/config --reload

XTerm

Вместо Ctrl+Shift+V нужно использовать Shift+Ins, а вместо Ctrl+Shift+CCtrl+C. Права кнопка мыши копировать, клик по колесику – вставить.

Termite: горячие клавиши

Сочетание Значение
ctrl-shift-x activate url hints mode
ctrl-shift-r reload configuration file
ctrl-shift-c copy to CLIPBOARD
ctrl-shift-v paste from CLIPBOARD
ctrl-shift-u unicode input (standard GTK binding)
ctrl-shift-e emoji (standard GTK binding)
ctrl-tab start scrollback completion
ctrl-shift-space start selection mode
ctrl-shift-t open terminal in the current directory [1]_
ctrl-shift-up scroll up a line
ctrl-shift-down scroll down a line
shift-pageup scroll up a page
shift-pagedown scroll down a page
ctrl-shift-l reset and clear
ctrl-+ increase font size
ctrl-- decrease font size
ctrl-= reset font size to default

Отсюда.

Termite: цветовые схемы

$ curl https://raw.githubusercontent.com/khamer/base16-termite/master/themes/base16-nord.config >> ~/.config/termite/config
$ nano ~/.config/termite/config
# 4-ое значение отвечает за прозрачность (1 - непрозрачно, 0 - абсолютная прозрачность)
background          = rgba(40, 44, 52, 0.8)

i3: заставка lockscreen

$ yay -S i3lock-fancy-git
$ nano ~/.config/i3/config
# параметр -B делает фоном lockscreen скриншот экрана с размытием
bindsym Ctrl+$m+l exec i3lock-fancy -gpf Ubuntu -- scrot -z

Репозиторий.

i3: сохранение/восстановление рабочего пространства

# Сохранение
i3-save-tree --workspace 1 > ~/.i3/workspace-1.json
# Восстановление
i3-msg "workspace 1; append_layout ~/.i3/workspace-1.json"

Требует установки зависимостей.

Документация.

Анимированные обои

Видео-инструкция.

Ошибки при установке расширений для Gnome

Посмотрить их можно так:

$ journalctl /usr/bin/gnome-shell -f

Либо можно нажать Alt+F2 и ввести lg и поебаться с консолечкой. Закрыть ее можно с помощью клавиши Esc.

Руководство по установке ArchLinux

ВНИМАНИЕ: С момента публикации данной статьи процесс установки Arch Linux немного изменился. Сверяйтесь с официальной инструкцией, а также обязательно читайте комментарии пользователей ниже, там много интересного и полезного.

Как проходит установка

Установка ArchLinux выполняется из командной строки Live-системы ArchLinux. Вы скачиваете ISO-образ с Live-системой ArchLinux и загружаете его. И из этой Live-системы происходит установка уже на ваш компьютер.

Установка выполняется путем ввода команд в командой строке. На некоторых этапах необходимо редактировать конфигурационные файлы. Вам также потребуется подключение к интернет.

В данном руководстве приведено описание процесса установки ArchLinux. Затрагиваются вопросы разметки диска, установки загрузчика Grub, установки среды рабочего стола.

Куда обратиться за помощью

На сайте ArchLinux есть подробное Wiki на русском языке, в котором описаны почти все аспекты установки и настройки ArchLinux. В случае каких-либо проблем в первую очередь можно обратиться к данному Wiki. Новичкам читать подобное руководство может оказаться довольно сложным делом, так как информации там очень и очень много.

Свои вопросы вы также можете оставлять в комментариях к данной статье.

Данное руководство актуально для установки ArchLinux в 2019 году, но, скорее всего, будет актуально и в 2020. Если в установку дистрибутива будут внесены существенные изменения, напишите, пожалуйста, об этом в комментариях.

Подготовка

Если у вас на диске уже установлена какая-то операционная система, и вы собираетесь устанавливать ArchLinux на тот же диск, то создайте свободный раздел, на который будет выполняться установка.

Свободный раздел на диске можно создать средствами текущей операционной системы:

  • В Windows это можно сделать, используя программу Управление компьютером. Обычно ее можно найти через Панель управления: Панель управления→Администрирование→Управление компьютером→Управление дисками.
  • В MacOS можно воспользоваться штатным приложением Дисковая утилита.
  • В Linux можно воспользоваться программой GParted.

Минимальный размер дискового пространства, которое требуется чтобы установить систему, около 1Gb. Конечно, этого будет недостаточно для полноценной установки. Для комфортного пользования рекомендуется, чтобы у вас было около 20Gb свободного места.

Обязательно создайте резервную копию ваших данных.

Скачиваем ArchLinux

Перейдите на страницу Downloads на сайте дистрибутива. Скачайте ISO образ с дистрибутивом (размер файла около 400-500Мб).

Создание LiveUSB/CD

Запишите ISO образ на флешку или CD/DVD-диск. Как это сделать, читайте в статье — Как создать загрузочную флешку или воспользуйтесь программой для записи CD/DVD-дисков.

Загрузка Live-системы

Загрузитесь с созданного на прошлом шаге Live-носителя. Откроется загрузочное меню диска. Выберите пункт «Boot Arch Linux».
ArchLinux Live

Начало установки

Вы попадете в Live-систему ArchLinux. Загрузится виртуальная консоль (терминал), в котором вы будете вводить команды. Во время установки, вы работаете от имени суперпользователя (root).
ArchLinux Live

Раскладка клавиатуры

Добавим русскую раскладку клавиатуры:

loadkeys ru

И загрузим шрифт с поддержкой русского языка:

setfont cyr-sun16

Для переключения между русским и английским языком используется сочетание клавиш Ctrl+Shift.

Подключение к интернет

При установке я использовал проводное подключение по Ethernet. В моем случае установщик автоматически запустил службу dhcpcd и интернет заработал.

Чтобы проверить соединение, попробуйте, работает ли ping:

ping -c 5 archlinux.org

Если вы подключаетесь к интернет по WiFi, то нужно подключиться к вашей WiFi-сети. Я не пробовал устанавливать ArchLinux на компьютере с WiFi, но приведу выдержки из руководства (отпишитесь, пожалуйста, в комментариях, работает ли этот способ). Сначала необходимо определить название WiFi интерфейса, для этого выполняем команду:

iwconfig

Затем воспользуемся утилитой wifi-menu:

wifi-menu имя_интерфейса

Настройка часов

Включите синхронизацию времени через интернет:

timedatectl set-ntp true

Теперь необходимо установить часовой пояс. Для просмотра доступных часовых поясов воспользуйтесь командой:

timedatectl list-timezones

Можно, например, вывести доступные часовые зоны для Европы:

timedatectl list-timezones | grep Europe

Установите ваш часовой пояс:

timedatectl set-timezone Europe/Moscow

Для проверки времени используется команда:

timedatectl status

Убедитесь, что в поле «Local time» указано верное время.

Разметка диска

Это самый сложный этап для начинающих пользователей. Поэтому, будьте предельно внимательны, чтобы не уничтожить свои данные, если вы устанавливаете ArchLinux, например, рядом с Windows.

Ниже будет много текста, но не пугайтесь, на самом деле все не так сложно, главное внимательно читать и понимать, что вы делаете.

Для разметки диска можно использовать разные утилиты (fdisk, cfdisk, parted и др.). Я воспользуюсь утилитой fdisk.

Я рассмотрю 2 случая:

  • Установка ArchLinux на чистый диск.
    Соответствующий параграф помечен зеленым цветом:
    Разметка диска при установке ArchLinux на чистый диск
  • Установка ArchLinux рядом с другой ОС (например, рядом с Windows или рядом с другим дистрибутивом Linux).
    Соответствующий параграф помечен синим цветом:
    Разметка дисков при установке ArchLinux рядом с другой ОС

Разметка диска при установке ArchLinux на чистый диск

Выведем список дисков и разделов:

fdisk -l

У меня диск пустой. Вывод команды будет примерно следующим:

Disk /dev/sda: 8 GiB, ...
Units: sectors of 1 * 512 = 512 bytes
Sector size...

Отсюда мы можем видеть наш диск /dev/sda размером 8GiB. Этот диск мы и будем размечать. Я создам всего два раздела — корневой раздел и раздел подкачки (swap раздел).

Если у вас достаточный объем оперативной памяти (4-8Gb и более), то можно swap не создавать. К тому же позднее можно настроить, чтобы для swap использовался файл на диске. Но я все равно создам раздел swap для примера.

Итак, мы определили название нашего диска — /dev/sda. Запускаем утилиту fdisk и указываем, что мы хотим работать над диском /dev/sda:

fdisk /dev/sda

Вы попадете в интерактивный режим работы с диском — появится приглашение ко вводу команд «Command (m for help):».
ArchLinux разметка дисков fdisk
Чтобы вывести список доступных команд введите m и нажмите Enter.

Прежде всего создадим новый раздел, который будет использоваться как корневой раздел системы. Вводим n и нажимаем Enter.

Вам будет предложено выбрать тип раздела (Partition type) — первичный (primary) или расширенный (extended). Мы создаем первичный раздел (опция по умолчанию), поэтому просто нажимаем Enter.

Далее нужно ввести номер раздела (Partition number). По умолчанию установлен номер 1, просто нажимаем Enter.

Далее номер первого сектора (First sector). Оставляем значение по умолчанию, просто нажимаем Enter.

На следующем шаге нужно указать номер последнего сектора (Last sector) или размер раздела. У меня диск объемом 8Gb. Из них 1Gb я хочу оставить для раздела swap. Поэтому указываю размер 7Gb. Для этого пишем +7G и нажимаем Enter.
Если вы не планируете создавать раздел swap, то просто нажимаете Enter без ввода размера.

Появится сообщение о том, что создан новый раздел — «Created a new partition 1 of type ’Linux’ and of size 7 GiB» и снова приглашение к вводу новой команды.
ArchLinux разбивка диска

Можно ввести команду p и нажать Enter, чтобы посмотреть в каком состоянии находятся разделы на текущий момент. В нашем случае был создан раздел /dev/sda1:

Создадим второй раздел — раздел swap. Вводим команду n и нажимаем Enter. Для всех параметров будем использовать значения по умолчанию, поэтому на всех шагах просто нажимаем Enter. В итоге мы должны получить сообщение: «Created a new partition 2 of type ’Linux’ and of size 1023 MiB».

Если теперь снова ввести команду p и нажать Enter, то можно увидеть, что у нас создано два раздела /dev/sda1 и /dev/sda2:
Установка ArchLinux разметка дисков

Раздел /dev/sda2 будет использован под swap, поэтому необходимо изменить тип раздела. Для этого вводим команду t и нажимаем Enter. Вводим номер раздела, тип которого мы хотим изменить. В нашем случае вводим 2 и нажимаем Enter. Далее нужно ввести числовой номер, определяющий тип раздела, используем код 82 (это код Linux swap радела). Вводим 82 и нажимаем Enter.
ArchLinux создание Swap раздела

Для просмотра разделов можно снова ввести команду p и нажать Enter (обратите внимание, что раздел /dev/sda2 теперь имеет тип Linux swap):
ArchLinux разметка диска

Теперь важный шаг. На самом деле до этого мы только подготавливали таблицу разделов. Сами разделы на диске еще не созданы. Теперь применим все наши изменения и создадим разделы. Вводим команду w и нажимаем Enter. Утилита fdisk будет закрыта.
ArchLinux создание разделов

Итак, мы создали на диске /dev/sda два раздела /dev/sda1 и /dev/sda2. Раздел /dev/sda1 будет использоваться как корневой раздел, на него и будет устанавливаться система. Раздел /dev/sda2 будет использоваться как раздел подкачки (swap). Чтобы посмотреть какие разделы сейчас созданы, можно ввести команду:

fdisk -l

Выполним форматирование нашего корневого раздела /dev/sda1, для этого выполняем команду:

mkfs.ext4 /dev/sda1

Разметка дисков при установке ArchLinux рядом с другой ОС

 
Рассмотрим случай, когда вы устанавливаете ArchLinux на компьютер, на котором уже установлена другая операционная система. Это может быть Windows или, например, другой дистрибутив Linux. В моем случае это как раз другой дистрибутив Linux. Если вы устанавливаете ArchLinux рядом с Windows, то создание разделов будет происходить аналогично. Если вы устанавливаете ArchLinux на чистый диск, то этот параграф вы можете пропустить.

Если вы новичок, я рекомендую вам прочитать предыдущий параграф, где описано создание разделов на пустом диске, так как в данном параграфе я буду предельно краток. Также обращаю внимание на то, что я описываю именно мой случай, в вашем случае названия разделов могут отличаться.

Сначала посмотрим, какие разделы на данный момент у нас на диске. Выполняем команду:

fdisk -l

fdisk

У меня на диске пять разделов — /dev/sda1,2,5,6,7. Раздел /dev/sda1 это расширенный раздел (extended). Внутри этого раздела размещены разделы /dev/sda5,6,7. На этих разделах уже установлен другой дистрибутив Linux (они используются дистрибутивом).

Для MBR первичных разделов на диске может быть всего 4, они всегда имеют номера от 1 до 4. Если раздел имеет номер 5, 6, 7 и т.д, то это уже логический раздел, который находится внутри расширенного раздела. Расширенный раздел это первичный раздел, который не содержит собственной файловой системы, а содержит другие логические разделы. Нельзя создать пять или более первичных разделов.

Меня интересует раздел /dev/sda2. Это первичный раздел (primary). На него я и буду устанавливать ArchLinux. На самом деле у вас такого раздела может и не существовать. У вас может быть просто неразмеченное свободное пространство на диске, которое мы будем использовать для создания нового раздела. Так как у меня раздел уже создан, то я его сначала удалю (хотя это и не обязательно). После удаления данного раздела, мы как раз получим ситуацию, когда на диске появится свободное незадействованное пространство.

Запускаем утилиту fdisk:

fdisk /dev/sda

Сначала я удалю раздел /dev/sda2. Вводим команду d. Вводим номер раздела: 2. Получаем сообщение «Partition 2 has been deleted». Раздел удален, значит у нас появилось свободное неразмеченное пространство на диске, которое мы будем использовать для создания нового раздела.

Вводим команду n, чтобы создать новый раздел. Все предлагаемые настройки оставляем по умолчанию (первичный раздел, номер раздела 2), то есть просто нажимаем Enter. Мне еще был задан вопрос «Do you want to remove the signature?», я ввел y.

Мы создали раздел /dev/sda2, который будет использоваться для установки ArchLinux. Запишем изменения, для этого вводим команду w.

Отформатируем только что созданный раздел. Выполняем команду:

mkfs.ext4 /dev/sda2

Обращаю внимание на то, что я не создал раздел swap, так как данный раздел у меня уже создан, он имеет название /dev/sda7. Процесс создания swap раздела был описан выше в параграфе «Разметка диска при установке ArchLinux на чистый диск».

Очень важно. Далее по тексту производится установка ArchLinux на раздел /dev/sda1 (это случай, который был рассмотрен выше в параграфе «Разметка диска при установке ArchLinux на чистый диск»). Вместо /dev/sda1 вы должны использовать свой раздел, то есть, если это /dev/sda2, который мы только что создали, то вместо /dev/sda1 вы должны писать /dev/sda2. Аналогично и с инициализацией swap раздела (см. следующий параграф). При инициализации swap раздела вместо /dev/sda2 я в данном случае должен подставить /dev/sda7 (так как именно этот swap раздел у меня уже был создан). Будьте предельно внимательны, не запутайтесь.

Инициализация swap

Если во время разметки диска вы создали раздел подкачки, или же он уже был на вашем диске, то его необходимо инициализировать. Выполняем команды (/dev/sda2 — это раздел подкачки):

mkswap /dev/sda2
swapon /dev/sda2

Монтирование разделов

Примонтируем наш корневой раздел /dev/sda1 в директорию /mnt:

mount /dev/sda1 /mnt

Выбор серверов-зеркал

Во время установки из интернета скачиваются пакеты. Пакеты размещаются на серверах-зеркалах.

Можно выбрать географически ближайший к вам сервер, чтобы загрузка пакетов происходила быстрее. Для этого нужно отредактировать файл /etc/pacman.d/mirrorlist. В этом файле представлен список серверов. Чем выше в списке расположен сервер, тем выше его приоритет, поэтому ближайший к вам сервер желательно переместить наверх списка.

Во время установки этот файл будет скопирован в вашу систему, и список серверов из файла будет использоваться при установке новых пакетов или при обновлении системы.

Откройте файл /etc/pacman.d/mirrorlist для редактирования:

nano /etc/pacman.d/mirrorlist

Мы открыли файл в консольном редакторе nano. Я перенес сервер от Яндекс (это строка «Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch») наверх списка.

Чтобы это сделать, найдите в списке сервер от Яндекса и поставьте на эту строку курсор. Нажмите сочетание клавиш Ctrl+K чтобы вырезать строчку. Теперь переместите курсор в самый верх файла и нажмите сочетание Ctrl+U, чтобы вставить строчку.

Сохраните изменения в файле и закройте редактор. Для этого нажмите Ctrl+X, нажмите y, а затем Enter.

Установка основных пакетов системы

Подготовительная часть окончена. Теперь можно выполнить установку основных пакетов base, для этого выполните команду:

pacstrap /mnt base

Процесс установки пакетов займет некоторое время.

У меня во время установки пакетов промелькнула вот такая ошибка: [ 1859.596408] systemd-tmpfiles[4216]: Failed to create file /sys/devices/system/cpu/microcode/reload: Read-only filesystem, но она никак не повлияла на дальнейшую установку. Поэтому я ее просто проигнорировал.

Генерация файла fstab

Сгенерируем файл fstab:

genfstab -L /mnt >> /mnt/etc/fstab

Просмотреть содержимое файла можно командой:

cat /mnt/etc/fstab

Изменение корневого каталога

Воспользуемся скриптом arch-chroot, чтобы сменить корневой каталог. Мы переключимся на каталог /mnt, в который у нас примонтирован корневой раздел диска.

arch-chroot /mnt

Часовой пояс

Настроим часовой пояс:

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Выполним hwclock, чтобы сгенерировать файл /etc/adjtime, в котором хранятся соответсвующие настройки.

hwclock --systohc

Локализация

Язык, который использует система, определяется локалью. Помимо языка интерфейса локаль определяет и форматы чисел, времени, даты и некоторые другие региональные особенности.

Для поддержки русского и/или других языков необходимо раскомментировать соответствующие строки (локали) в файле /etc/locale.gen. Откройте файл для редактирования:

nano /etc/locale.gen

Я раскомментировал строки:

en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Сохраните изменения и закройте файл.

Теперь генерируем локали. Для этого выполняем команду:

locale-gen

Установим переменную LANG в файле /etc/locale.conf. Создадим файл /etc/locale.conf (используем редактор nano):

nano /etc/locale.conf

Введите текст:

LANG=ru_RU.UTF-8

Сохраните и закройте файл.

Также добавим русскую раскладку клавиатуры для консоли и шрифт с поддержкой кириллицы:

nano /etc/vconsole.conf

Введите строки:

KEYMAP=ru
FONT=cyr-sun16

Сохраните и закройте файл.

Настройка hostname и hosts

Создадим файл hostname, в котором введем имя компьютера.

nano /etc/hostname

Вводим имя компьютера, например:

pingvinus

Сохраните и закройте файл.

Отредактируем файл /etc/hosts.

nano /etc/hosts

Содержимое файла должно иметь вид (вместо pingvinus укажите ваш hostname):

127.0.0.1 localhost
::1 localhost
127.0.1.1 pingvinus.localdomain pingvinus

Если у системы постоянный IP-адрес, то вместо 127.0.1.1 укажите этот адрес.

Пароль суперпользователя

Установим пароль суперпользователя (пароль пользователя root). Выполняем команду:

passwd

Вводим пароль и подтверждение пароля.

Установка загрузчика GRUB

Примечание. Если вы устанавливаете ArchLinux рядом с другим дистрибутивом Linux, и у вас уже установлен GRUB, то вы можете его использовать, а не устанавливать еще один GRUB на другой раздел. В таком случае вам нужно примонтировать раздел, на котором уже установлен GRUB, выполнить chroot на данный раздел и запустить update-grub.

Приведу последовательность команд, которую я использовал:

mkdir /mnt2 - создаем директорию, в которую будем монтировать раздел, на котором уже установлен GRUB.
mount /dev/sda5 /mnt2 - монтируем раздел.
cd /mnt2 - Входим в директорию.
ls - Проверяем, то ли мы примонтировали.
arch-chroot /mnt2 - Делаем chroot на /mnt2
sudo update-grub
exit
cd ..

Если же вам нужно установить и настроить GRUB, то следуйте указаниям ниже.

Установим загрузчик GRUB.

Сначала установим пакет grub, для этого выполняем команду:

pacman -S grub

Если вы используете или планируете использовать на этом компьютере не только ОС Linux, но и другие операционные системы, например, Windows, то установите пакет os-prober:

pacman -S os-prober

Теперь инсталлируем grub:

grub-install /dev/sda

Обратите внимание на то, что в команде мы указываем устройство (/dev/sda), а не раздел. Загрузчик устанавливается в каталог /boot.
Если команда выполнится без ошибок, то вы получите сообщение вида: Installation finished. No error reported.

Запускаем автоматическую настройку grub:

grub-mkconfig -o /boot/grub/grub.cfg

У меня в процессе выполнения данной команды выскочило предупреждение: WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning. В руководстве по ArchLinux сказано, что это нормально и данное сообщение можно проигнорировать.

Перезагрузка компьютера

Выйдите из окружения chroot, выполнив команду:

exit

Перезагрузите компьютер, выполнив:

reboot

Не забудьте извлечь Live-носитель, чтобы опять случайно не загрузиться в Live-систему.


Второй этап: настройка ArchLinux

После перезагрузки компьютера, вы попадете в свою новую свежеустановленную систему. Перед вами появится консоль и запрос на ввод login’а. Введите root и затем пароль, который вы задали для суперпользователя на этапе установки.

ArchLinux сразу после установки

Поздравляю! Первый этап установки завершен. Теперь переходим ко второму этапу — первичная настройка системы и установка графического окружения.


Создание пользователя

Сейчас вы работаете от имени пользователя root. Создадим обычного пользователя, от имени которого вы и будете пользоваться системой. Я создал пользователя pingvinus (вместо pingvinus укажите имя вашего пользователя).

useradd -m -g users -G wheel -s /bin/bash pingvinus

Теперь в директории /home появится домашняя директория пользователя. Ее можно посмотреть командой ls:

$ ls /home
pingvinus

Зададим пароль для только что созданного пользователя:

passwd pingvinus

Настройка интернет

У меня используется проводное Ethernet соединение. IP адрес система получает автоматически. Поэтому необходимо включить сервис DHCP. Выполняем команды:

systemctl enable dhcpcd.service
systemctl start dhcpcd.service

Ждем несколько секунд пока система получит IP-адрес. Можно проверить соединение, выполнив ping:

ping -c 5 archlinux.org

Установка sudo

Установим sudo и позволим нашему пользователю использовать sudo.

Для установки sudo выполните команду:

pacman -S sudo

Теперь разрешим пользователям группы wheel использование sudo. Когда мы создавали пользователя, то мы добавили его в группу wheel, поэтому он сможет пользоваться sudo. Выполняем команду:

visudo

Откроется редактор Vi с файлом настроек sudo.

Найдите строку «# %wheel ALL=(ALL) ALL» (перемещайте курсор вниз клавишей Стрелка Вниз. Строка закомментирована (перед ней стоит символ решетки #).
visudo

Нам нужно раскомментировать ее (то есть удалить символ решетки). Поместите курсор на символ решетки и нажмите клавишу x. Также можно удалить пробел, который стоял после решетки.
visudo wheel

Теперь нужно сохранить изменения и закрыть редактор. Для этого нажмите двоеточие «:», в нижней части экрана появится строка для ввода символов. Введите wq и нажмите Enter. Если вдруг вы не хотите сохранять изменения, а хотите просто закрыть редактор, то вместо wq введите q!.
visudo сохранить

Установка Иксов

Прежде всего установим «иксы» — Xorg. Выполняем команду:

pacman -S xorg

Вас спросят, устанавливать ли все пакеты, я устанавливал все, просто нажмите Enter.

Установка экранного менеджера

Экранный менеджер запускается сразу после загрузки системы. В нем вы выбираете пользователя для входа в систему и вводите пароль. Существует несколько разных экранных менеджеров, я устанавливал LightDM:

pacman -S lightdm lightdm-gtk-greeter

Разрешим автоматический запуск lightdm при загрузке системы:

systemctl enable lightdm.service

Установка графического окружения

В качестве графического окружения для ArchLinux доступно множество сред рабочего стола и оконных менеджеров. Выбор зависит только от вас. Ниже я для примера покажу, как установить Gnome, XFCE, KDE, Mate и Cinnamon. За подробностями обращайтесь к официальному Wiki или пишите комментарии с вопросами под этим материалом.

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

Теперь установим среду рабочего стола. Вы можете установить одну или несколько сред рабочего стола. Если вы новичок, то рекомендую начать, например, с XFCE.

Установка Gnome

Установим Gnome. Я устанавливал два пакета — gnome и gnome-extra. Второй пакет содержит несколько дополнительных программ для Gnome (архиватор, текстовый редактор, несколько вспомогательных утилит, игры и так далее.

pacman -S gnome gnome-extra

Установка займет некоторое время, так как пакетов в Gnome очень много.

Установка XFCE

Для установки XFCE выполните команду:

sudo pacman -S xfce4 xfce4-goodies

Установка KDE

Для установки KDE выполните команду:

sudo pacman -S plasma

Установка Mate

Для установки Mate выполните команду:

sudo pacman -S mate mate-extra

Установка Cinnamon

Для установки Cinnamon выполните команду:

sudo pacman -S cinnamon

Перезагружаем компьютер

Итак, вы установили среду рабочего стола. Второй этап установки ArchLinux завершен. Можно перезагрузить компьютер и проверить работу. Перезагружаем компьютер, выполнив команду:

reboot

Если все пройдет успешно, то загрузится экранный менеджер LightDM. В правом верхнем углу есть кнопка для выбора графического окружения.
ArchLinux установка LightDM
Если, например, вы установили несколько сред рабочего стола, то можно выбрать, какую из них запускать.
ArchLinux LightDM выбор среды рабочего стола

Выберите пользователя и введите пароль. Загрузится рабочий. Например, KDE будет выглядеть примерно так:
ArchLinux установка KDE

Что дальше?

Вы установили ArchLinux и установили среду рабочего стола! Теперь можно пользоваться системой.

Шрифт в терминале

Если вдруг у вас в терминале ужасный шрифт, то установите пакет ttf-dejavu и перезапустите терминал:

sudo pacman -S ttf-dejavu

Обновление системы:

sudo pacman -Syu

Установка пакетов.

Для установки пакетов используется команда pacman -S имя_пакета. Например, для установки браузера Firefox выполните:

sudo pacman -S firefox

Установка AUR, установка Yaourt

Репозиторий AUR (Arch User Repository) это репозиторий для ArchLinux, поддерживаемый сообществом. Он содержит огромное количество пакетов, которые устанавливаются путем компиляции из исходных кодов. Многие пакеты, которые есть в официальном репозитории ArchLinux, изначально были в репозитории AUR. AUR содержит очень много полезных приложений, которых нет в официальном репозитории.

Для установки пакетов из AUR используется утилита Yaourt. Раньше Yaourt можно было установить из стороннего репозитория archlinuxfr, но потом владелец репозитория удалил оттуда пакет yaourt. Поэтому мы установим Yaourt прямо из AUR.

Установим Yaourt. Выполните в терминале последовательно следующие команды:

sudo pacman -S git base-devel
git clone https://aur.archlinux.org/package-query.git
cd package-query/
makepkg -si
cd ..
git clone https://aur.archlinux.org/yaourt.git
cd yaourt
makepkg -si
cd ..
sudo rm -dR yaourt/ package-query/

Теперь можно устанавливать пакеты из AUR с использованием команды yaourt.

Для установки пакета используется команда:

yaourt -S имя_пакета

Для удаления пакета:

yaourt -Rs имя_пакета

Для обновления пакетов:

yaourt -Syu

Заключение

ArchLinux это дистрибутив не для новичков. Если вы прошли все этапы и смогли запустить рабочий стол, то это уже большой шаг. Впереди еще много интересного, настройкой ArchLinux можно заниматься бесконечно.

Надеюсь, что данное руководство будет вам полезным. Свои отзывы и вопросы оставляйте в комментариях.

Платформа Linux стала основой для большого количества систем, бесплатных и коммерческих, с узкой специализацией или универсальных вроде Arch Linux. Последняя отличается от аналогов наличием в официальном репозитории преимущественно свободного программного обеспечения (более 11 тысяч пакетов) и отсутствием графического интерфейса «из коробки». 

Что представляет собой Arch Linux

Arch Linux отличается от других систем минимальным количеством предустановленного ПО и консольным интерфейсом. «Голый» дистрибутив упрощает создание собственных интерфейсов с «окнами» и подборкой программ, развертывание Nginx, SSH, PHP и Python-пакетов, KDE и многого другого.

Особенности Arch Linux:

  1. Процесс инсталляции продукта сложнее, чем установка популярных систем типа Ubuntu и Fedora.
  2. Графическая оболочка необязательна, пользователь вправе продолжать работать в консоли.
  3. Пользователь самостоятельно выбирает компоненты, которые будут работать.

То же относится к дочерним дистрибутивам, например Manjaro, ArcoLinux, Chakra. Популярность системы обеспечивает совместимость с процессорами x86-64. Принцип распространения Arch Linux включает ряд особенностей: простоту, современность, прагматизм, универсальность и удобство для пользователя.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Преимущества Arch Linux

За счет установки лишь реально необходимых программ снижаются требования к аппаратной части компьютера. Если речь идет об облачном сервере, экономятся его ресурсы, появляется возможность беспрепятственно запускать больше виртуальных машин. На базе системы Arch Linux легко создать «собственный компьютер», выполняющий узкий перечень задач.

Другие преимущества:

  1. Система обновляется постоянно, автоматически, по мере выпуска новых релизов.
  2. Инсталляция пакетов осуществляется хоть с локального диска, хоть из сети.
  3. Выпускаемые приложения не требуют адаптации для совместимости с дистрибутивом.
  4. Существует пользовательский репозиторий с огромным количество ПО.

Сообщество Arch Linux активно развивается. Там найдется все: от документации по установке и настройке системы до помощи специалистов в решении технических проблем и узких задач по развертыванию специализированных решений. При поддержке участников легко освоить работу с системой «с нуля».

Как установить Arch Linux

Перед инсталляцией необходимо загрузить ISO-образ с официального сайта. Загрузка возможна как средствами браузера, напрямую, так и через торренты. После скачивания его требуется записать на внешний USB-накопитель или DVD-диск (второй вариант практически «умер», на новой технике часто нет привода).

Подготовка к установке

Компьютер, на который планируется установить Arch Linux, рекомендуется подключить к интернету по проводной линии. Сеть Wi-Fi требует дополнительных настроек, поэтому при настройке неизбежно появятся проблемы. Последовательность действий при установке на виртуальную и физическую машину несколько отличается.

Arch Linux

Последовательность действий (на примере VirtualBox):

  1. Создать новую виртуальную машину Arch Linux.
  2. Перейти в раздел «Система», меню «Настройки», и поставить галочку на «Включить EFI».
  3. Перейти в раздел «Носитель» и в контроллер IDE добавить путь к скачанному файлу.
  4. Далее откроется окно автозапуска из образа дистрибутива.

Если речь идет о реальном физическом компьютере, запуск установки производится путем загрузки с USB-накопителя. В официальном образе для запуска инсталляции понадобится нажать Enter на пункте Boot Arch Linux (x86_64). При запуске пользователь увидит командную строку с правами root. Остается проверив правильность времени и приступать к установке (ниже команда).

timedatectl set-ntp true

Разбивка и форматирование накопителя

Первый этап включает разметку диска. Здесь важно убедиться, что в настоящий момент в системе нет подключенных накопителей с важными данными. Изредка пользователи ошибаются и удаляют разделы на загрузочном диске с Windows. Проще работать с «пустым» компьютером, когда диски изначально не содержат ничего ценного.

Разбивка и форматирование накопителя

Последовательность действий:

  1. Проверить отсутствие важных файлов командой lsblk.
  2. Запустить процесс разбивки накопителя командой cfdisk /dev/sda.
  3. В появившемся меню выбрать строку с наименованием формата диска GPT.
  4. Нажать в нижней части экрана на New, чтобы создать корневой раздел.
  5. Вручную внести размер диска в гигабайтах или терабайтах.
  6. Нажать на Type и выбрать тип раздела в зависимости от архитектуры процессора.
  7. Выбрать пункт Write и нажать клавишу Enter.

Остается подтвердить действие вводом команды YES и повторным нажатием Enter. Следом нужно создать еще один диск для размещения временных файлов, затем проверить созданные разделы командой lsblk. Если все открывается нормально, нужно смонтировать корневой раздел /dev/sda1 в директории /mnt.

mount /dev/sda1 /mnt

Linux root

Для созданного SWAP-раздела необходима дополнительная инициализация:

mkswap /dev/sda2

swapon /dev/sda2

В приведенном примере /dev/sda2 – это путь к SWAP-разделу, указанному при инициализации во время разбивки. Теперь оба раздела нужно отформатировать командой:

mkfs.ext4 /dev/sda1 (или sda2 для SWAP-раздела)

Все, компьютер готов к продолжению установки операционной системы Arch Linux.

Инсталляция и настройка установленной системы

Последующие шаги по-прежнему предполагают работу в консоли и запуск процессов с помощью ручного ввода команд. Так, установка основных пакетов base осуществляется после:

pacstrap /mnt base

genfstab –L /mnt >> /mnt/etc/fstab

По завершении инсталляции требуется настройка системы. Перезагружать компьютер перед этим необязательно. Последовательность действий:

  1. Выполнить команду arch-chroot /mnt /bin/bash.
  2. Инсталлировать VIM – pacman –S vim.
  3. Открыть файл с кодировками – vim /etc/locale.gen.
  4. Снять комментарии со строк en_US.UTF-8 UTF-8 и ru_RU.UTF-8 UTF-8.
  5. Сохранить изменения и закрыть файл.
  6. Сгенерировать локаль – locale-gen.
  7. Включить поддержку русского языка – echo “LANG=ru_RU.UTF-8” > /etc/locale.conf.
  8. Настроить часовой пояс – ln –sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime.

Из настроек остается задать пароль суперпользователя и установить загрузчик GRUB.

Первое делается командой:

passwd

Linux passwd

После ввода команды предлагается ввести нужную комбинацию и затем подтвердить сохранение. Далее устанавливается пакет GRUB:

pacman –S grub

grub-install /dev/sda

grub-mkconfig –o /boot/grub/grub.cfg

По желанию устанавливается графическая оболочка, например, Gnome. Она состоит из 2 пакетов – gnome и gnome-extra. В первом содержатся файлы самой оболочки, во втором – дополнительные программы вроде архиватора, текстового редактора, вспомогательных утилит. Запускается процесс инсталляции командой:

pacman –S gnome gnome-extra

pacman –S gnome gnome-extra

По завершении установки достаточно перезагрузить компьютер, но уже без подключенного накопителя USB с образом дистрибутива.

На этом все! Arch Linux готов к эксплуатации.

В этой статье мы расскажем, что такое Arch Linux, как проходит её установка и настройка.

Arch Linux ― это операционная система от Linux. Главное отличие от других Linux-систем ― минимальное количество пакетов. Это почти «голый» дистрибутив.

ОС Ubuntu и Fedora славятся своей простотой установки и работы с системой. Лёгкость в использовании достигается за счёт уже сформированных разработчиками пакетов программ, которые встроены в ОС. Так как это универсальные пакеты, некоторые программы не нужны пользователю, но выбора комплектации ОС нет. В ситуации, когда нужна только основа, можно воспользоваться Arch Linux. На эту основу, как бусы, можно нанизывать Nginx, SSH, набор PHP- и Python-пакетов, KDE и многие другие программы. Arch Linux не навязывает графические оболочки, в нём нет встроенных демонов для печати и сканирования — лишь то, что действительно нужно в данный момент.

Из-за больших возможностей комплектации Arch Linux сложен в настройке. Чтобы с ним работать, нужно иметь базовые знания управления дистрибутивами Linux. Поэтому этот продукт больше подходит профессионалам. Это же справедливо и для дистрибутивов на основе Archlinux (например, Manjaro, ArcoLinux, Chakra и др.).

Преимущества использования Arch Linux

  1. Экономия ресурсов системы. В Arch Linux будут установлены только те программы, которые выбрал пользователь. Благодаря этому система экономит ресурсы сервера и не тратит их на ненужные программы и обновления.

  2. Система Rolling release (плавающий релиз). Большинство операционных систем Linux обновляются при помощи системы фиксированных версий. Например, Ubuntu или Debian. Перед тем как стать доступной новой версией, ПО проходит тестирование. Это позволяет сделать систему стабильной. Чтобы установить последние версии программ, приходится вручную скачивать пакеты с официальных сайтов и устанавливать их в систему. Благодаря Rolling release у пользователя всегда установлено самое свежее ПО.

  3. Pacman. Это инструмент для управления пакетами. С его помощью можно устанавливать пакеты из сети и с жесткого диска, искать их по базе, искать нужные файлы внутри пакетов и получать информацию о пакете. В отличие от apt и dnf Pacman имеет короткие команды.

  4. ПО выходит быстрее, чем для других дистрибутивов. Это связано с тем, что созданные приложения не требуют модификаций для совместимости с дистрибутивом. Так как в пакет многих дистрибутивов входят дополнительные программы, к каждому приложению нужны патчи, которые позволят корректно работать с разными дистрибутивами. Все эти доработки занимают много времени. Так как ядро Arch Linux простое, для него не нужны патчи и новое приложение сразу доступно для установки.

  5. Большой репозиторий AUR. Наравне с официальным репозиторием Arch есть пользовательский репозиторий AUR (Arch User Repository). В нём хранится ПО от членов сообщества, которого нет в официальном репозитории. С помощью AUR можно найти, скомпилировать и установить практически любой существующий для Linux софт, даже если он был создан для очень частных случаев. С помощью AUR не нужно импортировать ключи, скачивать файлы и устанавливать на сервер. Все делается с помощью нескольких команд.

  6. Активное сообщество пользователей. У Arch Linux самая подробная документация из всех дистрибутивов Linux. Мельчайшие детали функционирования дистрибутива описаны в ArchWiki. Это огромное цифровое хранилище знаний оперативно пополняется и переводится на разные языки. Даже если проблема узкая и решение не описано в документации, можно написать на форуме, где представители сообщества всегда готовы помочь. Этот ресурс полезен для всех пользователей Linux.

Как установить Arch Linux на VirtualBox

Этап 1. Подготовка

  1. 1.

    Перейдите на официальный сайт Arch Linux и загрузите установочный образ. Для загрузки доступна как прямая ссылка, так и торрент.

  2. 2.

    Создайте новую виртуальную машину Arch Linux:

    Установка Arch Linux 1 Archlinux установка и настройка

  3. 3.

    Перейдите в «Настройки» — «Система» и поставьте галочку напротив Включить EFI:

    Установка Arch Linux 2

  4. 4.

    В этом же разделе перейдите в «Носители». В контроллер IDE добавьте скачанный файл .iso. Нажмите Ок:

    Установка Arch Linux 3

  5. 5.

    Запустите виртуальную машину. Выберите загруженный файл из списка:

    Установка Arch Linux 4

  6. 6.

    Выберите первый пункт и нажмите Enter:

    Установка Arch Linux 5

Этап 2. Разметка диска

Для установки Arch Linux нужен интернет, поэтому сначала проверьте соединение командой ping -c 3 google.com. Если вы используете Wi-Fi, подключитесь к сети при помощи утилиты wifi-menu.

  1. 1.

    Перед разметкой дисков нужно проверить, есть ли на сервере важные файлы, чтобы не удалить данные. Введите команду для просмотра разделов:

    Установка Arch Linux 6

    Также можно посмотреть диски по размерам:

    Например, на скриншоте ниже показан диск /dev/sda на 8 Гб. На нём мы создадим 3 раздела:

    • UEFI-раздел — 300 МБ,
    • раздел swap — 700 МБ,
    • корневой раздел — 7 ГБ (всё оставшееся пространство).

    Обратите внимание! Вам могут понадобиться другие разделы. Это зависит от цели установки Arch Linux.

    Установка Arch Linux 7

  2. 2.

    Для разметки введите команду:

    Где /dev/sda — диск, который вы выбрали для разметки.

  3. 3.

    Выберите gpt формат:

    Установка Arch Linux 8

  4. 4.

    Чтобы создать UEFI-раздел, нажмите New в нижней части экрана:

    Установка Arch Linux 9

  5. 5.

    Введите размер раздела:

    Установка Arch Linux 10

  6. 6.

    Нажмите Type и выберите тип раздела «EFI System»:

    Установка Arch Linux 11

  7. 7.

    Повторите действия с 4 шага 2 раза и укажите следующее пространство и тип:

    • 700M (МБ) — Linux swap,
    • 7G (ГБ) — корневой раздел, тип которого зависит от архитектуры вашего процессора.
  8. 8.

    Выберите «Write» и нажмите Enter:

    Установка Arch Linux 12

  9. 9.

    Подтвердите действие. Введите yes и нажмите Enter:

    Установка Arch Linux 13

  10. 10.

    Чтобы выйти из утилиты, выберите «Quit» и нажмите Enter.

  11. 11.

    Проверьте созданные разделы командой lsblk:

    Установка Arch Linux 131

    Готово, вы разметили диск.

Этап 3. Форматирование дисков

Обратите внимание

При форматировании диска всё его содержимое удаляется.

  1. 1.

    Для форматирования диска введите команду:

    Где /dev/sda3 ― корневой раздел.

  2. 2.

    Примонтируйте корневой раздел /dev/sda3 в директорию /mnt:

  3. 3.

    Отформатируйте /dev/sda1 как fat32:

  4. 4.

    Создайте точку монтирования:

  5. 5.

    Примонтируйте /dev/sda1 в директорию /mnt/efi:

  6. 6.

    Раздел swap необходимо инициализировать. Введите команды:

    Где /dev/sda2 — раздел swap.

Если были созданы другие разделы, кроме UEFI и swap, форматируйте их той же командой.

Этап 4. Установка базовой системы

  1. 1.

    Выполните установку основных пакетов base:

    pacstrap /mnt base linux linux-firmware

    Установка может занять некоторое время.

  2. 2.

    Сгенерируйте файл fstab:

    genfstab -U /mnt >> /mnt/etc/fstab

Этап 5. Настройка установленной системы

  1. 1.

    Для дальнейшей настройки нужно войти в установленную систему, но без перезагрузки. Выполните:

    arch-chroot /mnt /bin/bash
  2. 2.

  3. 3.

    Включите кодировки, с которыми сможет работать система. Для этого откройте файл /etc/locale.gen:

    Раскомментируйте строки с нужным языком. Например:

    en_US.UTF-8 UTF-8  
    ru_RU.UTF-8 UTF-8

    Установка Arch Linux 14 Настройка Archlinux после установки

    Сохраните изменения и закройте файл.

  4. 4.

    Сгенерируйте локали. Для этого выполняем команду:

  5. 5.

    Чтобы включить русский язык, введите:

    echo "LANG=ru_RU.UTF-8" > /etc/locale.conf

    Где ru_RU.UTF-8 ― сгенерированный локаль.

  6. 6.

    Добавьте шрифт с поддержкой кириллицы в консоль:

    echo "FONT=cyr-sun16" > /etc/vconsole.conf
  7. 7.

    Настройте часовой пояс:

    ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
  8. 8.

    Синхронизируйте аппаратные часы:

  9. 9.

    Настройте автокоррекцию времени:

Этап 6. Установка пароля суперпользователя

Выполните команду:

Введите пароль и подтвердите его:

Установка Arch Linux 15

Этап 7. Установка загрузчика GRUB

  1. 1.

    Установите пакет grub и efibootmgr:

    pacman -S grub efibootmgr
  2. 2.

    Установите загрузчик на устройство:

    grub-install /dev/sda --efi-dir=/efi/
  3. 3.

    Перегенерируйте initramfs:

  4. 4.

    Запустите автоматическую настройку grub:

    grub-mkconfig -o /boot/grub/grub.cfg

Этап 8. Archlinux: графические оболочки (по желанию)

Можно установить любую из существующих графических оболочек. Мы приведём пример установки Gnome.

Установим два пакета — gnome и gnome-extra. Во втором пакете содержатся дополнительные программы для Gnome (архиватор, текстовый редактор, несколько вспомогательных утилит). Введите:

pacman -S gnome gnome-extra

Дождитесь конца загрузки:

Установка Arch Linux 16 Archlinux графическая установка

Готово. Это только базовая настройка Archlinux. В зависимости от ваших потребностей настроек может быть намного больше.

Понравилась статья? Поделить с друзьями:

А вот и еще наши интересные статьи:

  • Хотпоинт аристон с верхней загрузкой инструкция
  • Должностная инструкция технолога общественного питания образец скачать
  • Увд мытищи руководство по
  • Классное руководство в школе курсы
  • Fender champion 100 инструкция на русском

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии