Я не админ, не программист и опыта в Linux у меня не очень много. Поэтому вполне возможно, что где-то я не прав. Инструкцию публикую ради таких же новичков в Linux, как и я, которые хотят поэкпериментировать и более детально изучить Linux.
Решил на днях привести в порядок свой ноутбук и поставить туда Linux.
Ставить решил Arch Linux, так как ноутбук очень слабенький и нужна минимальная установка. Ну и хочется просто поиграться.
Здесь расскажу, как я ставил Arch на ноутбук с UEFI. Опишу лишь базовую установку. Без графического интерфейса.
Качаем образ
Качаем образ с сайта дистрибутива здесь. Закидываем на флешку с помощью Rufus (Windows) или аналогом для Linux. У меня на Pop!_os установлена минималистичная утилита Popsicle, которая отлично справилась со своей задачей.
Вставляем в USB-порт, в настройках UEFI ставим загрузку с флешки и грузимся.
Проверяем интернет
Сразу проверяем, есть ли у нас доступ в Интернет, чтобы не потерять время зря:
ping -c 5 archlinux.org
Если видим, что пакеты возвращаются, то значит с интернетом всё в порядке, можно идти дальше. Если соединение проводное, то скорее всего всё будет работать из коробки. В моём же случае нужно настраивать Wi-Fi.
Когда я ставил Арч в декабре 2019 года, драйверов для моей wifi-карточки в ядре не было, проходилось подключать Android-смартфон в качестве USB-модема. Но вот уже июнь 2020 года и, о чудо, все wifi-сети отлично ищутся и подключаются.
Подключаемся:
wifi-menu
Выбираем нужную wifi-сеть, соглашаемся с названием профиля и вводим пароль.
Но без проблем не обошлось: wifi-menu может подключится к wifi-сети, только если наш wifi-интерфейс изначально выключен. А он почему-то был включен. Судя по комментам на реддите, это проблема июньского образа.
Смотрим какие у нас есть интернет-интерфейсы:
ip link
Получаем список:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether c4:3a:35:90:6d:2e brd ff:ff:ff:ff:ff:ff
Видим наш интерфейс wlan0. В скобках видно, что он UP. Исправляем:
ip link set wlan0 down
После этого можно спокойно вызывать wifi-menu и подключатся.
Русский язык в установщике
Чтобы нам было попроще, стоит с порога подрубить русский язык.
Загрузка шрифта с кириллицей:
loadkeys ru
setfont cyr-sun16
Создаём локаль. Открываем файл /etc/locale.gen в редакторе nano:
nano /etc/locale.gen
Тут надо раскомментировать нашу локаль: ищем строку ru_RU.UTF-8 и убираем решетку.
Должно получится примерно так:
...
# ru_RU ISO-8859-5
# ru_RU.CP1251 CP1251
# ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
# ru_UA KOI8-U
# ru_UA.UTF-8 UTF-8
# rw_RW UTF-8
...
Сохраняем Ctrl+S и выходим Ctrl+X.
Генерируем указанную локаль и включаем русский язык:
locale-gen
export LANG=ru_RU.UTF-8
Обновляем системное время
timedatectl set-ntp true
Разбиваем диск на разделы
Я установил в свой ноутбук чистый SSD. На него и буду ставить систему.
Диск буду разбивать на 3 раздела: загрузочный /boot, корневой / и домашний /home.
Смотрим, какие диски есть в нашем распоряжении:
lsblk -f
Так выглядит диски и их разделы в моём ноутбуке: loop0, sda, sdb, mmcblk0. Теперь надо понять, какой диск нам нужен.
loop0 игнорируем, mmcblk0 имеет разделы с файловой системой ntfs, значит это встроенный диск с Windows, sdb имеет упоминание ARCHISO, это наша флешка, остаётся неразмеченный sda. Это это и есть нужный мне диск.
В вашем случае всё будет по-другому. Не сотрите там случайно чего-нибудь)))
Открываем наш диск в fdisk:
fdisk /dev/sda
Команды для fdisk:
Общие
d удалить раздел
F показать свободное неразмеченное пространство
l список известных типов разделов
n добавление нового раздела
p вывести таблицу разделов
t изменение типа раздела
v проверка таблицы разделов
i вывести информацию о разделе
Разное
m вывод этого меню
u изменение единиц измерения экрана/содержимого
x дополнительная функциональность (только для экспертов)
Сценарий
I загрузить разметку из файла сценария sfdisk
O записать разметку в файл сценария sfdisk
Записать и выйти
w запись таблицы разделов на диск и выход
q выход без сохранения изменений
Создать новую метку
g создание новой пустой таблицы разделов GPT
G создание новой пустой таблицы разделов SGI (IRIX)
o создание новой пустой таблицы разделов DOS
s создание новой пустой таблицы разделов Sun
- g - создаём таблицу GPT
- n - добавляем новый раздел. Просто жмём везде Enter, кроме пункта Last sector. В нём указываем размер раздела. Первый раздел будет загрузочный, на него нужно 260-512 мегабайт. Поэтому пишем: +512M.
- Добавляем раздел для корня файловой системы размером 40-60G.
- И последний раздел на всё оставшееся место. Просто не указываем ничего в пункте Last sector.
- t - изменяем тип первого раздела на EFI System. Номер раздела 1 и тип раздела 1.
- p - удостоверяемся, что всё верно.
- w - сохраняем изменения.
Команда (m для справки): g
Created a new GPT disklabel (GUID: E5F989F0-6FB1-A243-A8AD-4B424FDBAF61).
Команда (m для справки): n
Номер раздела (1-128, default 1):
Первый сектор (2048-468862094, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-468862094, default 468862094): +512M
Создан новый раздел 1 с типом 'Linux filesystem' и размером 512 MiB.
Команда (m для справки): n
Номер раздела (2-128, default 2):
Первый сектор (1050624-468862094, default 1050624):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-468862094, default 468862094): +60G
Создан новый раздел 2 с типом 'Linux filesystem' и размером 60 GiB.
Команда (m для справки): n
Номер раздела (3-128, default 3):
Первый сектор (126879744-468862094, default 126879744):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (126879744-468862094, default 468862094):
Создан новый раздел 3 с типом 'Linux filesystem' и размером 163,1 GiB.
Команда (m для справки): t
Номер раздела (1-3, default 3): 1
Тип раздела (введите L для получения списка типов разделов): 1
Тип раздела 'Linux filesystem' изменен на 'EFI System'.
Команда (m для справки): w
Таблица разделов была изменена.
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.
Если при создании раздела появляется вопрос Partition X contains a X signature. Do you want to remove the signature? Отвечаем Y
Форматируем в нужные файловый системы:
mkfs.vfat /dev/sda1 -n BOOT
mkfs.ext4 /dev/sda2 -L ROOT
mkfs.ext4 /dev/sda3 -L HOME
Монтируем корневой раздел:
mount /dev/sda2 /mnt
Создаём папки для других разделов и монтируем их:
cd /mnt
mkdir boot home
cd
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/home
Установка
Перед загрузкой пакетов нужно отредактировать файл со списком серверов:
nano /etc/pacman.d/mirrorlist
Здесь находится список серверов, с которых пакетный менеджер будет качать пакеты. Скачивание будет происходить с самого первого сервера. Если он вдруг станет недоступен или на нём не окажется нужного нам пакета, то скачивание начнётся со следующего и т. д.
Нам нужно поднять сервера, которые ближе всего к нам, в самый верх файла.
Находим русские сервера. Для этого жмём Ctrl+W и вводим Russia. Копируем строчку Server = http://... с помощью Ctrl+K, вставляем в самый верх файла с помощью Ctrl+U.
Теперь начинаем установку системы с помощью скрипта pacstrap:
pacstrap /mnt base linux linux-firmware base-devel man-db man-pages nano sudo git networkmanager grub efibootmgr
- base - основные программы.
- linux - ядро.
- linux-firmware - файлы прошивок для linux.
- base-devel - утилиты для разработчиков. Нужны для AUR.
- man-db - просмотрщик man-страниц.
- man-pages - куча man-страниц (руководств).
- nano - простой консольный текстовый редактор. Если умете работать в vim, то можете поставить его вместо nano.
- sudo - позволяет обычным пользователем совершать действия от лица суперпользователя.
- git - приложение для работы с репозиториями Git. Нужен для AUR и много чего ещё.
- networkmanager - сервис для работы интернета. Вместе с собой устанавливает программы для настройки.
- grub - загрузчик операционной системы. Без него даже загрузиться в новую систему не сможем.
- efibootmgr - поможет grub установить себя в загрузку UEFI.
Первичная настройка
Сохраняем скелет примонтированных разделов:
genfstab -p /mnt >> /mnt/etc/fstab
Переходим в режим chroot.
arch-chroot /mnt
Грубя говоря, мы типа вошли в только что установленную систему в качестве рута.
Генерируем /etc/adjtime с помощью:
hwclock --systohc
Устанавливаем московский временной пояс:
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Если Вы живите не в московском временной поясе, то Вам нужно выбрать подходящий пояс. Смотрим доступные пояса:
ls /usr/share/zoneinfo
ls /usr/share/zoneinfo/Нужный_Регион
Настраиваем локаль по-умолчанию для новой системы:
nano /etc/locale.conf
Пишем:
LANG="ru_RU.UTF-8"
Открываем файл с локалями:
nano /etc/locale.gen
Надо раскомментировать ru_RU.UTF-8.
Генерируем локали:
locale-gen
Редактируем /etc/vconsole.conf:
nano /etc/vconsole.conf
И прописываем шрифты:
KEYMAP=ru
FONT=cyr-sun16
После этого нужно подредактировать хуки:
nano /etc/mkinitcpio.conf
Ищём строчку HOOKS и добавляем в конце 3 хука (внутри скобок):
HOOKS = (... consolefont keymap systemd)
Создаём загрузочный образ:
mkinitcpio -p linux
Установка загрузчика
Устанавливаем загрузчик в загрузочный раздел:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
В --efi-directory указываем путь нашего загрузочного раздела. У меня это /dev/sda1.
Устанавливаем микрокод для процессора:
# Если у Вас процессор Intel, то:
pacman -S intel-ucode
# Если у Вас процессор AMD, то:
pacman -S amd-ucode
Генерируем конфигурационный файл:
grub-mkconfig -o /boot/grub/grub.cfg
Пароль рута
Нужно установить пароль для пользователя root:
passwd
Заводим интернет
Задаём имя компьютера в сети:
echo "имя_компьютера" > /etc/hostname
Добавляем записи hosts:
nano /etc/hosts
Пишем в конце файла:
127.0.0.1 localhost
::1 localhost
127.0.1.1 имя_компьютера.localdomain имя_компьютера
Чтобы интернет включался автоматически при запуске, пишем:
systemctl enable NetworkManager.service
Создаём обычного пользователя
Нужно создать пользователя, под которым мы будем входить в систему:
useradd -m -G wheel -s /bin/bash имя_пользователя
И ставим ему пароль:
passwd имя_пользователя
Настраиваем sudo
Редактируем файл sudoers с помощью команды visudo. По умолчанию будет попытка открыть vi, но у нас он даже не установлен. Поэтому укажем, что редактор у нас nano:
EDITOR=nano visudo
Находим строчку:
%wheel ALL=(ALL) ALL
И убираем % в начале строки. Сохраняем и выходим.
Готово! Перезагружаемся...
Выходим из режима chroot:
exit
Размонтируем файловую систему:
umount /mnt
И перезагружаемся в новую систему:
reboot
Можем заходить в созданного пользователя и устанавливать нужное ПО, например, графическое окружение.
Если у вас беспроводное соединение, запустите nmtui и подключитесь к сети.