2006-08-28 00:31:35 +02:00
|
|
|
NixOS installation HOWTO -- August 28, 2006
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
This is small HOWTO of how to build and install the current version of
|
|
|
|
NixOS.
|
|
|
|
|
|
|
|
|
|
|
|
Building
|
|
|
|
|
|
|
|
Install Nix. Checkout nixpkgs from Subversion, as well as nixu. Adapt the
|
|
|
|
scripts in nixu to reflect the location of nixpkgs (default /nixpkgs).
|
2005-10-11 12:48:10 +02:00
|
|
|
Make sure mktemp is installed. Run ./make-disk.sh. Wait.
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
Burning
|
|
|
|
|
|
|
|
Use your favourite tool to burn the ISO image to a CD.
|
|
|
|
|
2006-08-27 17:34:24 +02:00
|
|
|
Installing
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
Currently NixOS can only be installed with machines that have a specific
|
|
|
|
hardware set up:
|
|
|
|
|
|
|
|
An ATA harddisk on the first ATA controller (hda) with:
|
2006-08-27 17:34:24 +02:00
|
|
|
- data partition
|
|
|
|
- swap partition
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
All data on these two partitions will be wiped and the bootloader in the
|
|
|
|
Master Boot Record (MBR) will be overwritten with GRUB.
|
|
|
|
|
2006-08-27 17:34:24 +02:00
|
|
|
The NixOS installer will drop you into a shell, from which you can run
|
|
|
|
fdisk. Then it expects to find a file called "disklayout" with three
|
|
|
|
variables:
|
2005-10-03 17:44:10 +02:00
|
|
|
|
2006-08-27 17:34:24 +02:00
|
|
|
SWAP :: partition to use as swap
|
|
|
|
INSTALLDEVICE :: partition that will be /root
|
|
|
|
TARGETDRIVE :: drive on which grub will be installed
|
|
|
|
|
|
|
|
This file will be read by the install script automatically when you launch
|
|
|
|
the script:
|
|
|
|
|
|
|
|
# sh fill-disk.sh
|
|
|
|
|
2006-08-28 00:31:35 +02:00
|
|
|
The configuration data that grub writes to disk might not be correct (should
|
|
|
|
be). When something goes wrong you probably won't have to reinstall. The
|
|
|
|
manual for grub is quite helpful in these cases.
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
Configuring
|
|
|
|
|
|
|
|
To get NixOS in a working state, do the following:
|
|
|
|
|
2006-08-28 00:31:35 +02:00
|
|
|
- load the networkdriver. This is machine dependent. On the labmachines (Dell
|
|
|
|
Optiplex GX-260) this is the e1000 driver:
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
# modprobe e1000
|
|
|
|
|
2005-10-11 21:39:41 +02:00
|
|
|
In vmware the driver is "pcnet32".
|
|
|
|
|
2005-10-03 17:44:10 +02:00
|
|
|
- bring the interface up:
|
|
|
|
|
|
|
|
# ifconfig eth0 up
|
|
|
|
|
|
|
|
If the interface is different (say, eth1) replace eth0 with the right
|
|
|
|
interface.
|
|
|
|
|
2005-10-13 00:40:10 +02:00
|
|
|
- if DHCP is used, run a DHCP client to obtain an IP address, routing
|
|
|
|
and resolving information:
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
# dhclient eth0
|
|
|
|
|
2005-10-13 00:40:10 +02:00
|
|
|
Otherwise, do this yourself:
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
# ifconfig eth0 <ip address> netmask <netmask>
|
|
|
|
# route add default gw <gateway ip address>
|
|
|
|
# vim /etc/resolv.conf
|
|
|
|
|
2005-12-14 01:46:59 +01:00
|
|
|
Making syslog work.
|
2005-10-03 17:44:10 +02:00
|
|
|
|
|
|
|
- copy /etc/services from a working Linux machine to /etc/services on the
|
|
|
|
NixOS machine (needed for sysklogd)
|
|
|
|
- copy /etc/syslog.conf from a working Linux machine to /etc/syslog.conf on the
|
|
|
|
NixOS machine (needed for sysklogd)
|
|
|
|
- launch sysklogd
|
2005-12-14 01:46:59 +01:00
|
|
|
|
|
|
|
Making logins on virtual consoles work.
|
|
|
|
|
|
|
|
Logins on virtual consoles are disabled by default. To make them work:
|
|
|
|
|
|
|
|
- edit /etc/inittab and outcomment the lines with "mingetty" in them
|
2005-10-03 17:44:10 +02:00
|
|
|
- copy /etc/login.defs from a working Linux machine to /etc/login.defs on the
|
2005-12-14 01:46:59 +01:00
|
|
|
NixOS machine (needed for mingetty). Alternatively, do:
|
|
|
|
|
|
|
|
# touch /etc/login.defs
|
|
|
|
|
2005-10-03 17:44:10 +02:00
|
|
|
- relaunch init
|
2006-01-08 01:23:31 +01:00
|
|
|
|
|
|
|
|
2006-08-28 00:31:35 +02:00
|
|
|
Making hotplugging work -- BROKEN RIGHT NOW
|
2006-01-08 01:23:31 +01:00
|
|
|
|
2006-01-08 01:42:45 +01:00
|
|
|
Many devices (USB, Firewire) are controlled by so called "hot plugging". The
|
|
|
|
kernel executes a program -- usually /sbin/hotplug, but this is configurable
|
|
|
|
at boottime by setting the right path in /proc/sys/kernel/hotplug -- when a
|
|
|
|
new device is added to the machine. This program makes sure the right kernel
|
|
|
|
modules are loaded and optionally, if enabled, sends a message to udev to
|
|
|
|
create the right device node in /dev (NOTE: this is not enabled in NixOS right
|
|
|
|
now).
|
|
|
|
|
|
|
|
- mount usbfs (for USB):
|
|
|
|
# mount -t usbfs usbfs /proc/bus/usb
|
2006-01-08 01:23:31 +01:00
|
|
|
- install hotplug package
|
|
|
|
- make symlinks /etc/hotplug, /etc/hotplug.d, /sbin/hotplug (TODO: make
|
|
|
|
this pure)
|
|
|
|
- make sure the kernel and additional modules are prepared well (currently
|
|
|
|
this is hackish, but workable: see kernelscripts/make-kernel.sh for an
|
|
|
|
example)
|
2006-01-08 01:42:45 +01:00
|
|
|
- (optionally:) install udev
|
|
|
|
- make a symlink to /etc/udev/udev.conf
|
|
|
|
- launch udev
|
2006-01-08 01:23:31 +01:00
|
|
|
- plug in a device
|