| 16 | * 解析 firmware-bnx2 安裝前與安裝後的 initrd.img 差異 |
| 17 | {{{ |
| 18 | bio:~$ mkdir -p temp temp2 |
| 19 | bio:~$ cd temp |
| 20 | bio:~/temp$ cat /boot/initrd.img-2.6.22.19-lustre-686.bak | gunzip | cpio -i |
| 21 | 27903 block |
| 22 | bio:~/temp$ cd ../temp2 |
| 23 | bio:~/temp2$ cat /boot/initrd.img-2.6.22.19-lustre-686 | gunzip | cpio -i |
| 24 | 28313 blockss |
| 25 | bio:~/temp2$ cd .. |
| 26 | bio:~$ diff -r temp temp2 |
| 27 | 只在 temp2/lib 存在:firmware |
| 28 | 只在 temp2/lib/udev 存在:firmware.agent |
| 29 | bio:~$ ls temp2/lib/firmware/ |
| 30 | bnx2-06-4.0.5.fw bnx2-09-4.0.5.fw |
| 31 | bio:~$ cat temp2/lib/udev/firmware.agent |
| 32 | #!/bin/sh -e |
| 33 | # |
| 34 | # firmware loader agent |
| 35 | # |
| 36 | |
| 37 | cd /lib/udev/ |
| 38 | . ./hotplug.functions |
| 39 | |
| 40 | if [ ! -e /sys/$DEVPATH/loading ]; then |
| 41 | mesg "/sys/$DEVPATH/ does not exist" |
| 42 | exit 1 |
| 43 | fi |
| 44 | |
| 45 | for DIR in $FIRMWARE_DIRS; do |
| 46 | [ -e "$DIR/$FIRMWARE" ] || continue |
| 47 | echo 1 > /sys/$DEVPATH/loading |
| 48 | cat "$DIR/$FIRMWARE" > /sys/$DEVPATH/data |
| 49 | echo 0 > /sys/$DEVPATH/loading |
| 50 | exit 0 |
| 51 | done |
| 52 | |
| 53 | # the firmware was not found |
| 54 | echo -1 > /sys/$DEVPATH/loading |
| 55 | |
| 56 | debug_mesg "Cannot find the $FIRMWARE firmware" |
| 57 | exit 1 |
| 58 | }}} |