It was introduced inc10fe14
but removed inc4f910f
. It remained such that people with older generations in their boot entries could still boot those. Given that the parameter hasn't had any use in quite some years, it seems safe to remove now. Fixes #60184
164 lines
4.5 KiB
Nix
164 lines
4.5 KiB
Nix
# This module contains the basic configuration for building a NixOS
|
|
# tarball, that can directly boot, maybe using PXE or unpacking on a fs.
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l;
|
|
|
|
# For PXE kernel loading
|
|
pxeconfig = pkgs.writeText "pxeconfig-default" ''
|
|
default menu.c32
|
|
prompt 0
|
|
|
|
label bootlocal
|
|
menu default
|
|
localboot 0
|
|
timeout 80
|
|
TOTALTIMEOUT 9000
|
|
|
|
label nixos
|
|
MENU LABEL ^NixOS using nfsroot
|
|
KERNEL bzImage
|
|
append ip=dhcp nfsroot=/home/pcroot init=${config.system.build.toplevel}/init rw
|
|
|
|
# I don't know how to make this boot with nfsroot (using the initrd)
|
|
label nixos_initrd
|
|
MENU LABEL NixOS booting the poor ^initrd.
|
|
KERNEL bzImage
|
|
append initrd=initrd ip=dhcp nfsroot=/home/pcroot init=${config.system.build.toplevel}/init rw
|
|
|
|
label memtest
|
|
MENU LABEL ^${pkgs.memtest86.name}
|
|
KERNEL memtest
|
|
'';
|
|
|
|
dhcpdExampleConfig = pkgs.writeText "dhcpd.conf-example" ''
|
|
# Example configuration for booting PXE.
|
|
allow booting;
|
|
allow bootp;
|
|
|
|
# Adapt this to your network configuration.
|
|
option domain-name "local";
|
|
option subnet-mask 255.255.255.0;
|
|
option broadcast-address 192.168.1.255;
|
|
option domain-name-servers 192.168.1.1;
|
|
option routers 192.168.1.1;
|
|
|
|
# PXE-specific configuration directives...
|
|
# Some BIOS don't accept slashes for paths inside the tftp servers,
|
|
# and will report Access Violation if they see slashes.
|
|
filename "pxelinux.0";
|
|
# For the TFTP and NFS root server. Set the IP of your server.
|
|
next-server 192.168.1.34;
|
|
|
|
subnet 192.168.1.0 netmask 255.255.255.0 {
|
|
range 192.168.1.50 192.168.1.55;
|
|
}
|
|
'';
|
|
|
|
readme = ./system-tarball-pc-readme.txt;
|
|
|
|
in
|
|
|
|
{
|
|
imports =
|
|
[ ./system-tarball.nix
|
|
|
|
# Profiles of this basic installation.
|
|
../../profiles/all-hardware.nix
|
|
../../profiles/base.nix
|
|
../../profiles/installation-device.nix
|
|
];
|
|
|
|
# To speed up further installation of packages, include the complete stdenv
|
|
# in the Nix store of the tarball.
|
|
tarball.storeContents = pkgs2storeContents [ pkgs.stdenv ];
|
|
|
|
tarball.contents =
|
|
[ { source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile;
|
|
target = "/boot/" + config.system.boot.loader.kernelFile;
|
|
}
|
|
{ source = "${pkgs.syslinux}/share/syslinux/pxelinux.0";
|
|
target = "/boot/pxelinux.0";
|
|
}
|
|
{ source = "${pkgs.syslinux}/share/syslinux/menu.c32";
|
|
target = "/boot/menu.c32";
|
|
}
|
|
{ source = pxeconfig;
|
|
target = "/boot/pxelinux.cfg/default";
|
|
}
|
|
{ source = readme;
|
|
target = "/readme.txt";
|
|
}
|
|
{ source = dhcpdExampleConfig;
|
|
target = "/boot/dhcpd.conf-example";
|
|
}
|
|
{ source = "${pkgs.memtest86}/memtest.bin";
|
|
# We can't leave '.bin', because pxelinux interprets this specially,
|
|
# and it would not load the image fine.
|
|
# http://forum.canardpc.com/threads/46464-0104-when-launched-via-pxe
|
|
target = "/boot/memtest";
|
|
}
|
|
];
|
|
|
|
# Allow sshd to be started manually through "start sshd". It should
|
|
# not be started by default on the installation CD because the
|
|
# default root password is empty.
|
|
services.openssh.enable = true;
|
|
systemd.services.openssh.wantedBy = lib.mkOverride 50 [];
|
|
|
|
# To be able to use the systemTarball to catch troubles.
|
|
boot.crashDump = {
|
|
enable = true;
|
|
kernelPackages = pkgs.linuxPackages_3_4;
|
|
};
|
|
|
|
# No grub for the tarball.
|
|
boot.loader.grub.enable = false;
|
|
|
|
/* fake entry, just to have a happy stage-1. Users
|
|
may boot without having stage-1 though */
|
|
fileSystems.fake =
|
|
{ mountPoint = "/";
|
|
device = "/dev/something";
|
|
};
|
|
|
|
nixpkgs.config = {
|
|
packageOverrides = p: {
|
|
linux_3_4 = p.linux_3_4.override {
|
|
extraConfig = ''
|
|
# Enable drivers in kernel for most NICs.
|
|
E1000 y
|
|
# E1000E y
|
|
# ATH5K y
|
|
8139TOO y
|
|
NE2K_PCI y
|
|
ATL1 y
|
|
ATL1E y
|
|
ATL1C y
|
|
VORTEX y
|
|
VIA_RHINE y
|
|
R8169 y
|
|
|
|
# Enable nfs root boot
|
|
UNIX y # http://www.linux-mips.org/archives/linux-mips/2006-11/msg00113.html
|
|
IP_PNP y
|
|
IP_PNP_DHCP y
|
|
FSCACHE y
|
|
NFS_FS y
|
|
NFS_FSCACHE y
|
|
ROOT_NFS y
|
|
|
|
# Enable devtmpfs
|
|
DEVTMPFS y
|
|
DEVTMPFS_MOUNT y
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|