Re: Booting uncompressed kernel image on i386?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ondrej Zary wrote:
Is there an easy way to boot uncompressed kernel (2.6) image instead of the compressed one (bzImage) - using e.g. LILO? I'm trying to do that because the decompression takes about 15 seconds on my i386 (it's really an i386 - i386DX/25 :-) The uncompressed kernel is about 1.5MB. I've already tried compressing it using gzip -1 instead of gzip -9 but that didn't make decompression any faster.

Nobody answered, time to look at the code :-)
The attached patch is a quick hack so "make" will create uncompressed kernel that can be booted in regular way.


--
Ondrej Zary
--- linux-2.6.12-printserver/scripts/Makefile.lib	2005-06-28 12:45:20.000000000 +0200
+++ linux-2.6.12-pentium/scripts/Makefile.lib	2005-07-01 23:36:30.000000000 +0200
@@ -177,7 +177,7 @@
 # ---------------------------------------------------------------------------
 
 quiet_cmd_gzip = GZIP    $@
-cmd_gzip = gzip -f -9 < $< > $@
+cmd_gzip = cat < $< > $@
 
 # ===========================================================================
 # Generic stuff
--- linux-2.6.12-printserver/arch/i386/boot/compressed/misc.c	2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12-pentium/arch/i386/boot/compressed/misc.c	2005-07-01 23:34:55.000000000 +0200
@@ -374,7 +374,15 @@
 
 	makecrc();
 	putstr("Uncompressing Linux... ");
-	gunzip();
+	int i;
+	for (i = 0; i < input_len / WSIZE; i++) {
+		memcpy(window, input_data+i*WSIZE, WSIZE);
+		outcnt = WSIZE;
+		flush_window();
+	}
+	memcpy(window, input_data+i*WSIZE, input_len % WSIZE);
+	outcnt = input_len % WSIZE;
+	flush_window();
 	putstr("Ok, booting the kernel.\n");
 	if (high_loaded) close_output_buffer_if_we_run_high(mv);
 	return high_loaded;

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux