summary refs log tree commit diff
path: root/pkgs/tools/misc
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2009-07-13 16:57:33 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2009-07-13 16:57:33 +0000
commit3a8a3c91f75761f83fa1090a328c53509afeed83 (patch)
treef6e23a0f34d349832ec28bad410815f2e15d8c4c /pkgs/tools/misc
parented658483e9e42198a5cbbeff950ecbf8a12bc330 (diff)
downloadnixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar.gz
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar.bz2
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar.lz
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar.xz
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.tar.zst
nixlib-3a8a3c91f75761f83fa1090a328c53509afeed83.zip
Adding a patch for grub, so livecds with grub can still boot with buggy bioses,
as those of Acer 292LMi or Airis N990. This allows booting the NixOS ISO releases.
I made it optional, not included by default. I don't think it would harm at all enabling
it always - let it be decided on forum.

svn path=/nixpkgs/trunk/; revision=16341
Diffstat (limited to 'pkgs/tools/misc')
-rw-r--r--pkgs/tools/misc/grub/buggybios.patch11
-rw-r--r--pkgs/tools/misc/grub/default.nix4
2 files changed, 13 insertions, 2 deletions
diff --git a/pkgs/tools/misc/grub/buggybios.patch b/pkgs/tools/misc/grub/buggybios.patch
new file mode 100644
index 000000000000..1453a8adaa00
--- /dev/null
+++ b/pkgs/tools/misc/grub/buggybios.patch
@@ -0,0 +1,11 @@
+Taken from: http://savannah.gnu.org/bugs/?func=detailitem&item_id=10433
+--- grub-0.95.orig/stage2/bios.c 2004-03-27 17:34:04.000000000 +0100
++++ grub-0.95/stage2/bios.c 2005-03-02 01:02:29.192582200 +0100
+@@ -147,6 +147,7 @@
+   grub_memset (&cdrp, 0, sizeof (cdrp));
+   cdrp.size = sizeof (cdrp) - sizeof (cdrp.dummy);
+   err = biosdisk_int13_extensions (0x4B01, drive, &cdrp);
++  err = 0; /* really ugly hack to circumvent faulty BIOS versions like Acer 292LMi */
+   if (! err && cdrp.drive_no == drive)
+     {
+        if ((cdrp.media_type & 0x0F) == 0)
diff --git a/pkgs/tools/misc/grub/default.nix b/pkgs/tools/misc/grub/default.nix
index e0c35d63f727..f6f8f3ca2510 100644
--- a/pkgs/tools/misc/grub/default.nix
+++ b/pkgs/tools/misc/grub/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, autoconf, automake}:
+{stdenv, fetchurl, autoconf, automake, buggyBiosCDSupport ? false}:
 
 stdenv.mkDerivation {
   name = "grub-0.97-patch-1.9";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     # /dev/disk/by-label/bla.  The symlink resolution code in
     # grub-install isn't smart enough.
     ./symlink.patch
-  ];
+  ] ++ (stdenv.lib.optional buggyBiosCDSupport ./buggybios.patch);
 
   # Autoconf/automake required for the splashimage patch.
   buildInputs = [autoconf automake];