Manual: Document how to repair a corrupted Nix store

This commit is contained in:
Eelco Dolstra 2013-08-20 16:58:34 +02:00
parent 8b37dc0352
commit 97e8a3310f

View File

@ -4,6 +4,8 @@
<title>Troubleshooting</title>
<!--===============================================================-->
<section><title>Boot problems</title>
<para>If NixOS fails to boot, there are a number of kernel command
@ -65,9 +67,9 @@ unless something is very wrong.)</para>
</section>
<section>
<!--===============================================================-->
<title>Maintenance mode</title>
<section><title>Maintenance mode</title>
<para>You can enter rescue mode by running:
@ -81,9 +83,9 @@ just exit from the rescue shell.</para>
</section>
<section>
<!--===============================================================-->
<title>Rolling back configuration changes</title>
<section><title>Rolling back configuration changes</title>
<para>After running <command>nixos-rebuild</command> to switch to a
new configuration, you may find that the new configuration doesnt
@ -127,4 +129,39 @@ lrwxrwxrwx 1 root root 78 Aug 12 13:54 /nix/var/nix/profiles/system-268-link ->
</section>
<!--===============================================================-->
<section><title>Nix store corruption</title>
<para>After a system crash, its possible for files in the Nix store
to become corrupted. (For instance, the Ext4 file system has the
tendency to replace un-synced files with zero bytes.) NixOS tries
hard to prevent this from happening: it performs a
<command>sync</command> before switching to a new configuration, and
Nixs database is fully transactional. If corruption still occurs,
you may be able to fix it automatically.</para>
<para>If the corruption is in a path in the closure of the NixOS
system configuration, you can fix it by doing
<screen>
$ nixos-rebuild switch --repair
</screen>
This will cause Nix to check every path in the closure, and if its
cryptographic hash differs from the hash recorded in Nixs database,
the path is rebuilt or redownloaded.</para>
<para>You can also scan the entire Nix store for corrupt paths:
<screen>
$ nix-store --verify --check-contents --repair
</screen>
Any corrupt paths will be redownloaded if theyre available in a
binary cache; otherwise, they cannot be repaired.</para>
</section>
</chapter>