f7c69397b7
svn path=/nixu/trunk/; revision=6274
117 lines
3.4 KiB
Text
117 lines
3.4 KiB
Text
NixOS installation HOWTO -- October 3, 2005
|
|
|
|
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).
|
|
Make sure mktemp is installed. Run ./make-disk.sh. Wait.
|
|
|
|
Burning
|
|
|
|
Use your favourite tool to burn the ISO image to a CD.
|
|
|
|
Installing
|
|
|
|
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:
|
|
- data partition
|
|
- swap partition
|
|
|
|
All data on these two partitions will be wiped and the bootloader in the
|
|
Master Boot Record (MBR) will be overwritten with GRUB.
|
|
|
|
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:
|
|
|
|
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
|
|
|
|
The configuration data that grub writes to disk might not be correct. The
|
|
grub configuration writes a file to disk which assumes /dev/hda1 is the root
|
|
partition.
|
|
|
|
Configuring
|
|
|
|
To get NixOS in a working state, do the following:
|
|
|
|
- load the networkdriver. This is machine dependent. On the labmachines this
|
|
is the e1000 driver:
|
|
|
|
# modprobe e1000
|
|
|
|
In vmware the driver is "pcnet32".
|
|
|
|
- bring the interface up:
|
|
|
|
# ifconfig eth0 up
|
|
|
|
If the interface is different (say, eth1) replace eth0 with the right
|
|
interface.
|
|
|
|
- if DHCP is used, run a DHCP client to obtain an IP address, routing
|
|
and resolving information:
|
|
|
|
# dhclient eth0
|
|
|
|
Otherwise, do this yourself:
|
|
|
|
# ifconfig eth0 <ip address> netmask <netmask>
|
|
# route add default gw <gateway ip address>
|
|
# vim /etc/resolv.conf
|
|
|
|
Making syslog work.
|
|
|
|
- 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
|
|
|
|
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
|
|
- copy /etc/login.defs from a working Linux machine to /etc/login.defs on the
|
|
NixOS machine (needed for mingetty). Alternatively, do:
|
|
|
|
# touch /etc/login.defs
|
|
|
|
- relaunch init
|
|
|
|
|
|
Making hotplugging work
|
|
|
|
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
|
|
- 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)
|
|
- (optionally:) install udev
|
|
- make a symlink to /etc/udev/udev.conf
|
|
- launch udev
|
|
- plug in a device
|