Commit graph

285 commits

Author SHA1 Message Date
Eelco Dolstra b1fd71038e * Slight speedup. It's amazing how quickly shell scripts become
slow: calling basename in a loop somewhere has a noticable impact on
  performance.  We really shouldn't use bash scripts.

svn path=/nixos/trunk/; revision=33242
2012-03-18 19:05:44 +00:00
Eelco Dolstra 8ca2aff772 * Get rid of some grep hackery on the Upstart jobs.
svn path=/nixos/trunk/; revision=33240
2012-03-18 18:53:50 +00:00
Eelco Dolstra 9ba5f09e44 * More tasks that shouldn't be restarted (though they're harmless).
svn path=/nixos/trunk/; revision=33238
2012-03-18 18:09:17 +00:00
Eelco Dolstra 4acc48fc2d * Mark tasks such as mount-failed as not to be restarted.
svn path=/nixos/trunk/; revision=33237
2012-03-18 18:04:49 +00:00
Eelco Dolstra 362d1389d3 * mountall: make the "console output" Upstart stanza do its work. We
were redirecting output to /var/log/upstart/<job>, so it didn't work
  properly.
* mountall-ip-up: send the USR1 signal to the mountall process by
  looking up its PID, rather than doing "pkill -USR1 mountall".  This
  prevents a very subtle race condition where USR1 is delivered to a
  child process of mountall (such as fsck), if pkill sees the child
  just before its execve().  There is actually still a race condition
  because mountall installs its USR1 handler *after* daemonising, so
  mountall-ip-up could accidentally kill mountall.  Should report this
  to upstream.

svn path=/nixos/trunk/; revision=33236
2012-03-18 17:48:19 +00:00
Eelco Dolstra 2cc8d0363e * Move the implementation of boot.kernelModules to udev's postStart.
It needs udevd to be running because the modules may require
  firmware.  Thanks to Mathijs and Arie for pointing this out.

svn path=/nixos/trunk/; revision=33234
2012-03-18 14:03:42 +00:00
Eelco Dolstra 21393eed1e * Use the --quiet flag.
svn path=/nixos/trunk/; revision=33225
2012-03-18 02:36:44 +00:00
Eelco Dolstra 86d8d62d16 * Allow Upstart jobs to declare that they shouldn't be restarted by
switch-to-configuration.  E.g. the X server shouldn't be restarted
  because that kills all the X clients.

svn path=/nixos/trunk/; revision=33223
2012-03-18 02:10:39 +00:00
Eelco Dolstra 3495a773f9 * Improved Upstart job handling in switch-to-configuration. It no
longer compares the current configuration to the previous
  configuration, but instead compares the current Upstart state to the
  intended state.  Thus, if the switch script is interrupted, running
  nixos-rebuild again will resume starting/stopping Upstart jobs where
  the previous run left off.

  We determine if an Upstart job has changed by having the pre-start
  script of each Upstart job put a symlink to its .conf file in
  /var/run/upstart-jobs.  So if this symlink differs from the target
  of /etc/init/<job>.conf, then the job has changed.  This also
  prevents multiple restarts of dependent jobs.  E.g., if job B has
  "start on started A" and "stop on stopping A", then restarting A
  will cause B to be restarted, so B shouldn't B restarted a second
  time.

  We only start jobs that are not running if 1) they're tasks that
  have been previously run (like mountall); or 2) they're jobs that
  have a "start on" condition.  This seems a reasonable heuristic.

svn path=/nixos/trunk/; revision=33222
2012-03-18 01:53:35 +00:00
Eelco Dolstra ee6c9bb998 * Provide two utility functions in Upstart jobs: "ensure JOBNAME"
starts the given job and waits until it's running; "stop_check"
  checks that the current job hasn't been asked to stop.

svn path=/nixos/trunk/; revision=33214
2012-03-17 19:12:33 +00:00
Eelco Dolstra 573877c1ac * Use boot.kernelModules everywhere instead of explicit calls to
modprobe.
* Move the implementation of boot.kernelModules from the udev job to
  the activation script.  This prevents races with the udev job.
* Drop references to the "capability" kernel module, which no longer
  exists.

svn path=/nixos/trunk/; revision=33208
2012-03-17 17:26:17 +00:00
Shea Levy 8ad872ca03 Revert r33139
I didn't end up needing it and there's a better way to do what I wanted if I
did.

svn path=/nixos/trunk/; revision=33150
2012-03-16 12:01:08 +00:00
Shea Levy b89a65e54c Allow multiple definitions of boot.loader.kernelFile as long as they are all the same
svn path=/nixos/trunk/; revision=33139
2012-03-16 03:20:12 +00:00
Shea Levy 001fcad421 First shot at EFI booting.
Note: This feature is INCOMPLETE. Moreover, when runEfibootmgr is true it will
MODIFY NVRAM and, on Apple systems, possibly brick your firmware. PLEASE be
careful while further testing is performed

svn path=/nixos/trunk/; revision=33047
2012-03-13 19:27:59 +00:00
Lluís Batlle i Rossell dd6eb81797 Adding /etc/mdadm.conf, with the contents supplied at boot.initrd.mdadmConf.
This allows setting a fixed device name per array, thus ensuring that at boot,
the arrays will always be mounted with the same names. I think this allows
solving the problem of grub getting confused about softraid device names
(prefix and root), if the devices always get the same naming at initrd.


svn path=/nixos/trunk/; revision=33033
2012-03-13 13:26:21 +00:00
Eelco Dolstra b6d43e1aca * Fix Amazon image generation (broken by r32913).
svn path=/nixos/trunk/; revision=33032
2012-03-13 13:17:43 +00:00
Eelco Dolstra 7281a851b3 * Create a /usr/bin/env symlink. This allows scripts from other
distributions with shebang lines such as

    #! /usr/bin/env python

  to work correctly.

svn path=/nixos/trunk/; revision=33011
2012-03-12 10:41:39 +00:00
Lluís Batlle i Rossell 9e980235bd Properly filter a possible lack of "grub.device", in case of using only "grub.devices".
svn path=/nixos/trunk/; revision=33009
2012-03-12 09:42:24 +00:00
Lluís Batlle i Rossell 3c0fdaf877 Adding /dev/tty to the stage1, so 'more' and 'less' now page well.
svn path=/nixos/trunk/; revision=33006
2012-03-11 23:04:29 +00:00
Lluís Batlle i Rossell ee163c2c80 Making the stage2 interpreter bash non-interactive, while keeping the
interactive shell with bash interactive. Suggested by Eelco.


svn path=/nixos/trunk/; revision=33005
2012-03-11 22:43:37 +00:00
Lluís Batlle i Rossell 1a48572b75 Disabling the initrd extra tools by default, until further review.
svn path=/nixos/trunk/; revision=33004
2012-03-11 22:28:31 +00:00
Lluís Batlle i Rossell 2fc537277b Removing a 'set -x' in the stage1 extra tools.
svn path=/nixos/trunk/; revision=33003
2012-03-11 22:26:01 +00:00
Lluís Batlle i Rossell d2e2bb4bc4 Typo
svn path=/nixos/trunk/; revision=33002
2012-03-11 22:07:37 +00:00
Lluís Batlle i Rossell 331b1f46d3 Making the stage2 'debug2' spawn a shell with job control, like in stage1, running it in a
virtual terminal and not in the console. This brings wonderful things like ^C.


svn path=/nixos/trunk/; revision=33001
2012-03-11 22:01:46 +00:00
Lluís Batlle i Rossell bbebba68f7 A more friendly stage1, with interactive bash, busybox plenty of tools, etc.
I set it as default because users can benefit of this without having to prepare
their nixos first, and I don't think it will break any nixos for the initrd
size increase.

It can be disabled with 'boot.initrd.withExtraTools = false'.


svn path=/nixos/trunk/; revision=33000
2012-03-11 21:56:47 +00:00
Lluís Batlle i Rossell 6a0958cc06 Making stage2 get a full interactive bash for the stage2 init, so there the shell has readline,
jobs, etc.


svn path=/nixos/trunk/; revision=32999
2012-03-11 21:50:35 +00:00
Eelco Dolstra 03ebb883d1 * Modularize filesystem support. Filesystems such as btrfs and
reiserfs now have separate modules that are conditional on
  boot.supportedFilesystems and boot.initrd.supportedFilesystems.
  By default, these include the filesystems specified in the fsType
  attribute in fileSystems.  Ext2/3/4 support is currently
  unconditional.

  Also unbreak the installer test (http://hydra.nixos.org/build/2272302). 

svn path=/nixos/trunk/; revision=32954
2012-03-09 14:37:58 +00:00
Lluís Batlle i Rossell 13ac0a309b Allow a way to install grub to multiple devices (for /boot on soft raid arrays).
svn path=/nixos/trunk/; revision=32913
2012-03-08 21:37:30 +00:00
Lluís Batlle i Rossell 98dde13782 If enabling luks on initrd, also adding cryptsetup to system packages. I think it's useful.
svn path=/nixos/trunk/; revision=32910
2012-03-08 20:49:26 +00:00
Lluís Batlle i Rossell 1adaabef58 Adding an option to luksroot, so it allows to define whether to launch cryptsetup after or before LVM.
To allow dmcrypt over lvm and lvm over dmcrypt.


svn path=/nixos/trunk/; revision=32784
2012-03-04 21:00:35 +00:00
Eelco Dolstra 8935db253c * Upstart jobs: don't emit a description if there is none.
svn path=/nixos/trunk/; revision=32775
2012-03-04 16:17:56 +00:00
Mathijs Kwik dc8ca0ea4a upstart: options for setuid and setgid
as jobs running as different users cannot create their logfile, I moved that to an activationScript

svn path=/nixos/trunk/; revision=32762
2012-03-04 12:58:06 +00:00
Lluís Batlle i Rossell 79d4b11aeb Making the luks thing of initrd a bit more flexible. I used it to get a
ciphered swap, where I could hibernate ciphered.


svn path=/nixos/trunk/; revision=32754
2012-03-03 16:07:18 +00:00
Eelco Dolstra ee0769cc42 * If debug2 is passed on the kernel command line, run Upstart with
the --verbose flag to see what it's doing.

svn path=/nixos/trunk/; revision=32747
2012-03-02 16:37:28 +00:00
Eelco Dolstra f61ad97833 * Run the stage 2 debug shell at a more useful point (just before
starting Upstart).  This also causes $PATH to be set to something
  more sensible.

svn path=/nixos/trunk/; revision=32740
2012-03-02 13:17:05 +00:00
Eelco Dolstra 84bff53ca7 * Set the default value for the ‘path’ job attribute using the NixOS
module system so that it can be overriden.  Also use an ‘apply’ to
  compute the actual $PATH.

svn path=/nixos/trunk/; revision=32440
2012-02-20 19:23:15 +00:00
Eelco Dolstra a218a602d4 * Use openresolv to set the static nameserver configuration. Next
step is to get the DHCP client, OpenVPN etc. to use openresolv as
  well.

svn path=/nixos/trunk/; revision=32411
2012-02-20 00:00:50 +00:00
Peter Simons e91c6ea1ce modules/system/upstart-events/shutdown.nix: refer to bash binary with full path
Upstart won't find a "bash" binary in $PATH when those commands are run, so we
refer to it using an absolute path.

svn path=/nixos/trunk/; revision=31157
2011-12-30 16:57:39 +00:00
Florian Friesdorf eb755d4692 switched all mergeOptionString to pkgs.lib.types.string
pierron recommended the use of types.string over mergeOptionString, as
it is superior but might break things.

For my system the change evaluated to the exactly same.

svn path=/nixos/trunk/; revision=31138
2011-12-29 00:51:35 +00:00
Florian Friesdorf 3ebc7727f7 Revert "test we have cryptsetup-1.4.1 in initrd"
This reverts commit 025f8c40b40fad50086e8761eee61098d8fb2651.

The check was intened for building the initrd of the installer.

svn path=/nixos/trunk/; revision=31137
2011-12-28 22:37:38 +00:00
Florian Friesdorf 0544a008db Revert "added an "error" to luksroot that should be caught"
This reverts commit c7967af35a13f68a8785c142582b639dc8c8e92c.

svn path=/nixos/trunk/; revision=31136
2011-12-28 22:36:26 +00:00
Florian Friesdorf 829bd9a727 added an "error" to luksroot that should be caught
svn path=/nixos/trunk/; revision=31135
2011-12-28 22:21:31 +00:00
Florian Friesdorf c7fd05a650 test we have cryptsetup-1.4.1 in initrd
svn path=/nixos/trunk/; revision=31132
2011-12-28 21:46:50 +00:00
Florian Friesdorf c15aa7aea3 luksroot uses preLVMCommands instead of postDeviceCommands
svn path=/nixos/trunk/; revision=31131
2011-12-28 21:46:48 +00:00
Florian Friesdorf 90756a787c add preLVMCommands hook
svn path=/nixos/trunk/; revision=31130
2011-12-28 21:46:45 +00:00
Florian Friesdorf 0a9f3a36ec luksroot waits for usb drive
svn path=/nixos/trunk/; revision=31129
2011-12-28 21:46:42 +00:00
Florian Friesdorf dd8e725d7d copy only cryptsetup deps to stage-1 and test cryptsetup
popt-0.16 and cryptsetup-1.4.1 both generated pkgconfig (in contrast
to older versions). The pkgconfig files (popt.pc and cryptsetup.pc)
contain references into the store that are not removed by patchelf and
stage-1 fails with errors like: "output is not allowed to refer to
path `/nix/store/qccjhn063cfv171rcaxvxh0yk96zf7l2-cryptsetup-1.4.1'".

Now, only the cryptsetup binaries and its dependencies are copied,
determined by ldd. In addition the cryptsetup binary and lvm are
tested after patchelf has adjusted the library paths.

Thanks to Peter Simons and Eelco Dolstra for giving the rights hints.

svn path=/nixos/trunk/; revision=31128
2011-12-28 21:46:40 +00:00
Florian Friesdorf d98ecd1d9e enable testing of extraUtilsCommands after patchelf
svn path=/nixos/trunk/; revision=31127
2011-12-28 21:46:35 +00:00
Lluís Batlle i Rossell 0de75cde39 Asking for an interactive shell in case of error umounting filesystems. I've
not tested it; sometimes I hit the trouble, but not always.


svn path=/nixos/trunk/; revision=31104
2011-12-26 16:40:13 +00:00
Eelco Dolstra 2ff7b1284a * Handle the util-linux-ng -> util-linux rename
(http://hydra.nixos.org/build/1646277/nixlog/1).

svn path=/nixos/trunk/; revision=30984
2011-12-20 13:36:11 +00:00