В мире Linux существует множество дистрибутивов, и эти дистрибутивы обычно различаются с точки зрения диспетчера пакетов, среды и пакетов. После установки вы можете найти файлы в определенных местах файловой структуры. Такие каталоги, как /usr, /usr /local и /bin, используются для хранения различных файлов, и этот стандарт позволяет опытному пользователю Linux знать, где находятся файлы, и запускать сценарии, которые используют эти файлы во многих дистрибутивах. Чтобы узнать больше, посмотрите проект LSB.
Хотя вы можете запускать приложения под NixOS, поскольку они соответствуют вышеуказанному стандарту, файлы находятся не там, где они были бы в другой системе. Разработчики NixOS и GNU Guix имеют твердое мнение об этой системе, и они придумали умные способы соответствовать ей.
Другая система
Ваша система хранения программного обеспечения влияет на функциональность гораздо глубже, чем кажется на первый взгляд. Чтобы программа могла найти нужные файлы, NixOS использует символические ссылки. Каждое приложение имеет свой собственный каталог, содержащий исполняемый файл и ссылки на библиотеки, которые его запускают.
С помощью этой системы организации вы можете одновременно устанавливать разные файлы и версии. По умолчанию все пакеты и их зависимости должны компилироваться во время установки. Однако для этого требуется много времени и вычислительной мощности, поэтому при каждой установке есть кэши.
Скачивание
С NixOS всегда есть несколько способов сделать что-то. Как и в других дистрибутивах, с NixOS у вас есть ISO на USB-накопителе. У вас есть выбор относительно того, как вы хотите установить NixOS в свой дистрибутив. Однако, прежде чем мы обсудим эту тему более подробно, важно понять, что есть две слегка сбивающие с толку части этого процесса.
Во-первых, Nix отличается от NixOS, и вы должны понимать разницу между Nix, менеджером пакетов, и NixOS, который настраивает вашу систему. Вы можете загрузить менеджер пакетов Nix и использовать его в своей текущей системе. С его помощью вы можете хранить в своей системе множество версий приложений, не мешая друг другу.
Во-вторых, с NixOS, хотя вы не можете не объявить схему разделения, все остальное можно оставить в одном файле. Большинство пользователей не трогают автоматически созданный файл конфигурации оборудования. Когда вы только начинаете, вы можете оставить свои пакеты, объявленные в файле, но со временем вы, вероятно, создадите отдельные файлы, которые импортируете в свой файл конфигурации.
Разбиение
Перед установкой вы должны разбить свои диски. В других дистрибутивах есть значения по умолчанию, которые вы можете принять; однако с NixOS вы должны сделать собственное разбиение на разделы. Разбиение на разделы не очень сложно, но вы можете столкнуться с проблемами, когда вам нужно настроить конфигурацию для выбранной вами схемы разделения. Важно понимать, что инструкции и сценарии предпочитают, чтобы ваши файловые системы были правильно помечены.
В стандартном руководстве показаны команды разметки. Обратите внимание, что команды различаются для UEFI и MBR-диска, и установка неправильных значений вызовет множество проблем. В руководстве предлагается использовать приведенные ниже значения для начальной установки, но действительно легко проверить новые значения.
Стандартные разделы:
MBR:
parted /dev/sda -- mklabel msdos parted /dev/sda -- mkpart primary 1MiB -8GiB parted /dev/sda -- mkpart primary linux-swap -8GiB 100%
UEFI:
parted /dev/sda -- mklabel gpt parted /dev/sda -- mkpart primary 512MiB -8GiB parted /dev/sda -- mkpart primary linux-swap -8GiB 100% parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB parted /dev/sda -- set 3 esp on
Монтируем разделы в MBR:
mkswap -L swap /dev/sda2 mount /dev/disk/by-label/nixos
Монтирование разделов в UEFI:
mount /dev/disk/by-label/nixos /mnt mkdir -p /mnt/boot mount /dev/disk/by-label/boot /mnt/boot
В следующем разделе показано, как создать файл конфигурации.
Файл конфигурации
После того, как вы настроили диски, вы можете начать процесс настройки. С NixOS вы сначала настраиваете, а затем устанавливаете. В следующих инструкциях предполагается, что вы загрузились с использованием ISO, но вы можете загрузиться с помощью chroot.
С помощью nixos-generate-config система генерирует стандартный файл конфигурации.
$ nixos-generate-config –root /mnt
Эта команда создает два файла: /mnt/etc/nixos/hardware-configuration.nix (вы не меняете этот файл) и /mnt/etc/nixos/configuration.nix. Вы можете редактировать второй файл в своем любимом редакторе.
Обычно параметры не меняются в зависимости от метода загрузки. Вы можете использовать grub или другую конфигурацию загрузки. Вариантов много, но вот некоторые стандарты.
Добавьте эту строку только для MBR:
boot.loader.grub.device = "dev/sda";
Добавьте эти строки только для UEFI:
boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true;
Для начала меняйте файлы конфигурации как можно реже. Все эти значения находятся в исходном файле: просто не комментируйте их и внесите изменения в соответствии с вашими потребностями.
networking.hostName = "nixos"; users.user.nixos = { isNormalUser = true; extraGroups = " wheel" } environment.systemPackages = with pkgs [ wget vim ]; services.openssh.enable = true;
Добавьте пакеты, которые хотите использовать как стандартные. Все стандартные пакеты заключены в квадратные скобки с wget и vim. Вы можете установить больше пакетов, когда система будет работать.
Установка
Как только ваш файл конфигурации будет правильным, вы можете запустить установку.
$ nixos-install
Затем установщик запросит пароль root, который будет использоваться в реальной системе. Все программы будут скомпилированы или загружены с cache.nixpkgs.org, а затем установлены в магазине nix на вашем компьютере. Затем вы можете перезагрузиться, и вы должны получить приглашение для входа в систему.
$ reboot
Теперь укажите пароль для вашего пользователя с помощью root. Пользователь, которого вы определили в файле конфигурации, также будет иметь домашний каталог.
Новая конфигурация
После того, как вы выполнили вышеуказанные шаги, вы можете поиграть с файлом конфигурации. Когда вы что-то меняете, попробуйте, не устанавливая, следующим образом:
$ nixos-rebuild test
Когда у вас появятся новые значения, которые хорошо работают, запустите команду rebuild:
$ nixos-rebuild switch
Теперь вы увидите, правильно ли вы установили значения загрузки. Важно отметить, что изменения в конфигурации обратимы. Вы можете просто перезагрузиться, выбрать старую версию, которая называется поколением, и попробовать еще раз. Однако для каждой конфигурации требуется дисковое пространство, поэтому убедитесь, что вы знакомы с функцией сборки мусора.
Вывод
Для настройки NixOS требуется несколько шагов вручную, но вы можете вернуться к работающей системе намного быстрее, чем с другими системами. Кроме того, контроль версий проще, если вам нужно много версий одного и того же приложения или если вам нужно много версий одних и тех же библиотек. На первый взгляд может показаться, что существует много ограничений, но эти ограничения можно преодолеть с помощью более продвинутых частей системы.