Installing from Linux: Difference between revisions

imported>Kim Bruning
Just discovered the chroot method doesn't always work.
m change iso url
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
You already have a running linux with GRUB on your primary partition and you don't want to waste a CD-R?
== Why? ==
Right. We also assume that you have a spare partition where to install NixOS ready.
 
For 'normal' NixOS installations, you'd use the instructions from https://nixos.org/manual/nixos/stable/index.html#sec-installation
 
However, you can install 'directly from Linux' if:
 
* You already have a running linux distro
* You don't want to waste a CD-R (and can't boot from USB)
* You have a spare partition where to install NixOS ready.
 
One method is described in the manual at https://nixos.org/manual/nixos/stable/#sec-installing-from-other-distro. For an alternative method, see below.
 
== How? ==


To simplify, we will be using these abbreviations:
To simplify, we will be using these abbreviations:
Line 19: Line 30:
In this section we will install NixOS by unpacking the ISO and then chrooting into its contents to start the final install.
In this section we will install NixOS by unpacking the ISO and then chrooting into its contents to start the final install.


Note that this may not work on all (older) distributions (eg  older versions of debian stable), due to missing particular flags.  
Note that this may not work on all distributions (eg. older versions of debian stable).
 


=== Preparations ===
=== Preparations ===
Line 58: Line 70:
Next we have to edit the target system init script to start a bash session instead of systemd. As that is the last thing the script does, adding an interactive program does not pose a problem.
Next we have to edit the target system init script to start a bash session instead of systemd. As that is the last thing the script does, adding an interactive program does not pose a problem.
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# sed -i "s,exec systemd,exec /$BASH," $INIT
# sed -i "s,exec /.*systemd,exec /$BASH," $INIT
</syntaxhighlight>
</syntaxhighlight>


Line 82: Line 94:
# (chroot) mount /dev/sda3 /mnt
# (chroot) mount /dev/sda3 /mnt
# (chroot) nixos-generate-config --root /mnt
# (chroot) nixos-generate-config --root /mnt
# (chroot) nano /etc/nixos/configuration.nix
# (chroot) nano /mnt/etc/nixos/configuration.nix
</syntaxhighlight>
</syntaxhighlight>


Line 111: Line 123:


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# wget https://d3g5gsiof5omrk.cloudfront.net/nixos/17.03/nixos-17.03.1449.2e983f14f6/nixos-minimal-17.03.1449.2e983f14f6-x86_64-linux.iso # get the latest iso (URL might change!)
# wget https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-x86_64-linux.iso # get the latest iso (URL might change!)
# modprobe loop
# modprobe loop
# mount -o loop nixos-minimal-17.03.1449.2e983f14f6-x86_64-linux.iso ~/inst
# mount -o loop latest-nixos-minimal-x86_64-linux.iso ~/inst
# # mount /dev/sda1 # mount the /boot partition if you have it
# # mount /dev/sda1 # mount the /boot partition if you have it
# cp ~/inst/boot/bzImage /boot/nixos-livecd-bzImage
# cp ~/inst/boot/bzImage /boot/nixos-livecd-bzImage
Line 176: Line 188:
Thats it. Now follow the manual (Alt-F8), mount /dev/sda3 as /mnt, do
Thats it. Now follow the manual (Alt-F8), mount /dev/sda3 as /mnt, do
nixos-option and so on.
nixos-option and so on.
[[Category:Tutorial]]