summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2007-08-30 17:11:34 +0000
committerDavid Cantrell <dcantrell@redhat.com>2007-08-30 17:11:34 +0000
commita8bb810e9eeefca20473051fef8a759105ff6c4e (patch)
treeb8ad5c69c66dfe47d3115f1428ee0c1e157d446c
parent01a7ca6925a777d56b5501d100ed5488cdad3ae1 (diff)
* loader2/net.c (chooseNetworkInterface): Skip devices that do not
have firmware loaded (#251941). * scripts/upd-instroot: Add *-firmware to PACKAGES for now. We'll change this later once the kernel provides us with more info (#177452). * scripts/mk-images (makeinitrd): Remove arch test for copying over firmware files. Just check the module list and copy firmware, also add atmel and iwl4965 (#177452).
-rw-r--r--ChangeLog17
-rw-r--r--loader2/net.c13
-rwxr-xr-xscripts/mk-images59
-rwxr-xr-xscripts/upd-instroot6
4 files changed, 64 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 25dff8001..0dfeb6f28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2007-08-30 David Cantrell <dcantrell@redhat.com>
+
+ * loader2/net.c (chooseNetworkInterface): Skip devices that do not
+ have firmware loaded (#251941).
+
+ * scripts/upd-instroot: Add *-firmware to PACKAGES for now. We'll
+ change this later once the kernel provides us with more
+ info (#177452).
+
+ * scripts/mk-images (makeinitrd): Remove arch test for copying over
+ firmware files. Just check the module list and copy firmware, also
+ add atmel and iwl4965 (#177452).
+
2007-08-29 Chris Lumens <clumens@redhat.com>
* kickstart.py (Network): Inherit from the correct pykickstart
@@ -19,10 +32,10 @@
2007-08-27 David Cantrell <dcantrell@redhat.com>
* scripts/upd-instroot: Add wifi firmware packages to i386/x86_64
- instroot list.
+ instroot list (#177452).
* scripts/mk-images (makeinitrd): Copy firmware files over if we
- have them and if we are including the driver.
+ have them and if we are including the driver (#177452).
2007-08-27 Jeremy Katz <katzj@redhat.com>
diff --git a/loader2/net.c b/loader2/net.c
index 227ed9b0d..720b54c8b 100644
--- a/loader2/net.c
+++ b/loader2/net.c
@@ -1727,6 +1727,13 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) {
for (i = 0; devs[i]; i++) {
if (!devs[i]->device)
continue;
+
+ /* if kudzu hands us a device name of 'eth', we lack firmware */
+ /* skip the device as an option for installation (#251941) */
+ if ((strlen(devs[i]->device) == 3) &&
+ (!strncmp(devs[i]->device, "eth", 3)))
+ continue;
+
if (devs[i]->desc) {
deviceNames[deviceNums] = alloca(strlen(devs[i]->device) +
strlen(devs[i]->desc) + 4);
@@ -1734,12 +1741,14 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) {
devs[i]->device, devs[i]->desc);
if (strlen(deviceNames[deviceNums]) > max)
max = strlen(deviceNames[deviceNums]);
- devices[deviceNums++] = devs[i]->device;
+ devices[deviceNums] = devs[i]->device;
} else {
devices[deviceNums] = devs[i]->device;
- deviceNames[deviceNums++] = devs[i]->device;
+ deviceNames[deviceNums] = devs[i]->device;
}
+ deviceNums++;
+
/* this device has been set and we don't really need to ask
* about it again... */
if (loaderData->netDev && (loaderData->netDev_set == 1)) {
diff --git a/scripts/mk-images b/scripts/mk-images
index 80c6d171f..e1276b23a 100755
--- a/scripts/mk-images
+++ b/scripts/mk-images
@@ -585,30 +585,41 @@ makeinitrd() {
cp $IMGPATH/usr/sbin/cmsfs* $MBD_DIR/sbin/
fi
- if [ "$BUILDARCH" = "i386" -o "$BUILDARCH" = "x86_64" ]; then
- for module in $INITRDMODULES ; do
- case $module in
- ipw2100)
- mkdir -p $MBD_DIR/lib/firmware
- cp $IMGPATH/lib/firmware/ipw2100* $MBD_DIR/lib/firmware
- ;;
- ipw2200)
- mkdir -p $MBD_DIR/lib/firmware
- cp $IMGPATH/lib/firmware/ipw-2.4* $MBD_DIR/lib/firmware
- cp $IMGPATH/lib/firmware/ipw2200* $MBD_DIR/lib/firmware
- ;;
- iwl3945)
- mkdir -p $MBD_DIR/lib/firmware
- cp $IMGPATH/lib/firmware/iwlwifi-3945* $MBD_DIR/lib/firmware
- ;;
- zd1211)
- mkdir -p $MBD_DIR/lib/firmware/zd1211
- cp $IMGPATH/lib/firmware/zd1211/* \
- $MBD_DIR/lib/firmware/zd1211
- ;;
- esac
- done
- fi
+ # Copy in driver firmware we want during installation. NOTE: This isn't
+ # the ideal solution, but we'll do this for now. What we really want is
+ # for the kernel modules to include a modinfo field that names the firmware
+ # file we should have. If we can get that it would make it even easier to
+ # push the kernel people to depend on the firmware packages in the kernel,
+ # but we have to take small steps first.
+ for module in $INITRDMODULES ; do
+ case $module in
+ ipw2100)
+ mkdir -p $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/ipw2100* $MBD_DIR/lib/firmware
+ ;;
+ ipw2200)
+ mkdir -p $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/ipw-2.4* $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/ipw2200* $MBD_DIR/lib/firmware
+ ;;
+ iwl3945)
+ mkdir -p $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/iwlwifi-3945* $MBD_DIR/lib/firmware
+ ;;
+ iwl4965)
+ mkdir -p $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/iwlwifi-4965* $MBD_DIR/lib/firmware
+ ;;
+ atmel)
+ mkdir -p $MBD_DIR/lib/firmware
+ cp $IMGPATH/lib/firmware/atmel_*.bin $MBD_DIR/lib/firmware
+ ;;
+ zd1211rw)
+ mkdir -p $MBD_DIR/lib/firmware/zd1211
+ cp $IMGPATH/lib/firmware/zd1211/* $MBD_DIR/lib/firmware/zd1211
+ ;;
+ esac
+ done
if [ -n "$INITRDMODULES" ]; then
MODSET=`expandModuleSet "$INITRDMODULES"`
diff --git a/scripts/upd-instroot b/scripts/upd-instroot
index 0b2b0dec6..ffe3b00fd 100755
--- a/scripts/upd-instroot
+++ b/scripts/upd-instroot
@@ -252,11 +252,11 @@ PACKAGES="glibc glibc-common setup openssl python newt slang libselinux
yum-metadata-parser gfs2-utils libvolume_id nash yum-fedorakmod
libdhcp libnl libdhcp6client libdhcp4client newt-python
device-mapper device-mapper-libs dmraid keyutils-libs libsemanage-python
- python-pyblock mkinitrd libbdevid libbdevid-python nss nspr"
+ python-pyblock mkinitrd libbdevid libbdevid-python nss nspr
+ *-firmware"
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
- PACKAGES="$PACKAGES pcmciautils ipw2100-firmware ipw2200-firmware
- iwl3945-firmware zd1211-firmware"
+ PACKAGES="$PACKAGES pcmciautils"
fi
if [ $ARCH = i386 -o $ARCH = x86_64 -o $ARCH = ia64 ]; then