53 |
verbose="" |
verbose="" |
54 |
img_vers="" |
img_vers="" |
55 |
builtins="" |
builtins="" |
56 |
modulefile=/etc/modules.conf |
modulefile="/etc/modules.conf" |
57 |
|
modprobeconf="/etc/modprobe.d/*" |
58 |
rc=0 |
rc=0 |
59 |
|
|
60 |
IMAGESIZE=4000 |
IMAGESIZE=4000 |
320 |
fi |
fi |
321 |
} |
} |
322 |
|
|
323 |
|
get_blkid() |
324 |
|
{ |
325 |
|
local UUID |
326 |
|
local SEC_TYPE |
327 |
|
local TYPE |
328 |
|
|
329 |
|
local dev="$1" |
330 |
|
[[ -z ${dev} ]] && die "no dev given" |
331 |
|
|
332 |
|
# check if given device is already an UUID |
333 |
|
if [[ ${dev/UUID=/}x != ${dev}x ]] |
334 |
|
then |
335 |
|
eval "${dev}" |
336 |
|
else |
337 |
|
eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //') |
338 |
|
fi |
339 |
|
echo ${UUID} |
340 |
|
} |
341 |
|
|
342 |
# need r00t privs |
# need r00t privs |
343 |
[[ $(id -u) != 0 ]] && die "you must be r00t." |
[[ $(id -u) != 0 ]] && die "you must be r00t." |
344 |
|
|
473 |
####### get modules ########## |
####### get modules ########## |
474 |
|
|
475 |
echo "Creating ${IMAGE_TYPE} initrd image" |
echo "Creating ${IMAGE_TYPE} initrd image" |
|
modulefile=/etc/modprobe.conf |
|
476 |
|
|
477 |
for n in ${PREMODS} |
for n in ${PREMODS} |
478 |
do |
do |
487 |
for fs in / /boot |
for fs in / /boot |
488 |
do |
do |
489 |
esc=$(echo ${fs} | sed 's,/,\\/,g') |
esc=$(echo ${fs} | sed 's,/,\\/,g') |
490 |
dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//' | cut -d/ -f3) |
dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//') |
491 |
if [ "$(echo ${dev} | cut -c1-2)" = sd ] |
if [ "$(echo ${dev} | cut -c6-7)" = sd ] |
492 |
then |
then |
493 |
if [ $(which kudzu 2>/dev/null) ] |
if [ $(which hwinfo 2>/dev/null) ] |
494 |
then |
then |
495 |
host=$(kudzu --probe -b scsi | |
if [[ -n $(hwinfo --disk --only ${dev} | grep 'Driver Modules' | grep 'usb[_|-]storage') ]] |
|
gawk '/^device: '${dev}'/,/^host:/ { if (/^host/) { print $2; exit; } }') |
|
|
if [ -d /proc/scsi/usb-storage-${host} -o -f /proc/scsi/usb-storage/${host} ] |
|
496 |
then |
then |
497 |
needusb=1 |
needusb=1 |
498 |
fi |
fi |
766 |
module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//") |
module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//") |
767 |
fullmodule=$(echo ${MODULE} | sed "s|.*/||") |
fullmodule=$(echo ${MODULE} | sed "s|.*/||") |
768 |
|
|
769 |
options=$(sed -n -e "s/^options[ ][ ]*${module}[ ][ ]*//p" ${modulefile} 2>/dev/null) |
options=$(sed -n -e "s/^options[ ][ ]*${module}[ ][ ]*//p" ${modprobeconf} 2>/dev/null) |
770 |
|
|
771 |
if [ -n "${options}" ] |
if [ -n "${options}" ] |
772 |
then |
then |
838 |
|
|
839 |
add_initrd 'echo "-- Mounting sysroot ..."' |
add_initrd 'echo "-- Mounting sysroot ..."' |
840 |
add_initrd '. /etc/rootdev' |
add_initrd '. /etc/rootdev' |
|
add_initrd '[ ! -e ${device} ] && mknod ${device} b ${major} ${minor}' |
|
841 |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
842 |
add_initrd 'mount /sysroot || ash' |
add_initrd 'mount /sysroot || ash' |
843 |
|
|
864 |
|
|
865 |
# setup root block device |
# setup root block device |
866 |
[[ -z ${rootdev} ]] && die "no known rootdev found." |
[[ -z ${rootdev} ]] && die "no known rootdev found." |
867 |
echo "device=${rootdev}" > ${DEST}/etc/rootdev || die |
echo "device='UUID=$(get_blkid ${rootdev})'" > ${DEST}/etc/rootdev || die |
868 |
echo "major=$(stat -c %t ${rootdev})" >> ${DEST}/etc/rootdev || die |
echo "rootfs='${rootfs}'" >> ${DEST}/etc/rootdev || die |
|
echo "minor=$(stat -c %T ${rootdev})" >> ${DEST}/etc/rootdev || die |
|
|
echo "rootfs=${rootfs}" >> ${DEST}/etc/rootdev || die |
|
869 |
|
|
870 |
# install detected modules |
# install detected modules |
871 |
echo "Coping your modules to '${DEST}/lib' ..." |
echo "Coping your modules to '${DEST}/lib' ..." |