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

Bug#626851: linux-image-2.6.38-2-amd64: after last update fails to boot



Hi,

Rares Aioanei wrote:
> Jonathan Nieder <jrnieder@gmail.com> wrote:

>> If I am and the .config indeed seems to be a red herring, would you be
>> willing to bisect between 2.6.38.4 and 2.6.38.5?  I can guide you
>> through the process if you'd like (and it probably would have been
>> worth writing a patch for the kernel guide for that by now; sorry).
>
> Yes, I could use some guidance. :-)

Sorry for the long silence.  Now the aforementioned patch is at [1]
but I'd rather give more pertinent advice directly.

First I would suggest testing with 2.6.39-1 from experimental.  If
that doesn't work, here is how to bisect:

	apt-get install build-essential git
	git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
	cd linux-2.6
	git remote add stable git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.38.y.git
	git fetch stable

The above grabs the kernel sources and in addition fetches the 2.6.38.y
series.

	git checkout v2.6.38.5
	git log v2.6.38.4..v2.6.38.5; # look over the changes
	git revert 068e0202; # back out the most relevant-seeming one
	make localmodconfig; # minimal configuration
	make -j4 deb-pkg

This spends its time building, so go for a hot beverage of your
choice.  Then you can test the resulting .deb:

	cd ..
	dpkg -i linux-image-*.deb
	reboot

If it also exhibits the problem, it would be time to test more
systematically.  It works like this (git-bisect(1) has details):

	cd ~/src/linux-2.6
	git bisect start
	git bisect bad; # current revision is bad
	git bisect bad v2.6.38.5
	git bisect good v2.6.38.4

Now it checks out a version halfway between to test:

	make silentoldconfig; # reuse configuration
	make -j4 deb-pkg

Hopefully this would be faster than the original build.  One can
test by installing the resulting package and rebooting.  Then
report back:

	git bisect good; # if it boots correctly
	git bisect bad; # if it exhibits the problem
	git bisect skip; # if some other problem makes it hard to test 

and it will check out a next version.  Since there are 56 patches
between 2.6.38.4 and 2.6.38.5, this would take log(56)/log(2) ~= 6
rounds to pinpoint to an individual patch.  The result of testing is
still useful to narrow it down if one gets bored before then. :)
You can get a picture of what's happening at any time with "git bisect
visualize" if the gitk package is installed.

Thanks again, and sorry I don't have any more clever ideas.

Regards,
Jonathan

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;bug=627960



Reply to: