Bug 14848 - Kernel fails to boot if compressed with bzip2 or lzma
Summary: Kernel fails to boot if compressed with bzip2 or lzma
Status: CLOSED DUPLICATE of bug 14907
Alias: None
Product: Other
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: other_other
URL:
Keywords:
Depends on:
Blocks: 14885
  Show dependency tree
 
Reported: 2009-12-20 01:46 UTC by Sebastian Dalfuß
Modified: 2009-12-29 14:57 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.33-rc1
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments

Description Sebastian Dalfuß 2009-12-20 01:46:03 UTC
The kernel fails to boot if compressed with bzip2 or lzma, gzip works.

Commit 4a2ff67c88211026afcbdbc190c13f705dae1b59 does:


--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -208,7 +208,7 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \
 
 # Bzip2 and LZMA do not include size in file... so we have to fake that;
 # append the size as a 32-bit littleendian number as gzip does.
-size_append = /bin/echo -ne $(shell                                    \
+size_append = printf $(shell                                           \
 dec_size=0;                                                            \
 for F in $1; do                                                                \
        fsize=$$(stat -c "%s" $$F);                                     \


This is wrong, because it calls the shell's builtin printf (instead /usr/bin/printf) which does not support the necessary arguments.

At my machine (debian) "/bin/echo -ne" works.
Comment 1 Witold Baryluk 2009-12-21 21:06:03 UTC
I have the same issue. After change to gzip compression, it properly boots.

With bzip2 or lzma, i got:

baryluk@sredniczarny:/sctank2/Dane/linux/linux-2.6/linux-2.6$ md5sum ./arch/i386/boot/bzImage ; qemu -kernel ./arch/i386/boot/bzImage 
8ff875e103dbe7f88c344f3a91f0d3fa  ./arch/i386/boot/bzImage
qemu: fatal: Trying to execute code outside RAM or ROM at 0x3133feb0
EAX=3133feb0 EBX=3128b000 ECX=00000000 EDX=00000000
ESI=00000000 EDI=3128affc EBP=00100000 ESP=317425c0
EIP=3133feb0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0018 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0010 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0018 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0018 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0018 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0018 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 00000000 00008200 DPL=0 LDT
TR =0020 00001000 00000067 00008900 DPL=0 TSS32-avl
GDT=     00012bb0 00000027
IDT=     00000000 00000000
CR0=60000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000 
DR6=ffff0ff0 DR7=00000400
CCS=0005b2e0 CCD=0002d970 CCO=SARL    
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80


Last commit dd59f6c76b265ed2ff18b497d6105a9511b1feb1

All other CONFIG_* options was excluded, leaving minimal possible kernel.
Comment 2 Andrew Morton 2009-12-22 23:50:06 UTC
(switched to email.  Please respond via emailed reply-to-all, not via the
bugzilla web interface).

On Sun, 20 Dec 2009 01:46:05 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=14848
> 
>            Summary: Kernel fails to boot if compressed with bzip2 or lzma
>            Product: Other
>            Version: 2.5
>     Kernel Version: 2.6.33-rc1
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: Other
>         AssignedTo: other_other@kernel-bugs.osdl.org
>         ReportedBy: sd@sedf.de
>         Regression: Yes
> 
> 
> The kernel fails to boot if compressed with bzip2 or lzma, gzip works.
> 
> Commit 4a2ff67c88211026afcbdbc190c13f705dae1b59 does:
> 
> 
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -208,7 +208,7 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@)
> || \
> 
>  # Bzip2 and LZMA do not include size in file... so we have to fake that;
>  # append the size as a 32-bit littleendian number as gzip does.
> -size_append = /bin/echo -ne $(shell                                    \
> +size_append = printf $(shell                                           \
>  dec_size=0;                                                            \
>  for F in $1; do                                                              
> \
>         fsize=$$(stat -c "%s" $$F);                                     \
> 
> 
> This is wrong, because it calls the shell's builtin printf (instead
> /usr/bin/printf) which does not support the necessary arguments.
> 
> At my machine (debian) "/bin/echo -ne" works.
> 

Please send a tested, signed-off patch as per
Documentation/SubmittingPatches, thanks.
Comment 3 Rafael J. Wysocki 2009-12-29 14:56:40 UTC

*** This bug has been marked as a duplicate of bug 14907 ***

Note You need to log in before you can comment on or make changes to this bug.