Gentoo Archives: gentoo-commits

From: Richard Yao <ryao@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/genkernel:ryao commit in: /, defaults/
Date: Mon, 03 Jun 2013 23:35:03
Message-Id: 1366874394.3a054014e880e5b1ff28e3d87767c45a073da6b5.ryao@gentoo
1 commit: 3a054014e880e5b1ff28e3d87767c45a073da6b5
2 Author: Fabio Erculiani <lxnay <AT> sabayon <DOT> org>
3 AuthorDate: Tue Apr 23 15:21:53 2013 +0000
4 Commit: Richard Yao <ryao <AT> gentoo <DOT> org>
5 CommitDate: Thu Apr 25 07:19:54 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=3a054014
7
8 Drop our own /sbin/modprobe and use busybox built-in applet instead
9
10 Our modprobe is an ancient heritage from the past, probably dating to
11 a time where busybox's modprobe features were limited. There is no reason
12 at all to keep using our own version instead of the busybox one.
13 This commit also makes modules_scan 15% faster.
14
15 ---
16 defaults/initrd.defaults | 8 +--
17 defaults/initrd.scripts | 35 +++++------
18 defaults/modprobe | 147 -----------------------------------------------
19 gen_initramfs.sh | 25 +++++---
20 4 files changed, 36 insertions(+), 179 deletions(-)
21
22 diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
23 index 90f73f4..8ff5510 100755
24 --- a/defaults/initrd.defaults
25 +++ b/defaults/initrd.defaults
26 @@ -58,13 +58,7 @@ fi
27 QUIET='1'
28 ROOT_LINKS='bin sbin lib lib32 lib64 boot usr opt emul'
29 ROOT_TREES='etc root home var'
30 -INSMOD='insmod'
31 -if [ "${KMAJOR}" -ge 3 ] || [ "${KMAJOR}" -eq 2 -a "${KMINOR}" -gt '4' ]
32 -then
33 - KSUFF='.ko'
34 -else
35 - KSUFF='.o'
36 -fi
37 +KSUFF='.ko'
38
39 REAL_ROOT=''
40 CONSOLE='/dev/console'
41
42 diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
43 index 2e8e744..7ec5c94 100755
44 --- a/defaults/initrd.scripts
45 +++ b/defaults/initrd.scripts
46 @@ -2,10 +2,6 @@
47
48 . /etc/initrd.defaults
49
50 -backup() {
51 - echo -ne "\033[0G\033[0K"
52 -}
53 -
54 modules_load() {
55 for module in $*
56 do
57 @@ -17,30 +13,37 @@ modules_load() {
58
59 modules_scan() {
60 local MODS
61 - [ -d "/etc/modules/${1}" ] || touch /etc/modules/${1}
62 + local loaded
63 +
64 + MODS=$(cat /etc/modules/${1} 2>/dev/null)
65 + [ -n "${MODS}" ] && echo -ne "${BOLD} ::${NORMAL} "
66 + [ -n "${MODS}" ] && echo -ne "Loading from ${1}: "
67
68 - [ -f "/etc/modules/${1}" ] && MODS=`cat /etc/modules/${1}`
69 for x in ${MODS}
70 do
71 - MLOAD=`echo ${MLIST} | sed -e "s/.*${x}.*/${x}/"`
72 + MLOAD=$(echo ${MLIST} | sed -e "s/.*${x}.*/${x}/")
73 if [ "${MLOAD}" = "${x}" ] # Only module to no-load
74 then
75 echo -e "${BOLD} ::${NORMAL} Skipping ${x}..."
76 - elif [ "${MLOAD}" = "${MLIST}" ] # == No change == No specified no-load
77 + elif [ "${MLOAD}" = "${MLIST}" ]
78 then
79 - [ -n "${DEBUG}" ] && echo -ne "${BOLD} ::${NORMAL} Checking for ${x}..."
80 - # find -name does not work since the return status is always zero
81 - if find /lib/modules/${KV} | grep /"${x}${KSUFF}" >/dev/null 2>&1
82 - then
83 - echo -ne "${BOLD} ::${NORMAL} Scanning for ${x}..."
84 - modprobe ${x} -n
85 - backup
86 - echo -ne "${NORMAL}"
87 + if [ -n "${DEBUG}" ]; then
88 + echo -ne "${BOLD} ::${NORMAL} "
89 + echo -ne "Scanning for ${x}..."
90 fi
91 + modprobe ${x} > /dev/null 2>&1
92 + loaded=${?}
93 + [ -n "${DEBUG}" -a "${loaded}" = "0" ] && \
94 + echo "loaded"
95 + [ -n "${DEBUG}" -a "${loaded}" != "0" ] && \
96 + echo "not loaded"
97 + [ -z "${DEBUG}" -a "${loaded}" = "0" ] && \
98 + echo -en "${x} "
99 else
100 echo -e "${BOLD} ::${NORMAL} Skipping ${x}..."
101 fi
102 done
103 + [ -n "${MODS}" ] && echo
104 }
105
106 uppercase(){
107
108 diff --git a/defaults/modprobe b/defaults/modprobe
109 deleted file mode 100755
110 index 6bbe7e4..0000000
111 --- a/defaults/modprobe
112 +++ /dev/null
113 @@ -1,147 +0,0 @@
114 -#!/bin/ash
115 -# Apparently, this is required for proper functionality with busybox 1.1.3
116 -# Check out bug #197730 for more details.
117 -
118 -. /etc/initrd.defaults
119 -
120 -usage() {
121 - echo 'Usage:'
122 - echo ' modprobe moduleprefix'
123 - echo
124 - echo 'Example:'
125 - echo ' modprobe eepro100'
126 - echo
127 - echo 'Note: Do not pass the suffix to modprobe!'
128 - exit 1
129 -}
130 -
131 -# Pass module name to this function
132 -modules_dep_list() {
133 - if [ "$#" -lt '1' ]
134 - then
135 - echo 'modules_dep_list(): Improper usage!'
136 - exit 1
137 - fi
138 - cat /lib/modules/${KV}/modules.dep | grep /"${1}${KSUFF}:" | cut -d':' -f2
139 -}
140 -
141 -
142 -# Pass module deps list
143 -strip_mod_paths() {
144 - local x
145 - local ret
146 - local myret
147 -
148 - [ "$#" -lt '1' ] && return
149 -
150 - for x in ${*}
151 - do
152 - ret=`basename ${x} | cut -d. -f1`
153 - myret="${myret} ${ret}"
154 - done
155 - echo "${myret}"
156 -}
157 -
158 -LOADED_MODULES=''
159 -is_module_already_loaded() {
160 - local x
161 - if [ "$#" != '1' ]
162 - then
163 - echo 'is_module_already_loaded(): Improper usage!'
164 - fi
165 -
166 - for x in ${LOADED_MODULES}
167 - do
168 - if [ "${x}" = "${1}" ]
169 - then
170 - # Yep, module is loaded
171 - return 0
172 - fi
173 - done
174 - return 1
175 -}
176 -
177 -real_mod_path() {
178 - # Find -name is no good since the return status is always zero
179 - find "/lib/modules/${KV}" | grep /"${1}${KSUFF}"
180 -}
181 -
182 -modprobe2() {
183 - local x
184 - local deps
185 - local real_path
186 - local modlist
187 - local ret
188 -
189 - local echoAppend
190 - local echoFlags
191 -
192 - if [ "$#" -lt '1' ]
193 - then
194 - usage
195 - exit 1
196 - fi
197 - real_path=`real_mod_path ${1}`
198 - if [ "${real_path}" = '' -o "${real_path}" = ' ' ]
199 - then
200 - [ "${2}" = '-n' ] && echo -n " -> $1"
201 - echo ' module not found.'
202 - exit 2
203 - fi
204 - modlist=`modules_dep_list ${1}`
205 - if [ "${modlist}" != '' -a "${modlist}" != ' ' ]
206 - then
207 - deps=`strip_mod_paths ${modlist}`
208 - else
209 - deps=''
210 - fi
211 - # Make sure we don't do any endless loops!
212 -
213 - LOADED_MODULES="${LOADED_MODULES} ${1}"
214 - for x in ${deps}
215 - do
216 - if ! is_module_already_loaded ${x}
217 - then
218 - if [ "${x}" != '' -a "${x}" != ' ' ]
219 - then
220 - modprobe2 "${x}" -n
221 - fi
222 - else
223 - filler=1
224 - fi
225 - done
226 - # placing options into x
227 - x="${real_path##*/}"
228 - x="`cat "/etc/module_options/${x%.ko*}".* 2>/dev/null`"
229 - ${INSMOD} ${real_path} ${x} > /dev/null 2>&1
230 - ret=$?
231 - if [ ${ret} -eq 0 ]
232 - then
233 - echoAppend=' loaded.'
234 - [ "${2}" = '-n' ] && echoFlags='-n' && echoAppend=', '
235 - echo ${echoFlags} "${1}${echoAppend}"
236 - fi
237 - return $ret
238 -}
239 -
240 -if [ "$#" -lt '1' ]
241 -then
242 - usage
243 -fi
244 -
245 -[ -f '/modules.cache' ] || touch /modules.cache
246 -for x in `cat /modules.cache`
247 -do
248 - LOADED_MODULES="${LOADED_MODULES} ${x}"
249 -done
250 -
251 -modprobe2 ${1}
252 -modprobe_ret=$?
253 -
254 -[ -f '/modules.cache' ] && rm -f /modules.cache > /dev/null 2>&1
255 -for x in ${LOADED_MODULES}
256 -do
257 - echo $x >> /modules.cache
258 -done
259 -
260 -exit $modprobe_ret
261
262 diff --git a/gen_initramfs.sh b/gen_initramfs.sh
263 index af6dff6..784c0cc 100755
264 --- a/gen_initramfs.sh
265 +++ b/gen_initramfs.sh
266 @@ -120,12 +120,26 @@ append_busybox() {
267 chmod +x "${TEMP}/initramfs-busybox-temp/usr/share/udhcpc/default.script"
268
269 # Set up a few default symlinks
270 - for i in ${BUSYBOX_APPLETS:-[ ash sh mount uname echo cut cat}; do
271 - rm -f ${TEMP}/initramfs-busybox-temp/bin/$i > /dev/null
272 + local default_applets="[ ash sh mount uname echo cut cat"
273 + for i in ${BUSYBOX_APPLETS:-${default_applets}}; do
274 + rm -f ${TEMP}/initramfs-busybox-temp/bin/$i
275 ln -s busybox ${TEMP}/initramfs-busybox-temp/bin/$i ||
276 gen_die "Busybox error: could not link ${i}!"
277 done
278
279 + local mod_applets="sbin/modprobe sbin/insmod sbin/rmmod bin/lsmod"
280 + local dir=
281 + local name=
282 + for i in ${mod_applets}; do
283 + dir=$(dirname $i)
284 + name=$(basename $i)
285 + rm -f ${TEMP}/initramfs-busybox-temp/$dir/$name
286 + mkdir -p ${TEMP}/initramfs-busybox-temp/$dir ||
287 + gen_die "Busybox error: could not create dir: $dir"
288 + ln -s ../bin/busybox ${TEMP}/initramfs-busybox-temp/$dir/$name ||
289 + gen_die "Busybox error: could not link ${i}!"
290 + done
291 +
292 cd "${TEMP}/initramfs-busybox-temp/"
293 log_future_cpio_content
294 find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
295 @@ -705,12 +719,6 @@ append_auxilary() {
296 done
297 echo '"' >> "${TEMP}/initramfs-aux-temp/etc/initrd.defaults"
298
299 - if [ -f "${GK_SHARE}/arch/${ARCH}/modprobe" ]
300 - then
301 - cp "${GK_SHARE}/arch/${ARCH}/modprobe" "${TEMP}/initramfs-aux-temp/sbin/modprobe"
302 - else
303 - cp "${GK_SHARE}/defaults/modprobe" "${TEMP}/initramfs-aux-temp/sbin/modprobe"
304 - fi
305 if isTrue $CMD_DOKEYMAPAUTO
306 then
307 echo 'MY_HWOPTS="${MY_HWOPTS} keymap"' >> ${TEMP}/initramfs-aux-temp/etc/initrd.defaults
308 @@ -728,7 +736,6 @@ append_auxilary() {
309 chmod +x "${TEMP}/initramfs-aux-temp/init"
310 chmod +x "${TEMP}/initramfs-aux-temp/etc/initrd.scripts"
311 chmod +x "${TEMP}/initramfs-aux-temp/etc/initrd.defaults"
312 - chmod +x "${TEMP}/initramfs-aux-temp/sbin/modprobe"
313
314 if isTrue ${NETBOOT}
315 then