Это личное руководство, поэтому, если вы заблудились и только что нашли это руководство где-то, я рекомендую вам прочитать официальную wiki
! В этом руководстве основное внимание будет уделено systemd-boot
, UEFI
и руководству, если вы хотите зашифровать свой раздел с помощью LUKS/LVM
. Это руководство существует для того, чтобы я мог запомнить кучу вещей при переустановке Archlinux
.
Перед установкой убедитесь, что:
Раскладка клавиатуры консоли по умолчанию — США. Доступные макеты можно просмотреть с помощью:
# ls /usr/share/kbd/keymaps/**/*.map.gz
Чтобы изменить макет, добавьте соответствующее имя файла к ключам загрузки, опуская путь и расширение файла. Например, чтобы установить американскую раскладку клавиатуры:
# loadkeys us
Если на материнской плате UEFI включен режим UEFI, Archiso соответствующим образом загрузит Arch Linux через systemd-boot. Чтобы убедиться в этом, перечислите каталог efivars:
# ls /sys/firmware/efi/efivars
Если команда показывает каталог без ошибок, значит система загружается в режиме UEFI. Если каталог не существует, система может быть загружена в режиме BIOS (или CSM ).
Нам необходимо убедиться, что мы подключены к Интернету, чтобы иметь возможность установить base
Arch Linux и пакеты linux
. Давайте посмотрим названия наших интерфейсов.
# ip link
Вы должны увидеть что-то вроде этого:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:00:00:00
enp0s0
— проводной интерфейсwlan0
— беспроводной интерфейс Если вы используете проводное соединение, вы можете включить проводной интерфейс с помощью systemctl start dhcpcd@<interface>
.
# systemctl start dhcpcd@enp0s0
Если вы используете ноутбук, вы можете подключиться к беспроводной точке доступа с помощью команды iwctl
из iwd
. Обратите внимание, что он уже включен по умолчанию. Также убедитесь, что беспроводная карта не заблокирована с помощью rfkill
.
Сканировать сеть.
# iwctl station wlan0 scan
Получить список сканируемых сетей можно:
# iwctl station wlan0 get-networks
Подключитесь к своей сети.
# iwctl -P "PASSPHRASE" station wlan0 connect "NETWORKNAME"
Пропингуйте веб-сайт Archlinux, чтобы убедиться, что мы онлайн:
# ping archlinux.org
Если вы получили ответ «Неизвестный хост» или «Хост назначения недоступен», это означает, что вы еще не в сети. Проверьте конфигурацию сети и повторите описанные выше шаги.
Используйте timedatectl
, чтобы убедиться, что системные часы точны:
# timedatectl set-ntp true
Чтобы проверить статус службы, используйте timedatectl status
.
При распознавании работающей системой диски назначаются блочному устройству, например /dev/sda
, /dev/nvme0n1
или /dev/mmcblk0
. Чтобы идентифицировать эти устройства, используйте lsblk или fdisk. Самый распространенный главный диск — sda .
# lsblk
Результаты, заканчивающиеся на rom
, loop
или airoot
могут быть проигнорированы.
В этом руководстве я создам два разных способа разбиения диска. Один для обычной установки, другой для настройки шифрования (LUKS/LVM). Начнем с незашифрованного:
Давайте очистим наш основной диск, чтобы создать новые разделы для нашей установки. И да, в этом руководстве мы будем использовать /dev/sda
в качестве диска.
# gdisk /dev/sda
Нажмите x, чтобы войти в экспертный режим . Затем нажмите z, чтобы отключить наш диск. Затем нажмите y , когда будет предложено удалить GPT и MBR. Обратите внимание, что это приведет к отключению всего вашего диска, поэтому ваши данные исчезнут - после этого они будут уменьшены до атомов. ЭТОТ. НЕ МОГУ. БЫТЬ. ОТМЕНЕНО.
Откройте cgdisk
, чтобы начать разметку нашей файловой системы.
# cgdisk /dev/sda
Нажмите Return, когда появится предупреждение о повреждении GPT.
Теперь нам должен быть представлен наш основной диск, на котором показаны номер раздела, размер раздела, тип раздела и имя раздела. Если вы видите список разделов, сначала удалите их все.
Создайте boot
раздел
EF00
. Нажмите Enter.boot
. Нажмите Enter. Создайте root
раздел
8300
).root
. Создайте root
раздел
home
. Наконец, нажмите Write
внизу списка настроек, чтобы записать изменения на диск. Введите yes
чтобы подтвердить команду записи. Теперь мы закончили разметку диска. Нажмите Quit
, чтобы выйти из cgdisk . Перейти к следующему разделу.
LUKS/LVM
Давайте очистим наш основной диск, чтобы создать новые разделы для нашей установки. И да, в этом руководстве мы будем использовать /dev/sda
в качестве диска.
# gdisk /dev/sda
Нажмите x, чтобы войти в экспертный режим . Затем нажмите z, чтобы отключить наш диск. Затем нажмите y , когда будет предложено удалить GPT и MBR. Обратите внимание, что это приведет к отключению всего вашего диска, поэтому ваши данные исчезнут - после этого они будут уменьшены до атомов. ЭТОТ. НЕ МОГУ. БЫТЬ. ОТМЕНЕНО.
Создайте наши разделы, запустив cgdisk /dev/sda
# cgdisk /dev/sda
Просто нажмите Return, когда появится предупреждение о повреждении GPT.
Теперь нам должен быть представлен наш основной диск, на котором показаны номер раздела, размер раздела, тип раздела и имя раздела. Если вы видите список разделов, сначала удалите их все.
Создайте boot
раздел
EF00
. Нажмите Enter.boot
. Нажмите Enter. Создайте раздел LVM
8e00
. Нажмите Enter.lvm
. Нажмите Enter. Наконец, нажмите Write
внизу списка настроек, чтобы записать изменения на диск. Введите yes
чтобы подтвердить команду записи. Теперь мы закончили разметку диска. Нажмите Quit
, чтобы выйти из cgdisk . Перейти к следующему разделу.
Снова используйте lsblk
, чтобы проверить созданные нами разделы. Мы? Я думал, что делаю это руководство для себя, лол
# lsblk
Вы должны увидеть что-то вроде этого :
ИМЯ | МАДЖ:МИН | РМ | РАЗМЕР | РО | ТИП | ТОЧКА МАУНТПОИНТА |
---|---|---|---|---|---|---|
ПДД | 8:0 | 0 | 477Г | 0 | ||
sda1 | 8:1 | 0 | 1 | 0 | часть | |
sda2 | 8:2 | 0 | 1 | 0 | часть | |
sda3 | 8:3 | 0 | 175Г | 0 | часть |
sda
— основной диск
sda1
— загрузочный раздел
sda2
— это раздел подкачки
sda3
— домашний раздел
ИМЯ | МАДЖ:МИН | РМ | РАЗМЕР | РО | ТИП | ТОЧКА МАУНТПОИНТА |
---|---|---|---|---|---|---|
ПДД | 8:0 | 0 | 477Г | 0 | диск | |
sda1 | 8:1 | 0 | 1 | 0 | часть | |
sda2 | 8:2 | 0 | 1 | 0 | часть |
sda
— основной диск
sda1
— загрузочный раздел
sda2
— это раздел LVM
Сюрприз! Сюрприз! Мы не будем шифровать раздел /boot
.
Отформатируйте раздел /dev/sda1
как FAT32
. Это будет наш /boot
.
# mkfs.fat -F32 /dev/sda1
Отформатируйте разделы /dev/sda3
и /dev/sda4
как EXT4
. Это будет наш root
и home
раздел.
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda4
Отформатируйте раздел /dev/sda1
как FAT32
. Это будет наш /boot
.
# mkfs.fat -F32 /dev/sda1
Создайте зашифрованный контейнер LUKS.
# cryptsetup luksFormat /dev/sda2
Введите парольную фразу дважды. Не забывайте об этом!
Откройте созданный контейнер и назовите его как хотите. В этом руководстве я буду использовать cryptlvm
.
# cryptsetup open --type luks /dev/sda2 cryptlvm
Введите парольную фразу и подтвердите ее.
Расшифрованный контейнер теперь доступен по адресу /dev/mapper/cryptlvm
.
Создайте физический том поверх открытого контейнера LUKS:
# pvcreate /dev/mapper/cryptlvm
Создайте группу томов и назовите ее volume
(или как хотите), добавив к ней ранее созданный физический том:
В этом руководстве я буду использовать volume
в качестве имени группы томов.
# vgcreate volume /dev/mapper/cryptlvm
Создайте все необходимые логические тома в группе томов. Создадим root
и home
логические тома. Обратите внимание, что volume
— это имя тома, который мы только что создали.
Создаем наш root
. В этом руководстве я буду использовать 100 ГБ.
# lvcreate -L 100G volume -n root
Это создаст /dev/mapper/volume-root
.
Создайте наш дом, милый home
. Я просто выделю для него оставшееся место.
# lvcreate -l 100%FREE volume -n home
Это создаст /dev/mapper/volume-home
.
Отформатируйте логические разделы тома LVM.
Отформатируем наш root
и home
разделы.
# mkfs.ext4 /dev/mapper/volume-root
# mkfs.ext4 /dev/mapper/volume-home
Подключите раздел /dev/sda
к /mnt
. Это наш /
:
# mount /dev/sda3 /mnt
Создайте точку монтирования /boot
:
# mkdir /mnt/boot
Подключите /dev/sda1
к разделу /mnt/boot
. Это будет наш /boot
:
# mount /dev/sda1 /mnt/boot
Создайте точку монтирования /home
:
# mkdir /mnt/home
Подключите /dev/sda4
к разделу /mnt/home
. Это будет наш /home
:
# mount /dev/sda1 /mnt/home
Подключите раздел /dev/mapper/volume-root
в /mnt
. Это наш /
:
# mount /dev/mapper/volume-root /mnt
Создайте точку монтирования /boot
:
# mkdir /mnt/boot
Подключите /dev/sda1
к разделу /mnt/boot
. Это будет наш /boot
:
# mount /dev/sda1 /mnt/boot
Создайте точку монтирования /home
:
# mkdir /mnt/home
Смонтируйте /dev/mapper/volume-home
в раздел /mnt/home
. Это будет наш /home
:
# mount /dev/mapper/volume-home /mnt/home
Нам не нужно монтировать swap
поскольку он уже включен.
Теперь давайте продолжим и установим пакеты base
, linux
, linux-firmware
и base-devel
в нашу систему.
# pacstrap /mnt base base-devel linux linux-zen linux-firmware
Я установлю linux-zen
так как в нем есть необходимые модули для игр.
base
пакет не включает в себя все инструменты из активной установки, поэтому для полнофункциональной базовой системы может потребоваться установка других пакетов. В частности, рассмотрите возможность установки:
программное обеспечение, необходимое для работы в сети,
dhcpcd
: демон клиента DHCP, соответствующий RFC2131.iwd
: демон беспроводной сети Интернет.inetutils
: набор общих сетевых программ.iputils
: инструменты мониторинга сети, включая ping
утилиты для доступа к разделам RAID
или LVM
,
lvm2
: утилиты Logical Volume Manager 2 ( если вы настраиваете зашифрованную файловую систему с помощью LUKS/LVM, включите это в pacstrap )Зрам
zram-generator
текстовый редактор(ы),
nano
vim
vi
пакеты для доступа к документации на страницах man и info,
man-db
man-pages
Микрокод
intel-ucode
/ amd-ucode
инструменты:
git
: быстрая распределенная система контроля версийtmux
: терминальный мультиплексор.less
: программа на основе терминала для просмотра текстовых файлов.usbutils
: Утилиты USB-устройстваbash-completion
: программируемое завершение оболочки bash.утилиты пользовательского пространства для управления файловыми системами, которые будут использоваться в системе,
ntfs-3g
: драйвер и утилиты файловой системы NTFS.unrar
: программа распаковки RAR.unzip
: для извлечения и просмотра файлов в архивах .zip
p7zip
: архиватор файлов командной строки с высокой степенью сжатия.unarchiver
: unar
и lsar
: инструменты Objective-C для распаковки архивных файлов.gvfs-mtp
: реализация виртуальной файловой системы для GIO
(бэкэнд MTP
; Android, медиаплеер)libmtp
: библиотечная реализация протокола передачи мультимедиа.android-udev
: правила Udev для подключения устройств Android к вашему Linux-устройству.mtpfs
: файловая система FUSE, поддерживающая чтение и запись с любого устройства MTP.xdg-user-dirs
: Управление пользовательскими каталогами, такими как ~/Desktop
и ~/Music
Эти инструменты пригодятся позже. Так что будущий я , установи их.
# genfstab -U /mnt >> /mnt/etc/fstab
Проверьте полученный файл /mnt/etc/fstab
и отредактируйте его в случае ошибок.
Теперь измените root во вновь установленную систему.
# arch-chroot /mnt /bin/bash
Выбор часовых поясов можно найти в /usr/share/zoneinfo/
. Поскольку я нахожусь на Филиппинах, я буду использовать /usr/share/zoneinfo/Asia/Manila
. Выберите подходящий часовой пояс для вашей страны:
# ln -sf /usr/share/zoneinfo/Asia/Manila /etc/localtime
Запустите hwclock
, чтобы сгенерировать /etc/adjtime
:
# hwclock --systohc
Эта команда предполагает, что аппаратные часы установлены в формате UTC.
locale
определяет, какой язык использует система, а также другие региональные особенности, такие как номинал валюты, нумерология и наборы символов. Возможные значения перечислены в /etc/locale.gen
. Раскомментируйте en_US.UTF-8
, а также другие необходимые локализации.
Раскомментируйте en_US.UTF-8 UTF-8
и другие необходимые локали в /etc/locale.gen
, сохраните и сгенерируйте их с помощью:
# locale-gen
Создайте файл locale.conf
и соответствующим образом установите переменную LANG:
# locale > /etc/locale.conf
Если вы установили раскладку клавиатуры ранее, сделайте изменения постоянными в vconsole.conf
:
# echo "KEYMAP=us" > /etc/vconsole.conf
Не используете us
макет? Замени его, дурак.
Создайте файл имени хоста. В этом руководстве я буду использовать MYHOSTNAME
в качестве имени хоста. Имя хоста — это имя хоста. Каждые 60 секунд в Африке проходит минута.
# echo "MYHOSTNAME" > /etc/hostname
Откройте /etc/hosts
, чтобы добавить соответствующие записи в hosts
:
127.0.0.1 localhost
::1 localhost
127.0.1.1 MYHOSTNAME.localdomain MYHOSTNAME
Если у системы есть постоянный IP-адрес, его следует использовать вместо 127.0.1.1
.
Создание нового initramfs обычно не требуется, поскольку mkinitcpio запускался при установке пакета ядра с помощью pacstrap. Это важно, если вы настраиваете систему с шифрованием!
```
# mkinitcpio -P
```
DO NOT FORGET TO RUN THIS BEFORE REBOOTING YOUR SYSTEM!
Откройте /etc/mkinitcpio.conf
в редакторе:
В этом руководстве описано два способа настройки initramfs: udev
(по умолчанию) и systemd
. Если вы планируете использовать plymouth
(заставку), желательно использовать initramfs на основе systemd
.
initramfs на основе udev (по умолчанию).
Найдите массив HOOKS
, затем измените его на что-то вроде этого:
HOOKS=(base udev autodetect keyboard modconf block encrypt lvm2 filesystems fsck)
initramfs на основе systemd.
Найдите массив HOOKS
, затем измените его на что-то вроде этого:
HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck)
Восстановить образ initramfs:
# mkinitcpio -P
НЕ ЗАБУДЬТЕ ЗАПУСТИТЬ ЭТО ПЕРЕД ПЕРЕЗАГРУЗКОЙ СИСТЕМЫ!
# dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
Установите правильные разрешения
# chmod 0600 /swapfile
После создания файла правильного размера отформатируйте его для замены:
# mkswap -U clear /swapfile
Активируйте файл подкачки
# swapon /swapfile
Наконец, отредактируйте конфигурацию fstab, добавив запись для файла подкачки в /etc/fstab
:
/swapfile none swap defaults,pri=10 0 0
# pacman -S zram-generator
Давайте создадим файл конфигурации /etc/systemd/zram-generator.conf !
Я предпочитаю иметь ПОЛОВИНУ ОБЩЕЙ ОЗУ в качестве размера zswap. У моего ноутбука 4 ядра, поэтому я раздам его на ЧЕТЫРЕ устройства zram. Итак, я воспользуюсь этой конфигурацией:
[zram0]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram1]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram2]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram3]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
Не нужно ничего включать/запускать, устройства zram автоматически инициализируются! Просто перезагрузитесь и запустите swapon -s
чтобы проверить имеющийся у вас своп.
multilib
и AUR
Включите репозитории multilib и AUR в /etc/pacman.conf
. Откройте его в любом редакторе:
Раскомментируйте multilib
(уберите # в начале строк). Это должно выглядеть так:
[multilib]
Include = /etc/pacman.d/mirrorlist
Добавьте следующие строки в конец файла /etc/pacman.conf
чтобы включить репозиторий AUR:
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
pacman
вкусности Вы можете включить «пасхальные яйца» и вкусности в pacman
, менеджере пакетов ArchLinux.
Откройте /etc/pacman.conf
, затем найдите # Misc options
.
Чтобы добавить цвета в pacman
, раскомментируйте Color
. Затем добавьте Pac-Man
в pacman
, добавив ILoveCandy
в строку Color
. Чтобы включить параллельную загрузку, раскомментируйте и его:
Color
ILoveCandy
ParallelDownloads = 3
Чтобы проверить, успешно ли вы добавили репозитории и включили пасхальные яйца, запустите:
# pacman -Syu
Если обновление выдает ошибку, снова откройте pacman.conf
и проверьте наличие человеческих ошибок. Да, ты сильно облажался.
Установите пароль root
:
# passwd
Добавьте новую учетную запись пользователя. В этом руководстве я просто буду использовать MYUSERNAME
в качестве имени нового пользователя, кроме учетной записи root
. (Моя формулировка кажется лишней, да?) Конечно, измените имя пользователя из примера на свое:
# useradd -m -g users -G wheel,storage,power,video,audio,rfkill,input -s /bin/bash MYUSERNAME
Это создаст нового пользователя и его home
папку.
Установите пароль пользователя MYUSERNAME
:
# passwd MYUSERNAME
Если в будущем вам понадобятся права root с помощью команды sudo
, вам следует предоставить их самостоятельно:
# EDITOR=vim visudo
Раскомментируйте строку (Удалить #):
# %wheel ALL=(ALL) ALL
Да, сюда мы устанавливаем загрузчик. Мы будем использовать systemd-boot
, поэтому grub2
не нужен.
Установите загрузчик:
Мы установим его в точку монтирования /boot
(раздел /dev/sda1
).
# bootctl --path=/boot install
Создайте загрузочную запись /boot/loader/entries/arch.conf
, затем добавьте следующие строки:
```
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda3 rw
```
If your `/` is not in `/dev/sda3`, make sure to change it.
Save and exit.
Помните два типа initramfs ранее? Каждому типу необходимы определенные параметры ядра. Итак, здесь также есть два типа записей. Помните, что volume
— это имя группы томов, а /dev/mapper/volume-root
— это путь к /
.
initramfs на основе udev
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=/DEV/SDA2/UUID/HERE:volume root=/dev/mapper/volume-root rw
Замените /DEV/SDA2/UUID/HERE
на UUID вашего раздела LVM
. Вы можете проверить это, запустив blkid /dev/sda2
. Обратите внимание, что параметр cryptdevice
не поддерживается Plymouth, поэтому рекомендуется использовать initramfs на основе systemd, если вы планируете его использовать.
Совет: Если вы используете vim
, вы можете проще написать UUID, набрав :read ! blkid /dev/sda2
затем нажмите Enter. Затем манипулируйте выводом, используя визуальный режим.
initramfs на основе systemd
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options rd.luks.name=/DEV/SDA2/UUID/HERE=volume root=/dev/mapper/volume-root rw
Замените /DEV/SDA2/UUID/HERE
на UUID вашего раздела LVM
. Вы можете проверить это, запустив blkid /dev/sda2
.
Совет: Если вы используете vim
, вы можете проще написать UUID, набрав :read ! blkid /dev/sda2
затем нажмите Enter. Затем манипулируйте выводом, используя визуальный режим.
Обновить конфигурацию загрузчика
# vim /boot/loader/loader.conf
Удалите все его содержимое, а затем замените его на:
default arch.conf
timeout 0
console-mode max
editor no
Производители процессоров выпускают обновления стабильности и безопасности для микрокода процессора. Эти обновления содержат исправления ошибок, которые могут иметь решающее значение для стабильности вашей системы. Без них могут возникнуть ложные сбои или неожиданные остановки системы, которые будет трудно отследить.
Если вы не установили его с помощью pacstrap, установите микрокод следующим образом:
Для процессоров AMD:
# pacman -S amd-ucode
Для процессоров Intel:
# pacman -S intel-ucode
Если ваша установка Arch находится на съемном диске, на котором должен быть микрокод для процессоров обоих производителей, установите оба пакета.
Загрузите микрокод. Для systemd-boot
используйте опцию initrd
для загрузки микрокода перед начальным виртуальным диском следующим образом:
# sudoedit /boot/loader/entries/entry.conf
title Arch Linux
linux /vmlinuz-linux
initrd /CPU_MANUFACTURER-ucode.img
initrd /initramfs-linux.img
...
Замените CPU_MANUFACTURER
на amd
или intel
в зависимости от вашего процессора.
Чтобы включить сетевые демоны при следующей перезагрузке, вам необходимо включить dhcpcd.service
для проводного подключения и iwd.service
для беспроводного.
# systemctl enable dhcpcd iwd
Выйдите из среды chroot, набрав exit
или нажав Ctrl + d . После этого вы также можете отключить все смонтированные разделы.
Наконец, reboot
.
Если ваша установка прошла успешно, то ура!!! Если нет, вам следует начать подвергать сомнению свое собственное существование. Твои родители гордятся тобой?