Contents of /trunk/mkinitrd/patches/mkinitrd-6.3.5-include-firmware.patch
Parent Directory | Revision Log
Revision 1834 -
(show annotations)
(download)
Wed Jul 11 09:54:05 2012 UTC (12 years, 2 months ago) by niro
File size: 3703 byte(s)
Wed Jul 11 09:54:05 2012 UTC (12 years, 2 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 |