fedup: boot image not found

Adam Williamson adamwill at fedoraproject.org
Mon Dec 15 23:21:11 UTC 2014


On Mon, 2014-12-15 at 18:14 +0000, Brian McGrew wrote:
> > On Dec 15, 2014, at 9:12 AM, Adam Williamson <
> > adamwill at fedoraproject.org> wrote:
> > 
> > On Mon, 2014-12-15 at 16:40 +0000, Brian McGrew wrote:
> > > Good morning all,
> > > 
> > > Running fedup and getting the following on a stock install of 
> > > F20:
> > > 
> > > [admin at knotts ~]$ sudo fedup --network 21 --product=workstation 
> > > [sudo] password for admin:
> > > setting up repos...
> > > getting boot images...
> > > 
> > > Downloading failed: couldn't get boot images: No more mirrors to 
> > > try. Last error was: [Errno 14] HTTP Error 404 - Not Found
> > > 
> > > 
> > > [admin at knotts ~]$ sudo fedup --network rawhide --
> > > product=workstation setting up repos...
> > > getting boot images...
> > > 
> > > Downloading failed: couldn't get boot images: No more mirrors to 
> > > try. Last error was: [Errno 14] HTTP Error 404 - Not Found
> > > [admin at knotts ~]$
> > 
> > Can't immediately see a good reason it isn't working, does it work 
> > with --instrepo= 
> > https://dl.fedoraproject.org/pub/fedora/linux/releases/21/Server/x86_64/os/ ? (assuming x86_64, 
> > of
> > course)
> 
> Of course x86_64!  That appears to be working.  Odd!  Will let you 
> know if it doesn’t finish.  I’ll get to 21 and then to rawhide and 
> see what happens.

fedup is rarely tested prior to Alpha, FWIW. You will need to manually 
provide a --instrepo parameter again. Here, I may as well explain 
what's actually going on there.

What fedup gets from the 'installation repository' is a kernel and a 
special initramfs. The initramfs contains the bits that drive the 
actual upgrade step of the fedup process - they're in the package 
'fedup-dracut', and part of the Fedora compose process involves 
building the special initramfs with those bits in it.

This special initramfs is called upgrade.img. When you pass fedup a --
instrepo parameter, it looks for the file .treeinfo.signed in the 
location you specify. So, for that one above, it found:

https://dl.fedoraproject.org/pub/fedora/linux/releases/21/Server/x86_64/os/.treeinfo.signed

you can go look at that for yourself, and you'll see what's in it - 
the name is apt, it provides 'info'rmation on the 'tree'. The bit 
fedup cares about is that it tells it where to find its special 
upgrade initramfs:

[images-x86_64]
kernel = images/pxeboot/vmlinuz
initrd = images/pxeboot/initrd.img
upgrade = images/pxeboot/upgrade.img
boot.iso = images/boot.iso

fedup goes and grabs the 'kernel' and 'upgrade' files (the kernel is 
just the kernel file that's in the kernel package in the same tree), 
and that's what it adds to the bootloader config, the environment you 
boot into after the first fedup phase has downloaded all the packages 
and told you to reboot to continue.

If you *don't* pass a --instrepo parameter, what fedup does is it asks 
mirrormanager for the location: it asks mirrormanager for a mirror 
list for the 'fedora-install' repository for the release you specified 
you wanted to upgrade to, and the appropriate arch. You can do the 
same thing through mirror manager's web interface:

https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-install-21&arch=x86_64

So if you just say 'fedup --network 21' on an x86_64 system, fedup 
goes and asks mirrormanager for that list of repos, then picks one and 
uses it as the 'installation repository'. (When I read your mail the 
first thing I did was check that URL and make sure the list it 
produced was sane; it does seem to be, so I'm not quite sure why you 
got a 404. It's possible you hit a bad mirror which didn't have the 
files in place, I guess?)

So now let's see what happens if you try and fedup to 22 without 
giving it any help:

https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-install-22&arch=x86_64

"# repo = fedora-install-22 arch = x86_64 error: invalid repo or arch"

Ooops. Well, let's try Rawhide:

https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-install-rawhide&arch=x86_64

OK, that's a proper list, so you could try 'fedup --network 
rawhide'...but wait! What does fedup do with the instrepo? It looks 
for .treeinfo.signed. Let's check that's available on a mirror from 
the list:

http://fedora.mirror.nexicom.net/linux/development/rawhide/x86_64/os/.treeinfo.signed ... 
404.

Oh dear. First problem here is, Rawhide trees generally aren't signed. 
So, you'd also have to pass --nogpgcheck; this will make it look for 
the un-signed version of the file instead, which is just .treeinfo :

http://fedora.mirror.nexicom.net/linux/development/rawhide/x86_64/os/.treeinfo ... 
404.

Well pants! Why, you wonder? Because the nightly compose attempt 
failed. There's an automated attempt to 'compose' the Rawhide (and 
Branched, when it exists) tree nightly. That's the process that 
generates all the images you see mentioned in the .treeinfo file - the 
upgrade initramfs, but also boot.iso and various other bits and 
pieces. It doesn't always work. When it doesn't work, there are no 
images, and no .treeinfo. You can look in the current tree and see the 
place where the upgrade.img ought to be - 
http://fedora.mirror.nexicom.net/linux/development/rawhide/x86_64/os
/images/pxeboot - doesn't exist, in fact, the whole /images sub-
directory doesn't exist. That's what a tree which didn't get composed 
looks like. (Note: this may only be true today, of course. Tomorrow, 
or whenever you read this mail, Future Reader, the files may exist, 
because that day's compose succeeded. Just pretend it didn't. Or, stop 
reading, and read this mail again on a day when it didn't!)

TCs and RCs are, of course, always 'composed', so as soon as we hit 
Alpha TC1, you know you can at least find an upgrade.img in the most 
recent TC/RC tree. But prior to Alpha TC1, it can be a bit trickier.

Now something I only recently learned as part of the whole 'let's do 
testing earlier' effort I've been working on is that Rawhide and 
Branched nightly trees are kept around for a while in a location with 
predictable URLs. That's what makes the nightly testing pages kinda 
viable - we can pick a tree which did compose successfully, declare it 
'open for testing', and have stable links to its network install 
images, as 
https://fedoraproject.org/wiki/Test_Results:Fedora_22_20141208_Installation does. So you can, at least, fairly reliably expect to find a .treeinfo and 
an upgrade.img in the last nightly tree 'nominated' for install 
testing, and use that.

(It occurs to me that I can probably do some wiki template magic in 
the fedup test case instructions so they will provide the correct 
instrepo parameter for the most recent nightly compose or TC/RC; I'll 
have to look at that later.)

Soooo, after that long digression, bottom line - if you want to test 
fedup to F22, you should probably run:

fedup --network 22 --nogpgcheck --instrepo 
http://kojipkgs.fedoraproject.org/mash/rawhide-20141208/rawhide/x86_64/os/

(attentive readers will note that 
http://kojipkgs.fedoraproject.org/mash/rawhide-20141208/rawhide/x86_64/os/.treeinfo exists but 

http://kojipkgs.fedoraproject.org/mash/rawhide-20141208/rawhide/x86_64/os/.treeinfo.signed does not, as I explained above, hence the --
nogpgcheck).

but don't come crying to me if it explodes ;) You might well be the 
first to test it for F22. Exciting, eh?
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net



More information about the test mailing list