Tested with 20090116 rawhide - no network available to x86_64 guest with virtio devices, works fine with non-virtio: x86_64 initrd.img: $> find . -name virtio* ./modules/2.6.29-0.35.rc1.git4.fc11.x86_64/kernel/drivers/virtio ./modules/2.6.29-0.35.rc1.git4.fc11.x86_64/kernel/drivers/virtio/virtio_pci.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.x86_64/kernel/drivers/virtio/virtio.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.x86_64/kernel/drivers/virtio/virtio_ring.ko.gz i386 initrd.img: $> find . -name virtio* ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/char/hw_random/virtio-rng.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/net/virtio_net.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/virtio ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/virtio/virtio_pci.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/virtio/virtio_balloon.ko.gz ./modules/2.6.29-0.35.rc1.git4.fc11.i586/kernel/drivers/block/virtio_blk.ko.gz So, x86_64 is missing virtio_net and virtio_blk at least. I've checked and they are present in the kernel RPM.
Well, this looks a little strange: INITRDMODS="... =net ..." if [ -e $MBD_DIR/lib/modules/$kernel/modules.$NAME ]; then SET="$SET $(cat $MBD_DIR/lib/modules/$kernel/modules.$NAME |\ sed -e 's/.ko//')" fi but we don't have modules.net, but rather modules.networking (Wouldn't explain why we have virtio_net on 32 bit and not 64 bit, though)
(In reply to comment #1) > (Wouldn't explain why we have virtio_net on 32 bit and not 64 bit, though) And virtio_blk should be getting pulled in by =scsi
Okay, looking through a bash -x of mk-images: ++ NAME=scsi ++ '[' scsi = ata ']' ++ '[' scsi = scsi ']' +++ cat /tmp/makebootdisk.dir.30663/lib/modules//modules.block cat: /tmp/makebootdisk.dir.30663/lib/modules//modules.block: No such file or directory ++ SET=' ohci-hcd uhci-hcd ehci-hcd hid mousedev usb-storage sd_mod sr_mod ub appletouch ohci1394 sbp2 fw-ohci fw-sbp2 firewire-sbp2 firewire-ohci ide-cd ide-cd_mod sr_mod sg st sd_mod scsi_mod iscsi_tcp iscsi_ibft fat msdos vfat ext2 ext3 ext4 reiserfs jfs xfs gfs2 cifs dm-mod dm-zero dm-snapshot dm-mirror dm-multipath dm-round-robin dm-crypt raid0 raid1 raid5 raid6 raid456 raid10 linear sha256_generic cbc xts lrw aes_generic crypto_blkcipher crc32c ecb arc4 fat vfat nfs sunrpc lockd floppy cramfs loop edd pcspkr squashfs ipv6 virtio_pci yenta_socket i82365 tcic pcmcia mmc-block sdhci sdhci-pci |sed -e '\''s/.k\ o//'\'')' Two things look broken there: 1) $kernel isn't set 2) the "|sed ..." bit is ending up in the string ++ NAME=net ++ '[' net = ata ']' ++ '[' net = scsi ']' ++ '[' -e /tmp/makebootdisk.dir.30663/lib/modules//modules.net ']' ++ for name in '$1' It's not find modules.net because $kernel isn't set Also note, it's actually modules.networking rather than modules.net I think a heap of modules are actually being pulled in by this: +++ awk -F : '/|sed.ko: / { print gensub(".*/|sed.ko: ","","g") }' /tmp/updboot.kernel.30663/x86_64/lib/modules/2.6.29-0.35.rc1.git4.fc11.x86_64/modules.dep i.e. resdeps is hitting the "|sed" bit and pulling in a whole heap of stuff
Created attachment 329239 [details] 0001-Try-and-fix-expandModuleSet.patch
Thanks for the patch. With some minor modifications (killing cat, ignoring the =net stuff Jeremy already did), I have applied this. It should be in the next build of anaconda.
We had to modify it a bit more, the .modules files we were looking for existed in a different path. Suddenly we got a whole lot more modules, including the virtio modules for disks on x86-64.
Confirmed fixed in rawhide 20090117