Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Feb 2012 15:05:54 +0100
From:      rank1seeker@gmail.com
To:        hackers@freebsd.org, "John Baldwin" <jhb@freebsd.org>, "Roman Divacky" <rdivacky@freebsd.org>
Subject:   Re: BUG: 9.0 stage 2 boot (/boot/boot)
Message-ID:  <20120224.140554.554.1@DOMY-PC>
In-Reply-To: <201202230802.05083.jhb@freebsd.org>
References:  <20120217.074355.853.1@DOMY-PC> <201202230802.05083.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

----- Original Message -----

From: John Baldwin <jhb@freebsd.org>

To: freebsd-hackers@freebsd.org

Cc: rank1seeker@gmail.com, Roman Divacky <rdivacky@freebsd.org>

Date: Thu, 23 Feb 2012 08:02:04 -0500

Subject: Re: BUG: 9.0 stage 2 boot (/boot/boot)



> On Friday, February 17, 2012 2:43:55 am rank1seeker@gmail.com wrote:

> > Anyway, after upgrading to 9.0, my USB stick, when created, started to hang 

> at stage 2 boot.

> > I have a custom setup, where BSD label 'a', has a content of /boot/*

> > So when 'a' is being hit by stage 2 boot, there is boot.config waiting for 

> it.

> > After it reads it and displays it's content, it echos 'No' and hangs.

> > 

> > I stare at it and can't believe as boot.config's information is correct!

> > I hit '?' and it list all files in 'a'.

> > Then I simply RE-type what is displayed on screen (content of boot.config -> 

> path to loader)

> > And loader kicks in!

> > 

> > I do this a few times more and EACH time I have to RE-type correct info!

> > Tested on other machine, same thing.

> > 

> > However, this same custom layout works for HDD's, but NOT for USB stick.

> > 

> > I've extracted binary installs of 8.2 and 9.0 R:

> > MD5 (8_boot) = adb1e84e96bd434e51cafaaa0ef22584

> > MD5 (9_boot) = 40f3f6403ebd5e131259d1336b4b50ad

> > 

> > Then:

> > # gpart bootcode -b 8_boot da0s2

> > And sudenly that USB stick boots, without ANY other change!

> > Just an "old" stage 2 boot code, from R8 was enough.

> 

> Looks like it is thinking that 'kname' is empty.  Ah, I think Roman broke this

> in 219186:

> 

>  @@ -474,11 +461,7 @@ parse()

>  			     ? DRV_HARD : 0) + drv;

>  		dsk_meta = 0;

>  	    }

> -	    if ((i = ep - arg)) {

> -		if ((size_t)i >= sizeof(kname))

> -		    return -1;

> -		memcpy(kname, arg, i + 1);

> -	    }

> +            kname = arg;

>  	}

>  	arg = p;

>      }

> 

> Before it only set kname if it wasn't an empty string.  Now it always sets

> kname.  Try this change:

> 

> Index: boot2.c

> ===================================================================

> --- boot2.c	(revision 231983)

> +++ boot2.c	(working copy)

> @@ -457,7 +457,8 @@ parse()

>  			     ? DRV_HARD : 0) + drv;

>  		dsk_meta = 0;

>  	    }

> -            kname = arg;

> +	    if (*arg != '\0')

> +		    kname = arg;

>  	}

>  	arg = p;

>      }

> 

> -- 

> John Baldwin

> 





It still doesn't work!



And please, next time attach patch in a file (unified format), so I would  have a less hassle (to avoid manuall patch application)

Thx in advance.





Domagoj Smolčić





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120224.140554.554.1>