Disko/ru: Difference between revisions
No edit summary |
Updating to match new version of source page Tags: Mobile edit Mobile web edit |
||
(34 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
[Disko] это утилита и модуль NixOS для декларативной разметки диска. | |||
[ | |||
[github.com/nix-community/disko/blob/master/docs/INDEX.md Disko] | |||
[ | |||
<span id="Usage"></span> | <span id="Usage"></span> | ||
Line 12: | Line 8: | ||
Следующий пример создаёт новую таблицу разделов GPT для диска <code>/dev/vda</code> включая два раздела для EFI boot и корневой раздел файловой системы [[bcachefs]]. | Следующий пример создаёт новую таблицу разделов GPT для диска <code>/dev/vda</code> включая два раздела для EFI boot и корневой раздел файловой системы [[bcachefs]]. | ||
{{file|disko-config.nix|nix|<nowiki> | {{file|disko-config.nix|nix|<nowiki> | ||
Line 90: | Line 45: | ||
</nowiki>}} | </nowiki>}} | ||
Следующая команда применит расположение дисков, указанное в конфигурации, и смонтирует их после этого. Внимание: При этом все данные на диске будут удалены. | |||
{{Warning| | {{Warning|Команды disko сотрут все существующие данные на диске и переразметят его в соответствии с заданной конфигурацией.}} | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# sudo nix run github:nix-community/disko -- --mode disko ./disko-config.nix | # sudo nix run github:nix-community/disko -- --mode disko ./disko-config.nix | ||
</syntaxhighlight> | </syntaxhighlight> | ||
В качестве альтернативы можно использовать конфигурацию разметки диска в удаленном репозитории, содержащем файл flake.nix, как точку входа. | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# sudo nix run github:nix-community/disko -- --mode disko --flake github:Lassulus/flakes-testing#fnord | # sudo nix run github:nix-community/disko -- --mode disko --flake github:Lassulus/flakes-testing#fnord | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Приведенные выше команды требуют наличия в вашей системе функций [[Flakes|Flake]]. | |||
Чтобы убедиться, что оба раздела смонтированы правильно, выполните команду | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# mount | grep /mnt | # mount | grep /mnt | ||
</syntaxhighlight> | </syntaxhighlight> | ||
< | <span id="Configuration"></span> | ||
== | == Настройка == | ||
Если базовая система NixOS была установлена на макет раздела, развёртываемого с помощью Disko, сам конфиг диска может быть интегрирован в систему. Сначала скопируйте файл, например <code>disko-config.nix</code>, в каталог конфигурации системы | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# cp disko-config.nix /etc/nixos/ | # cp disko-config.nix /etc/nixos/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Добавьте модуль Disko в систему с поддержкой Flake. Вставьте нужный входной файл и ссылайтесь на него и на ваш файл <code>disko-config.nix</code> в разделе Модулей. | |||
{{file|/etc/nixos/flake.nix|nix|<nowiki> | {{file|/etc/nixos/flake.nix|nix|<nowiki> | ||
Line 170: | Line 104: | ||
</nowiki>}} | </nowiki>}} | ||
Убедитесь, что в файле /etc/nixos/hardware-configuration.nix нет автоматически генерируемых записей опций <code>fileSystems</code> в <code>/etc/nixos/hardware-configuration.nix</code>. | |||
Disko автоматически сгенерирует их за вас. Пересоберите систему, чтобы применить конфигурацию Disko. | |||
[[Category:Filesystem{{#translation:}}]] | [[Category:Filesystem{{#translation:}}]] | ||
[[Category:Deployment]] |
Latest revision as of 12:23, 26 October 2024
[Disko] это утилита и модуль NixOS для декларативной разметки диска.
[github.com/nix-community/disko/blob/master/docs/INDEX.md Disko]
Использование
Следующий пример создаёт новую таблицу разделов GPT для диска /dev/vda
включая два раздела для EFI boot и корневой раздел файловой системы bcachefs.
disko-config.nix
{
disko.devices = {
disk = {
main = {
device = "/dev/vda";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
end = "500M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
root = {
name = "root";
end = "-0";
content = {
type = "filesystem";
format = "bcachefs";
mountpoint = "/";
};
};
};
};
};
};
};
}
Следующая команда применит расположение дисков, указанное в конфигурации, и смонтирует их после этого. Внимание: При этом все данные на диске будут удалены.
# sudo nix run github:nix-community/disko -- --mode disko ./disko-config.nix
В качестве альтернативы можно использовать конфигурацию разметки диска в удаленном репозитории, содержащем файл flake.nix, как точку входа.
# sudo nix run github:nix-community/disko -- --mode disko --flake github:Lassulus/flakes-testing#fnord
Приведенные выше команды требуют наличия в вашей системе функций Flake.
Чтобы убедиться, что оба раздела смонтированы правильно, выполните команду
# mount | grep /mnt
Настройка
Если базовая система NixOS была установлена на макет раздела, развёртываемого с помощью Disko, сам конфиг диска может быть интегрирован в систему. Сначала скопируйте файл, например disko-config.nix
, в каталог конфигурации системы
# cp disko-config.nix /etc/nixos/
Добавьте модуль Disko в систему с поддержкой Flake. Вставьте нужный входной файл и ссылайтесь на него и на ваш файл disko-config.nix
в разделе Модулей.
/etc/nixos/flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {self, nixpkgs, disko, ...}@inputs: {
nixosConfigurations.mysystem = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs.inputs = inputs;
modules = [
disko.nixosModules.disko
./disko-config.nix
{
disko.devices.main.device = nixpkgs.lib.mkForce "/dev/vda";
}
./configuration.nix
];
};
};
}
Убедитесь, что в файле /etc/nixos/hardware-configuration.nix нет автоматически генерируемых записей опций fileSystems
в /etc/nixos/hardware-configuration.nix
.
Disko автоматически сгенерирует их за вас. Пересоберите систему, чтобы применить конфигурацию Disko.