blob: fb3103019126d0248b754d089d21c3f578d98a6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/bin/bash
ALL_KERNELS="all.kernels"
RPMS=/export/Mandrake/RPMS
ARCH=`uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/'`
# move stuff to this new "kernel" directory
if [ ! -d all.kernels ]; then
if [ -d ../all.kernels ]; then
mv ../all.kernels .
rm -rf ../all.modules
else
# make sure "all.kernels" directory exists
mkdir all.kernels
fi
fi
function create_marfile() {
marfile=$1
shift
$GIBASEDIR/mdk-stage1/mar/mar -c $marfile $*
}
function create_modules() {
kernel_path=$1
kern=$2
echo "Updating modules in '`pwd`' for kernel '$kern'"
find $kernel_path/lib/modules/ -name "*.o" -exec cp -f {} . \;
/sbin/depmod -F $kernel_path/boot/System.map* -e *.o | perl -pe 's/\\\n//' \
| perl -ne 's/\.o//g; s/[ \t]+/ /g; print if /: /' > modules.dep
perl -pi -e 's/((plip|ppa|imm): parport)/$1 parport_pc/' modules.dep
/sbin/modinfo -f '%{filename} %{description}\n' *.o | perl -lne 'print "$1\t$2" if /(.*?)\.o "(.*)"/' > modules.description
}
function create_modules_mar() {
echo -n "stripping $kern: "
$GIBASEDIR/kernel/strip_modules *.o 2>/dev/null
echo "done"
echo -n "packdrake $kern: "
ls *.o | packdrake -b9s "modules.cz" 400000
echo "done"
mv modules.cz ../modules.cz-$kern
for i in network network_gigabit_usb network_gigabit network_usb cdrom hd hdcdrom_usb pcmcia all; do
eval "modules=\$${i}_modules_raw"
modules_with_deps=`perl -I $GIBASEDIR/kernel $GIBASEDIR/kernel/dependencies.pl modules.dep $modules`
if [ -n "$MOVE" ]; then modules_with_deps="$modules_with_deps loop.o gzloop.o isofs.o zlib_inflate.o"; fi
eval "create_marfile ${i}_modules.mar $modules_with_deps"
done
echo
}
[ -e $ALL_KERNELS/.main ] && main=$(cat $ALL_KERNELS/.main)
if [ "$ARCH" == "ia64" ] || [ "$ARCH" == "ppc" ]; then
rpm=$(rpm -qp --qf '%{name}' $RPMS/kernel-[0-9]*.rpm | perl -pe 's/kernel-((\.?[0-9]+){3})\.(.*)/$1-${3}/')
else
#- allow specifying a kernel file on commandline (./update_kernel /RPMS/kernel-2.4.22.10mdk-1-1mdk.i586.rpm 2.4.22-10mdk)
if [ -n "$1" ]; then
file=$1
rpm=$2
MOVE=1
else
file=$RPMS/kernel-BOOT-*.rpm
rpm=$(rpm -qp --qf '%{name}' $file | perl -pe 's/kernel-BOOT-((\.?[0-9]+){3})\.(.*)/$1-${3}BOOT/')
fi
fi
if [ -n "$rpm" -a ! -e $ALL_KERNELS/$rpm ]; then
[ -n "$main" ] && rm -rf $ALL_KERNELS/$main
cd $ALL_KERNELS
rm -rf $rpm ; mkdir $rpm
cd $rpm
if [ "$ARCH" == "ia64" ] || [ "$ARCH" == "ppc" ]; then
rpm2cpio $RPMS/kernel-[0-9]*.rpm | cpio -id
else
rpm2cpio $file | cpio -id
fi
find -type f -name "*.o.gz" | xargs gunzip
cd ../..
for dir in /tftpboot /var/lib/tftpboot; do
rm -f $dir/{vmlinuz,network.rdz}
done
fi
[ -n "$main" -a -e $ALL_KERNELS/$main ] || {
cd $ALL_KERNELS
main=$(echo 2.* | sed 's/.* //')
echo "Choosing $main"
echo $main > .main
cd ..
}
if [ "$ARCH" == "i386" ]; then
for i in $ALL_KERNELS/*/boot/vmlinuz*; do
#disable any existing resolution!!!
/usr/sbin/rdev -v $i 65535 #788 #785
done
fi
GIBASEDIR=`pwd`/..
rm -rf all.modules ; mkdir all.modules
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
mkdir all.modules/$kern
cd all.modules/$kern
create_modules ../../$i $kern
) || exit 1
done
cp -f all.modules/$main/modules.description .
l=`perl modules.pl images` || exit 1
eval $l
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
cd all.modules/$kern
if [ "$kern" = "$main" ]; then
create_modules_mar ../../$i $kern
else
echo "$kern ($main)"
create_modules_mar ../../$i $kern 2>/dev/null
fi
) || exit 1
done
./check_mar.pl
|