Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1834 - (hide annotations) (download)
Wed Jul 11 09:54:05 2012 UTC (11 years, 11 months ago) by niro
File size: 3703 byte(s)
-added patch to include firmware files in initrd
1 niro 1834 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