diff --git a/boot/builder.sh b/boot/builder.sh index a350d06e020a..bef4682093d7 100755 --- a/boot/builder.sh +++ b/boot/builder.sh @@ -34,7 +34,7 @@ for i in $boot $halt $login $env; do -e "s^@gnugrep\@^$gnugrep^g" \ -e "s^@gzip\@^$gzip^g" \ -e "s^@gcc\@^$gcc^g" \ - -e "s^@mingetty\@^$mingetty^g" \ + -e "s^@mingettyWrapper\@^$mingettyWrapper^g" \ -e "s^@module_init_tools\@^$module_init_tools^g" \ -e "s^@grub\@^$grubWrapper^g" \ -e "s^@udev\@^$udev^g" \ diff --git a/boot/default.nix b/boot/default.nix index dc3632f8f701..17957c934a72 100644 --- a/boot/default.nix +++ b/boot/default.nix @@ -1,7 +1,7 @@ { stdenv, kernel, bash, coreutils, findutilsWrapper, utillinux, sysvinit, e2fsprogs , nettools, nix, subversion, gcc, wget, which, vim, less, screen, openssh , binutils, strace, shadowutils, iputils, gnumake, curl, gnused, gnugrep -, gnutar, gzip, mingetty, grubWrapper, parted, module_init_tools, hotplug +, gnutar, gzip, mingettyWrapper, grubWrapper, parted, module_init_tools, hotplug , udev, dhcpWrapper, man, nano}: derivation { @@ -15,6 +15,6 @@ derivation { inherit stdenv kernel bash coreutils findutilsWrapper utillinux sysvinit e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils strace shadowutils iputils gnumake curl gnused - gnutar gnugrep gzip mingetty grubWrapper parted module_init_tools + gnutar gnugrep gzip mingettyWrapper grubWrapper parted module_init_tools udev dhcpWrapper man nano; } diff --git a/boot/env.sh b/boot/env.sh index 1f151ae93b3b..ee481270ee99 100644 --- a/boot/env.sh +++ b/boot/env.sh @@ -1 +1 @@ -export PATH=@nix@/bin:@bash@/bin:@coreutils@/bin:@findutilsWrapper@/bin:@utillinux@/bin:@utillinux@/sbin:@sysvinit@/bin:@sysvinit@/sbin:@e2fsprogs@/bin:@e2fsprogs@/sbin:@nettools@/bin:@nettools@/sbin:@gcc@/bin:@subversion@/bin:@which@/bin:@wget@/bin:@vim@/bin:@less@/bin:@screen@/bin:@openssh@/bin:@binutils@/bin:@strace@/bin:@shadowutils@/bin:@shadowutils@/sbin:@iputils@/bin:@gnumake@/bin:@curl@/bin:@gnused@/bin:@gnutar@/bin:@gnugrep@/bin:@gzip@/bin:@mingetty@/sbin:@grub@/bin:@grub@/sbin:@module_init_tools@/sbin:@dhcpWrapper@/sbin:@man@/bin:@nano@/bin +export PATH=@nix@/bin:@bash@/bin:@coreutils@/bin:@findutilsWrapper@/bin:@utillinux@/bin:@utillinux@/sbin:@sysvinit@/bin:@sysvinit@/sbin:@e2fsprogs@/bin:@e2fsprogs@/sbin:@nettools@/bin:@nettools@/sbin:@gcc@/bin:@subversion@/bin:@which@/bin:@wget@/bin:@vim@/bin:@less@/bin:@screen@/bin:@openssh@/bin:@binutils@/bin:@strace@/bin:@shadowutils@/bin:@shadowutils@/sbin:@iputils@/bin:@gnumake@/bin:@curl@/bin:@gnused@/bin:@gnutar@/bin:@gnugrep@/bin:@gzip@/bin:@mingettyWrapper@/sbin:@grub@/bin:@grub@/sbin:@module_init_tools@/sbin:@dhcpWrapper@/sbin:@man@/bin:@nano@/bin diff --git a/fill-disk.sh b/fill-disk.sh index bb699d6de682..df64f7302199 100755 --- a/fill-disk.sh +++ b/fill-disk.sh @@ -2,6 +2,11 @@ export PATH=@bash@/bin:@coreutils@/bin:@findutils@/bin:@utillinux@/bin:@utillinux@/sbin:@e2fsprogs@/sbin:@grub@/sbin:@sysvinitPath@/sbin:@gnugrep@/bin:@which@/bin:@gnutar@/bin +## +## In the beginning we want to have a minimalistic environment, built with +## klibc. +## + kernel=@kernel@ storePaths=/mystorepaths @@ -10,6 +15,7 @@ sysvinitPath=@sysvinitPath@ bootPath=@bootPath@ modutils=@modutils@ hotplug=@hotplug@ +mingetty=@mingetty@ echo mounting special filesystems @@ -176,22 +182,13 @@ mknod -m 0600 $root/dev/tty0 c 4 0 mknod -m 0600 $root/dev/tty1 c 4 1 mknod -m 0444 $root/dev/urandom c 1 9 -#touch_file /etc/passwd -#touch_file /etc/shadow -#touch_file /etc/group - rm -f $root/etc/mtab #ln -s /proc/mounts $root/etc/mtab -#cat /proc/mounts - ## Probe for CD device which contains our CD here and mount /nix and ## /nixpkgs from it inside the ramdisk. Anaconda uses kudzu for this. ## Find out how Knoppix and SUSE do this... -#devices=$(grep -r cdrom hd* | cut -d '/' -f 1 | sort | uniq) -#echo devices ${devices} - DEVICES="/dev/hd?" for i in ${DEVICES} @@ -204,13 +201,14 @@ then cddevice=$i echo "Accessing NixOS CDROM at $i" break -fi -#umount /cdrom + fi fi done echo switch to /nix and /nixpkgs from CD +## starting here it's OK to have full blown glibc + ln -s /cdrom/nixpkgs /nixpkgs mount --bind /cdrom/nix /nix @@ -222,7 +220,6 @@ export NIX_CONF_DIR=$root/nix/etc NIX_CMD_PATH=@NIX_CMD_PATH@/bin echo initialising Nix DB... -#/nix/bin/nix-store --init $NIX_CMD_PATH/nix-store --init echo verifying Nix DB... @@ -258,10 +255,6 @@ cp /cdrom/mystorepaths $root/tmp echo copying store -#(while read storepaths; do - #cp -fa $storepaths $root/nix/store -#done) < /cdrom/mystorepaths - #cp -fva /nix/store/* $root/nix/store tar cf - /nix/store | tar --directory=$root -xvf - @@ -269,23 +262,10 @@ echo registering valid paths... $NIX_CMD_PATH/nix-store --register-validity < $root/tmp/mystorepaths -#(while read storepath; do -# echo PATH $storepath -# if ! $NIX_CMD_PATH/nix-store --isvalid $storepath 2> /dev/null; then -# (unset NIX_ROOT; $NIX_CMD_PATH/nix-store --dump $storepath) | $NIX_CMD_PATH/nix-store --restore $storepath -# $NIX_CMD_PATH/nix-store --validpath $storepath -# fi -#done) < /tmp/mystorepaths - -#echo registering successors... -#(while read line; do -# echo SUCC $line -# $NIX_CMD_PATH/nix-store --successor $line -#done) < /tmp/mysuccessors - echo setting init symlink... rm -f $root/init -ln -s $sysvinitPath/sbin/init $root/init +#ln -s $sysvinitPath/sbin/init $root/init +ln -s @sysvinitPath@/sbin/init $root/sbin/init ln -s @bash@/bin/sh $root/bin/sh ln -s @bash@/bin/bash $root/bin/bash @@ -295,6 +275,7 @@ echo "id:2:initdefault:" >> $root/etc/inittab echo "si::bootwait:$bootPath/bin/boot.sh" >> $root/etc/inittab echo "ht:06:wait:$bootPath/bin/halt.sh" >> $root/etc/inittab echo "1:2345:respawn:$bootPath/bin/login.sh /dev/tty1" >> $root/etc/inittab +echo "2:2345:respawn:$mingetty/sbin/mingetty tty2" >> $root/etc/inittab #echo "2:2345:respawn:$bootPath/bin/login.sh /dev/ttys/1" >> $root/etc/inittab echo setting up networking information... @@ -338,7 +319,6 @@ chmod 644 $root/lib/modules/$version/modules.* ### Do funky stuff with grub here. ### -ln -s @sysvinitPath@/sbin/init $root/sbin/init ln -s @hotplug@/sbin/hotplug $root/sbin/hotplug ln -s @hotplug@/etc/hotplug $root/etc/hotplug ln -s @hotplug@/etc/hotplug.d $root/etc/hotplug.d diff --git a/make-disk.sh b/make-disk.sh index 6c42916df1b2..3d33571ec991 100755 --- a/make-disk.sh +++ b/make-disk.sh @@ -78,7 +78,7 @@ done utilLinux=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).utillinux' | $NIX_CMD_PATH/nix-instantiate -))) coreUtils=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).coreutils' | $NIX_CMD_PATH/nix-instantiate -))) -e2fsProgs=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).e2fsprogs' | $NIX_CMD_PATH/nix-instantiate -))) +e2fsProgs=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).e2fsprogsDiet' | $NIX_CMD_PATH/nix-instantiate -))) modUtils=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).module_init_tools' | $NIX_CMD_PATH/nix-instantiate -))) Grub=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).grubWrapper' | $NIX_CMD_PATH/nix-instantiate -))) #gnuSed=$($NIX_CMD_PATH/nix-store -qR $(nix-store -r $(echo '(import ./pkgs.nix).gnused' | $NIX_CMD_PATH/nix-instantiate -))) @@ -91,9 +91,10 @@ bash=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).bash' | $NIX_CMD_P coreutils=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).coreutils' | $NIX_CMD_PATH/nix-instantiate -)) findutils=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).findutilsWrapper' | $NIX_CMD_PATH/nix-instantiate -)) utillinux=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).utillinux' | $NIX_CMD_PATH/nix-instantiate -)) -e2fsprogs=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).e2fsprogs' | $NIX_CMD_PATH/nix-instantiate -)) +e2fsprogs=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).e2fsprogsDiet' | $NIX_CMD_PATH/nix-instantiate -)) modutils=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).module_init_tools' | $NIX_CMD_PATH/nix-instantiate -)) grub=$($NIX_CMD_PATH/nix-store -r $(echo '(import ./pkgs.nix).grubWrapper' | $NIX_CMD_PATH/nix-instantiate -)) +mingettyWrapper=$($NIX_CMD_PATH/nix-store -r $(echo '(import ./pkgs.nix).mingettyWrapper' | $NIX_CMD_PATH/nix-instantiate -)) hotplug=$($NIX_CMD_PATH/nix-store -r $(echo '(import ./pkgs.nix).hotplug' | $NIX_CMD_PATH/nix-instantiate -)) udev=$($NIX_CMD_PATH/nix-store -r $(echo '(import ./pkgs.nix).udev' | $NIX_CMD_PATH/nix-instantiate -)) dhcp=$($NIX_CMD_PATH/nix-store -r $(echo '(import ./pkgs.nix).dhcpWrapper' | $NIX_CMD_PATH/nix-instantiate -)) @@ -178,6 +179,7 @@ sed -e "s^@sysvinitPath\@^$sysvinitPath^g" \ -e "s^@gnugrep\@^$gnugrep^g" \ -e "s^@which\@^$which^g" \ -e "s^@gnutar\@^$gnutar^g" \ + -e "s^@mingetty\@^$mingettyWrapper^g" \ < $fill_disk > $fill_disk.tmp mv $fill_disk.tmp $fill_disk diff --git a/pkgs.nix b/pkgs.nix index af8d61a3f364..d02d0a7a134c 100644 --- a/pkgs.nix +++ b/pkgs.nix @@ -1,19 +1,20 @@ rec { inherit (import /nixpkgs/trunk/pkgs/system/i686-linux.nix) - stdenv kernel bash coreutils findutilsWrapper utillinux sysvinit e2fsprogs + stdenv kernel bash coreutils findutilsWrapper utillinux sysvinit + e2fsprogsDiet e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils strace shadowutils iputils gnumake curl gnused gnutar gnugrep gzip - mingetty grubWrapper syslinux parted module_init_tools hotplug udev + mingettyWrapper grubWrapper syslinux parted module_init_tools hotplug udev dhcpWrapper man nano; boot = (import ./boot) {inherit stdenv kernel bash coreutils findutilsWrapper utillinux sysvinit e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils strace shadowutils iputils gnumake curl - gnused gnutar gnugrep gzip mingetty grubWrapper parted module_init_tools + gnused gnutar gnugrep gzip mingettyWrapper grubWrapper parted module_init_tools hotplug udev dhcpWrapper man nano;}; - init = (import ./init) {inherit stdenv bash coreutils utillinux e2fsprogs - nix shadowutils mingetty grubWrapper parted module_init_tools hotplug + init = (import ./init) {inherit stdenv bash coreutils utillinux e2fsprogsDiet + nix shadowutils mingettyWrapper grubWrapper parted module_init_tools hotplug dhcpWrapper man nano;}; everything = [boot sysvinit kernel];