Очень многие "продвинутые пользователи" Windows (а иногда и некоторые начинающие сисадмины!) не очень хорошо осваивают Linux, даже если им это надо. Пока оставим "за скобками" вопрос, зачем нужен Linux на настольном ПК или ноутбуке, а также вопрос полной замены Windows на Linux. И здесь же оставим в покое WSL (хотя как раз с неё можно начать знакомство).
Предположим, Вы - уверенный пользователь ПК, знакомый с Linux только по интернету, по логину на роутер/модем и т.д., ну, может, ещё LiveUSB с Ubuntu пробовали. Но пришло время - и надо освоить эту систему. С чего начать? Какой дистрибутив выбрать? Это всё - на любителя, новичкам в Linux обычно рекомендуют что-то вроде Ubuntu, Linux Mint, Manjaro и т.д. Но... Почти все эти дистрибутивы "выбешивают" тем, что они знают о том, чего хочет пользователь, лучше чем сам пользователь. То есть, предлагают свой сценарий установки, дающие не всегда тот результат, который Вы хотите. Вплоть до того, что часто сценарием по умолчанию является затирание всего системного жёсткого диска и установка на него Linux единственной системой. Но это как раз можно обойти, выбрав соответствующий пункт... Мы же не новички, неспособные разметить диск, просто плохо умеем это делать в Linux... Но дальше больше, если выбрать удобный раздел мы можем, то что дальше будет сделано с этим разделом - разработчики дистрибутива уж точно знают лучше, чем пользователь. И если что-то пойдёт не так (например, не установится загрузчик), то задача восстановить систему может быть весьма проблематичной.
Итак, допустим, у нас сценарий: установить Linux и Windows дуалбутом (чтобы работали обе системы), причём выделить на Linux не так и много места, скажем, гигабайт 30-40 (на SSD всегда места не хватает), т.е., использовать сжатие файлов. В качестве DE выберем Cinnamon (или любую другую, какую захотим), а в качестве загрузчика - refind (в большинстве случаев у нас системы на UEFI, grub тоже подойдёт, но refind выглядит лучше, да и настраивать его меньше). В большинстве случаев с "дружелюбными" дистрибутивами эта задача будет решаться неочевидными методами. А вот Arch Linux здесь подойдёт отлично. Только вот беда - вся установка идёт через консоль. Да, и забудьте об автоматизированном установщике - с ним мы вернёмся к тому, что было. Для меня это - стандартный сценарий, поэтому поделюсь опытом (на примере видеокарт AMD, у кого NVidia или Intel - надо будет просто поставить другой драйвер). На самом деле, всё отлично расписано в руководстве по установке (https://wiki.archlinux.org/title/Installation_guide_(Русский)), но для новичков, тем более со специфическим сценарием, это может оказаться не очень просто - с массой ссылок туда-сюда, а нам хочется через час-полтора получить полностью рабочую систему, а разберёмся в деталях как-нибудь потом. Или когда сценарий почему-то не заработает. И да, в нашем сценарии не будет "паранойи" с мыслью, что образ или репозиторий пакетов могут подменить на вредоносные, поэтому проверкой подписей "заморачиваться" не будем, а если что - и вообще её отключим. Да, это не есть хорошо, но кто хочет - пусть проверяет и следит, чтобы все подписи были на месте.
Для удобства проделаю всё то же самое в VirtualBox'е (только буду приводить команды для видео AMD), взяв за основу пробную Windows 11. Итак, я установил Win11 в VirtualBox в режиме UEFI (а иначе, в общем, не положено) - если для Вас это проблема, то дальше лучше не читать: либо начинайте с Linux изначально, либо Вы - не продвинутый пользователь Windows.
Итак, Windows установлена, настроена, работает, теперь наша задача - подготовить диск. В принципе, это можно сделать только из Linux, но с разделами ntfs лучше работать в Windows (если нет других причин). Для этого запускаем "управление дисками" (кто не знает как - в Win10-11 это проще всего сделать через меню правым щелчком по пуску или по комбинации Win+X), находим системный раздел (диск С) и "отрезаем" от него кусок. Я отрезаю 25 Гб, но кто-то может больше, а кто-то - меньше. Конечно, если у Вас свой способ разбиения диска, Вы найдёте, от чего "отрезать".
Выбираем сжимаемое пространство
Скачаем образ ArchLinux отсюда https://mirror.yal.sl-chat.ru/archlinux/iso/latest/
Можно выбрать и другое зеркало, откуда лучше качает. Из списка выбираем файл .iso (всё остальное нам не надо: это либо подписи+контрольные суммы, либо образ для установки из уже имеющегося Linux. На нынешний момент iso-шника там два, но они идентичны. Лучше качать более или менее актуальный образ, иначе могут быть проблемы при установке, которые, кстати, не так сложно обойти. Итак, на реальной машине мы просто распаковываем содержимое .iso на чистую флешку (в Windows 10-11 iso примонтируется по двойному щелчку, после чего нет проблем переписать содержимое), либо, если у нас флешка Ventoy, просто кидаем iso в корень. Можно, конечно, записать CD, но это уже для большинства неактуально. Итак, у нас есть загрузочный носитель UEFI, теперь надо с него перезагрузиться, что не должно создать проблем у "продвинутого пользователя" на своей собственной системе (единственное, обязательно надо отключить SecureBoot в настройках BIOS/UEFI). Но для ноутбуков, планшетов, а также VirtualBox'а это может составить проблему, поэтому есть способ загрузки через "Параметры - Система - Восстановление - Расширенные варианты перезагрузки".
В 99 % случаев подойдёт именно первый пункт.
Итак, мы загрузились сюда. На всякий случай, эта среда подойдёт и для того, если мы что-то испортим в нашей системе.
Если у Вас подключен интернет-кабель, модем или VirtualBox, у Вас уже будет интернет, можно проверить его пингом:
Если же у Вас WiFi, ситуация похуже. В системе есть утилита iwctl (раньше была iwcfg, она проще, но что есть, то есть). Воспользуйтесь инструкцией https://wiki.archlinux.org/title/Iwd_(Русский)#iwctl
Если кратко, то надо дать команду device list, найти Ваш адаптер WiFi (скорее всего, он будет один), вписать его между station ??? scan, а потом station ??? connect ssid. Естественно, вместо вопросов и ssid надо набрать свои данные.
Итак, у нас есть интернет (оттуда будет скачиваться система), теперь надо разметить диск. Это можно сделать через команду fdisk или cfdisk. Проблема лишь в том, какой диск размечать. Если у Вас SATA, то он будет либо sda, либо sdb (если дисков много, то может быть и sdc, и sdd и т.д.). Кстати, в этом списке обязательно окажется и установочная флешка, смотрите, не разметьте её :). Если у Вас NVME (M.2), то он будет называться nvme0n1 (цифры могут оказаться другими). Так что дайте команду ls /dev/sd* для SATA или ls /dev/nvme* для M.2 (на всякий случай, команда ls в UNIX'ах выводит список файлов, почти как dir в dos). Возможно, Вам потребуется проверить, что есть что. По составу разделов это легко можно предположить (разве что у Вас очень много дисков с установленными системами). Будем использовать cfdisk. Даём команду
cfdisk /dev/sda (sdb, sdc...), на конце не должно быть цифры (это - номер раздела, Вы разбиваете диск, а не раздел!) или cfdisk /dev/nvme0n1 (или что у Вас есть), здесь на конце не должно быть p1, p2 и т.д.
Здесь видно свободное место для нашего будущего раздела. Теперь нужно его создать. Только советую также создать и раздел подкачки. Здесь серьёзная дилемма: с одной стороны, на современном ПК с 8+ Гб памяти подкачка, вроде как, и не нужна, а с другой - память используется в Linux неоптимально, и некоторые механизмы как раз ожидают, что есть хоть небольшая, но подкачка. И да, подкачку надо делать в виде раздела. Файл подкачки на сжатой btrfs (которую мы будем создавать) не поддерживается.
И ещё одна проблема: наше свободное пространство "висит" в середине диска, последним идёт раздел восстановления Windows. Проблема может всплыть, если нарушится порядок разделов, потом он может перенумероваться. В принципе, мы будем пользоваться UUID, так что это не должно привести к ошибкам, но я предпочитаю стереть раздел восстановления. Да, при переустановке Windows пересоздаст её, но пусть её. С другой стороны, без него восстановление Windows потребует отдельный диск. Короче, решать Вам, а я "подотру" всё лишнее и создам 2 раздела. Пусть будет 23.5 Гб на систему, 2 Гб на подкачку:
Теперь надо указать тип новых разделов. Для /dev/sda4 (собственно linux) тип выставился автоматически, а вот для подкачки надо выбрать Linux swap. Заметьте, пожалуйста, имена разделов (лучше запишите), здесь для примера /dev/sda4 - linux, /dev/sda5 - swap.
Перед тем, как выходить, выбираем пункт Write и подтверждаем "yes". На всякий случай предупреждаю, что неправильно разметив диск, Вы легко можете сделать неработоспособной всю систему, вплоть до невозможности всё восстановить. Поэтому ещё раз проверьте, то ли Вы сделали, и на том ли диске. Если нет - не подтверждайте, а выйдите и начните заново.
После этого можно жать Quit (иначе все изменения не сохранятся, очевидно, но многие про это забывают).
Теперь создаём файловую систему btrfs:
mkfs.btrfs /dev/sda4
Результат:
Создаём подкачку:
mkswap /dev/sda5
И подключаем её
swapon /dev/sda5
Теперь монтируем нашу систему
mount /dev/sda4 /mnt -o compress=zstd:5
Эта команда означает, что наш раздел (в данном примере sda4, но может быть и другим) надо смонтировать (прикрепить) к каталогу /mnt (стандартно для установки ArchLinux) с параметром сжатия по алгоритму zstd со степенью сжатия 5. Можете варьировать эти параметры, или же опустить всё, что после символа "=" вместе с ним самим.
Далее - собственно установка системы:
pacstrap /mnt base base-devel cinnamon lxdm mc refind linux linux-firmware networkmanager gnome-terminal
Вместо lxdm можно использовать и другой dm, равно и вместо cinnamon можно использовать любое другое DE.
И тут иногда можно столкнуться со странной ошибкой:
Правильный путь решения проблемы - pacman-key init, pacman-key populate archlinux, но это не всегда и не всё решает. Есть 100 % рабочий, но небезопасный способ, который позволит избежать этих проблем навсегда. Правим файл /etc/pacman.conf любимым редактором. Кто-то любит vim, кто-то - nano, но я, как и многие, кто работал и работает с двухпанельными файловыми менеджерами и встроенным в них функционалом, предпочитаю mcedit:
mcedit /etc/pacman.conf
Ищем строчку SigLevel
и заменяем всё, что после "=", на Never.
За одно, для ускорения скачивания, раскомментируем строчку ParallelDownloads.
И повторяем команду
pacstrap /mnt base base-devel cinnamon lxdm mc refind linux linux-firmware networkmanager gnome-terminal
(в прошлый раз на скриншоте я не добавил 4 последних пакета).
Система устанавливает все пакеты, позабыв о проверке подписей.
Да, если будет медленно скачиваться - можно отредактировать файл /etc/pacman.d/mirrorlist, выбрав зеркало поближе (поставить его наверх). Только это надо будет повторить уже на рабочей системе.
Итак, основная система установлена. Теперь даём команду
genfstab /mnt >/mnt/etc/fstab
Теперь сформировался список параметров монтирования файловой системы и подкачки. Только вот смонтировались только разделы... Давайте это поправим
mcedit /mnt/etc/fstab
Что мы здесь видим? Монтируются разделы по названиям - но названия в любой момент могут поменяться, но есть строчки с UUID=. Вот их и надо поставить вместо названий (естественно, раскомментировав), вот так:
Теперь можно входить в систему:
arch-chroot /mnt
Итак, мы в системе. Запомните эту команду (только для установочного диска, или же после установки пакета arch-install-scripts). Если что пойдёт не так - можно загрузиться с установочной флешки и, дав эту команду, попасть в полурабочую систему.
Теперь подключаем раздел efi. В нашем примере это /dev/sda1, но у Вас он может быть другим.
mkdir /boot/efi
mount /dev/sda1 /boot/efi
Устанавливаем загрузчик refind
refind-install
Теперь правим его конфиг:
mcedit /boot/refind_linux.conf
Первые две строчки относятся к загрузке с диска, так что если мы оставим как есть, мы не сможем загрузить linux. Удаляем их.
Теперь осталось доустановить систему. Нужен драйвер видео:
pacman -S xf86-video-amdgpu
(это для AMD Radeon, для других карт надо ставить свои драйвера, для nvideo можно вместо amdgpu поставить свободный драйвер nouveau, для intel пишем intel, )
На всякий случай, если что-то не заработает, можно поставить фреймбуфер
pacman -S xf86-video-fbdev
Кто повторяет мой пример под VirtualBox, просто поставьте
pacman -S virtualbox-guest-utils
Правим список локалей:
mcedit /etc/locale.gen
Нас интересует локаль ru_RU.UTF-8, её надо раскомментировать.
Теперь даём команду locale-gen.
Создаём файл /etc/locale.conf следующего содержания:
и /etc/vconsole.conf
Теперь инструкция рекомендует нам настроить часовой пояс, но мы отложим это действие. Создаём файл /etc/hostname с именем компьютера (например, echo COMP >/etc/hostname).
Вводим пароль суперпользователя (если Вы забудете это сделать, придётся грузиться со спец.опцией)
passwd
и дважды вводим пароль (на экране ничего печататься не будет, даже звёздочек!)
Создаём пользователя
useradd user1
здесь надо придумать своё имя пользователя
groupmems -g wheel -a user1
mcedit /etc/sudoers
mkdir /home/user1
chown -R user1 /home/user1
и раскомментируем строку %wheel ALL=(ALL:ALL) ALL
Теперь наш user1 будет иметь доступ к команде sudo.
passwd user1
и вводим пароль пользователя.
Вот и всё, критически важные вещи сделаны. Только если у Вас не получится запустить сеть, то надо будет вернуться сюда же через загрузочный носитель. Выходим из chroot (Ctrl+D) и даём команду reboot (носитель можно отключить при перезагрузке)
Установлен refind, выбираем логотип Arch
Логинимся и получаем консоль root
Теперь даём команду
systemctl start NetworkManager
systemctl start lxdm
Этим самым мы запускаем графическую подсистему, пока это делаем вручную, т.к. здесь может быть проблема с драйвером. Если "иксы" запустились - дальше всё хорошо, а вот если нет... Надо искать проблему. Может потребоваться доустановить пакеты xterm и xorg-xinit (через pacman -S).
Выбираем сеанс cinnamon, при желании можно выбрать язык, но у нас должна сама подключиться русская локаль. Теперь логинимся и получаем рабочий стол.
Здесь уже можно практически всё, но есть ряд проблем:
1. Первым делом надо подключиться к сети. Если сеть проводная, она уже должна подключиться, если нет - подключаемся через апплет внизу.
2. Поддержка русского языка ограничена. Запускаем через пуск терминал и в нём даём команду
sudo pacman -S cinnamon-translations
3. Система Windows пока не подключена. Для её подключения (по пути /c) надо дать набор команд:
sudo mkdir /c
sudo pacman -S ntfs-3g ntfsprogs
sudo mount /dev/sda3 /c
На этом этапе всё должно пройти без ошибок, и по адресу /c/ должна подключиться файловая система Windows (ls /c). Чаще всего возникает ошибка с монтированием только для чтения. В этом случае правильный вариант - перезагрузиться в Windows, а потом - в linux. Неправильный - ntfsrecover.
Потом можно будет прописать это в /etc/fstab, если надо часто работать с файловой системой Windows.
4. Иконки, мягко говоря, никакие. Часть иконок отображается пустым прямоугольником. Эту и ряд других проблем можно решить через AUR. Но... Работать с AUR вручную неудобно, а автоматизаторы считаются по политике ArchLinux некорректными. Ну что же, скачайте бинарный пакет yay (пока актуальный я выложил вот здесь https://disk.yandex.ru/d/nMCr8xy5wh5ylA). Допустим, он был скачан под Windows по адресу C:\lin\yay-11.3.1-1-x86_64.pkg.tar.zst, а диск C: уже успешно смонтирован как /c.
sudo pacman -U /c/lin/yay-11.3.1-1-x86_64.pkg.tar.zst
Теперь у нас есть мощная консольная команда по работе с пакетами. Запустите yay <часть имени пакета> - и найдутся всевозможные варианты как из репозиториев, так и из AURа, а yay без параметров начинает обновление всей системы. Да, я понимаю, Вам может быть привычнее это же сделать через графический интерфейс, но мы сейчас и до этого дойдём. Итак, нам не хватает иконок для cinnamon.
yay mint-x-icons
и устанавливаем первый же вариант. При работе с yay выбираем пункт в списке (в данном случае, скорее всего, 1), потом на непонятные вопросы можете отвечать, нажав Enter. Кроме, конечно, запроса пароля на установку, его надо ввести. Теперь в пуске в параметрах ищем "темы" и заменяем в значках на mint-x. Можете выбрать и другую тему, просто стандартная adwaita не содержит всех значков.
5. Теперь шрифты. Если Вы - не поборник "свободы от Microsoft" и не сторонник выполнения Западных санкций, может быть интересно установить стандартные шрифты Windows - yay ttf-ms-fonts, а если надо больше - ещё и ttf-vista-fonts.
6. Мы всё запустили, всё работает, теперь неплохо бы это сделать на постоянной основе
sudo systemctl enable NetworkManager
sudo systemctl enable lxdm
7. Устанавливаем любимый браузер... У кого какой, допустим, поставим Яндекс (с российскими сертификатами по умолчанию):
yay yandex-browser
8. И, наконец, графический интерфейс для установки программ. yay pamac
9. Запуск приложений Windows. Вы наверняка знаете про "эмулятор-не-эмулятор" wine (может быть, про него сделаю отдельную статью). Только вот большинство приложений Windows - 32-разрядные. Ну что же, проблем нет:
mcedit /etc/pacman.conf
и раскомментируем всё, что связано с multilib (но не testing).
Теперь
sudo pacman -Suy
(заодно обновим систему)
sudo pacman -S wine winetricks wine-mono
winecfg
10. Время. Очень больной вопрос. Дело в том, что Windows по умолчанию работает в режиме localtime, т.е. время системных часов настроено на местное. В Linux по умолчанию время настроено на UTC. Что идеологически правильнее - Вам решать, если для Вас главная ОС - linux (или обе), то переходите на UTC, если Windows - то придётся в Linux подстроиться. Предположим, верен второй вариант (хоть он и очень не рекомендуется, но про UTC написано многое и везде).
Итак, начинаем в той же консоли:
sudo timedatectl set-local-rtc true
sudo timedatectl set-timezone Europe/Moscow
У кого другой часовой пояс - выбирайте свой.
Побочный эффект: время собьётся на 3 часа вперёд (для пояса МСК). Решение проблемы: перезагрузиться в Windows и обновить время (вручную или через интернет), после чего время везде будет местное время. Да, автообновление по ntp в Linux не будет сохранять системные часы, но это и не сильно надо, если у нас основная ОС - Windows.
Ну а дальше - то, что Вам надо, и только Вам. Система не захламлена тем, что считают нужным разработчики дистрибутива (то, что посчитал нужным я, Вы лично можете удалить). Можно поставить libreoffice (либо версию still, т.е. стабильную, либо fresh, т.е., более свежую), игры и т.д.
Будут ошибки - спрашивайте в комментариях. Или на форумах archlinux.