Disko/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
No edit summary
Tags: Mobile edit Mobile web edit
Unabomberlive (talk | contribs)
Created page with "{{Warning|Команды disko сотрут все существующие данные на диске и переразметят его в соответствии с заданной конфигурацией.}}"
 
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
[Disko] это утилита и модуль NixOS для декларативной разметки диска.
[https://github.com/nix-community/disko Disko] is a utility and NixOS module for declarative disk partitioning.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
[github.com/nix-community/disko/blob/master/docs/INDEX.md Disko]
[https://github.com/nix-community/disko/blob/master/docs/INDEX.md Disko Documentation Index]
</div>


<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>
{ disks ? [ "/dev/vda" ], ... }: {
  disko.devices = {
    disk = {
      vdb = {
        device = builtins.elemAt disks 0;
        type = "disk";
        content = {
          type = "table";
          format = "gpt";
          partitions = [
            {
              name = "ESP";
              start = "1MiB";
              end = "500MiB";
              bootable = true;
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
              };
            }
            {
              name = "root";
              start = "500MiB";
              end = "100%";
              part-type = "primary";
              content = {
                type = "filesystem";
                format = "bcachefs";
                mountpoint = "/";
              };
            }
          ];
        };
      };
    };
  };
}
</nowiki>}}


{{file|disko-config.nix|nix|<nowiki>
{{file|disko-config.nix|nix|<nowiki>
Line 93: Line 47:
Следующая команда применит расположение дисков, указанное в конфигурации, и смонтирует их после этого. Внимание: При этом все данные на диске будут удалены.
Следующая команда применит расположение дисков, указанное в конфигурации, и смонтирует их после этого. Внимание: При этом все данные на диске будут удалены.


{{Warning|Комманды Disko сотрут все данные на вашем диске и переформатируют его в соответствии с заданной конфигурацией.}}
{{Warning|Команды disko сотрут все существующие данные на диске и переразметят его в соответствии с заданной конфигурацией.}}
 
{{Warning|The disko commands will erase all existing data on your disk and repartition it according to the given configuration.}}


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
Line 101: Line 53:
</syntaxhighlight>
</syntaxhighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
В качестве альтернативы можно использовать конфигурацию разметки диска в удаленном репозитории, содержащем файл flake.nix, как точку входа.
Alternativley use a disk layout configuration of a [https://github.com/Lassulus/flakes-testing remote repository] containing a <code>flake.nix</code> file as an entry point.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<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>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Приведенные выше команды требуют наличия в вашей системе функций [[Flakes|Flake]].
The commands above requires [[Special:MyLanguage/Flake|Flake]] features available on your system.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Чтобы убедиться, что оба раздела смонтированы правильно, выполните команду
To verify both partitions got mounted correctly, run
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# mount | grep /mnt
# mount | grep /mnt
</syntaxhighlight>
</syntaxhighlight>
</div>


<span id="Configuration"></span>
<span id="Configuration"></span>
Line 130: Line 72:
Если базовая система NixOS была установлена на макет раздела, развёртываемого с помощью Disko, сам конфиг диска может быть интегрирован в систему. Сначала скопируйте файл, например <code>disko-config.nix</code>, в каталог конфигурации системы
Если базовая система NixOS была установлена на макет раздела, развёртываемого с помощью Disko, сам конфиг диска может быть интегрирован в систему. Сначала скопируйте файл, например <code>disko-config.nix</code>, в каталог конфигурации системы


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# cp disko-config.nix /etc/nixos/
# cp disko-config.nix /etc/nixos/
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Добавьте модуль Disko в систему с поддержкой Flake. Вставьте нужный входной файл и ссылайтесь на него и на ваш файл <code>disko-config.nix</code> в разделе Модулей.
Add the Disko module on a flake-enabled system. Insert the required input and reference it and your <code>disko-config.nix</code> in the modules section. For alternative installation methods consult the Disko [https://github.com/nix-community/disko/blob/master/docs/quickstart.md quickstart guide].
</div>


{{file|/etc/nixos/flake.nix|nix|<nowiki>
{{file|/etc/nixos/flake.nix|nix|<nowiki>
Line 166: Line 104:
</nowiki>}}
</nowiki>}}


Убедитесь, что в файле /etc/nixos/hardware-configuration.nix нет автоматически генерируемых записей опций <code>fileSystems</code>  в <code>/etc/nixos/hardware-configuration.nix</code>. Disko автоматически сгенерирует их за вас. Пересоберите систему, чтобы применить конфигурацию Disko.
Убедитесь, что в файле /etc/nixos/hardware-configuration.nix нет автоматически генерируемых записей опций <code>fileSystems</code>  в <code>/etc/nixos/hardware-configuration.nix</code>.  
Disko автоматически сгенерирует их за вас. Пересоберите систему, чтобы применить конфигурацию Disko.


[[Category:Filesystem{{#translation:}}]]
[[Category:Filesystem{{#translation:}}]]

Latest revision as of 05:09, 18 August 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 = "/";
              };
            };
          };
        };
      };
    };
  };
}

Следующая команда применит расположение дисков, указанное в конфигурации, и смонтирует их после этого. Внимание: При этом все данные на диске будут удалены.

Warning: Команды disko сотрут все существующие данные на диске и переразметят его в соответствии с заданной конфигурацией.
# 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.