|   | 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 | }}} |