Magellan Linux

Contents of /trunk/mkinitrd/patches/mkinitrd-6.3.5-include-firmware.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1834 - (show annotations) (download)
Wed Jul 11 09:54:05 2012 UTC (11 years, 10 months ago) by niro
File size: 3703 byte(s)
-added patch to include firmware files in initrd
1 Index: mkinitrd.in
2 ===================================================================
3 --- mkinitrd.in (Revision 1794)
4 +++ mkinitrd.in (Arbeitskopie)
5 @@ -39,6 +39,8 @@
6 MODULES=""
7 PREMODS=""
8 NOSTRIP=false
9 +FIRMWARE_PATH="/lib/firmware"
10 +FIRMWARE_FILES=""
11
12 [ -e /etc/conf.d/mkinitrd ] && . /etc/conf.d/mkinitrd
13
14 @@ -342,6 +344,21 @@
15 echo ${UUID}
16 }
17
18 +add_firmware()
19 +{
20 + local firmware="$1"
21 + local i
22 +
23 + # check if given firmware is already included in FIRMWARE_FILES
24 + for i in ${FIRMWARE_FILES}
25 + do
26 + [[ ${firmware} = ${i} ]] && return 0
27 + done
28 +
29 + # include firmware
30 + FIRMWARE_FILES="${FIRMWARE_FILES} ${firmware}"
31 +}
32 +
33 # need r00t privs
34 [[ $(id -u) != 0 ]] && die "you must be r00t."
35
36 @@ -816,6 +833,21 @@
37 add_initrd "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online"
38 done
39 fi
40 +
41 + # get firmware files if neccessary
42 + if [ -x $(which modinfo 2> /dev/null) ]
43 + then
44 + firmware_blobs=$(modinfo ${module}${text} | grep 'firmware:' | sed 's:^firmware\:.*[[:space:]]\(.*\):\1:')
45 + if [[ ! -z ${firmware_blobs} ]]
46 + then
47 + for firmware in ${firmware_blobs}
48 + do
49 + add_firmware "${firmware}"
50 + done
51 + fi
52 + else
53 + echo "Warning 'modinfo' not found"
54 + fi
55 done
56
57 # respect rootdelay kernel param
58 @@ -916,6 +948,20 @@
59 fi
60 done
61
62 +# install firmware if neccessary
63 +if [[ ! -z ${FIRMWARE_FILES} ]]
64 +then
65 + for firmware in ${FIRMWARE_FILES}
66 + do
67 + if [ -e ${FIRMWARE_PATH}/${firmware} ]
68 + then
69 + echo "installing firmware '${firmware}'"
70 + install ${verbose} -d ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die
71 + cp ${verbose} -a ${FIRMWARE_PATH}/${firmware} ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die
72 + fi
73 + done
74 +fi
75 +
76 # create the image
77 echo "Creating initrd image '${target}' ..."
78 if [[ ${IMAGE_TYPE} = initramfs ]]
79 Index: livecd/mkinitrd-livecd.in
80 ===================================================================
81 --- livecd/mkinitrd-livecd.in (Revision 1538)
82 +++ livecd/mkinitrd-livecd.in (Arbeitskopie)
83 @@ -48,6 +48,8 @@
84 MODULES_SATA="${LIBDIR}/mkinitrd/modules.sata"
85 MODULES_PATA="${LIBDIR}/mkinitrd/modules.pata"
86 MODULES_FRAMEBUFFER="${LIBDIR}/mkinitrd/modules.framebuffer"
87 +FIRMWARE_PATH="/lib/firmware"
88 +FIRMWARE_FILES=""
89
90 compress=1
91 allowmissing=""
92 @@ -254,12 +256,57 @@
93 modname="${modname/${i}/}"
94 done
95 echo "${modname}" >> ${DEST}/etc/$(basename ${list}) || die
96 +
97 + # get and install firmware files if neccessary
98 + if [ -x $(which modinfo 2> /dev/null) ]
99 + then
100 + local firmware_blobs
101 + local firmware
102 + module=$(echo ${MODULE} | sed "s|.*/||" | sed -e "s/.k\?o.\?g\?z\?$//" -e "s/.gz//")
103 + firmware_blobs=$(modinfo ${module} | grep 'firmware:' | sed 's:^firmware\:.*[[:space:]]\(.*\):\1:')
104 + if [[ ! -z ${firmware_blobs} ]]
105 + then
106 + for firmware in ${firmware_blobs}
107 + do
108 + add_firmware "${firmware}"
109 + done
110 + fi
111 + if [[ ! -z ${FIRMWARE_FILES} ]]
112 + then
113 + for firmware in ${FIRMWARE_FILES}
114 + do
115 + if [ -e ${FIRMWARE_PATH}/${firmware} ]
116 + then
117 + echo "installing firmware '${firmware}'"
118 + install ${verbose} -d ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die
119 + cp ${verbose} -a ${FIRMWARE_PATH}/${firmware} ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die
120 + fi
121 + done
122 + fi
123 + else
124 + echo "Warning 'modinfo' not found"
125 + fi
126 done
127
128 export ALL_MODULES="${ALL_MODULES} ${MODULES}"
129 unset MODULES
130 }
131
132 +add_firmware()
133 +{
134 + local firmware="$1"
135 + local i
136 +
137 + # check if given firmware is already included in FIRMWARE_FILES
138 + for i in ${FIRMWARE_FILES}
139 + do
140 + [[ ${firmware} = ${i} ]] && return 0
141 + done
142 +
143 + # include firmware
144 + FIRMWARE_FILES="${FIRMWARE_FILES} ${firmware}"
145 +}
146 +
147 # need r00t privs
148 [[ $(id -u) != 0 ]] && die "you must be r00t."
149