source: npl/kernel/initrd/initrd.SlackBuild @ b9261a1

gcc484perl-5.22
Last change on this file since b9261a1 was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100755
File size: 9.3 KB
Line 
1#!/bin/bash
2#Zet hier de dingen bij die je gerebuild wilt hebben bij een nieuwe kernel.
3#NOBUILDROOT
4#DEP:busybox
5#DEP:xfsprogs
6#DEP:linux
7#DEP:linux_src
8#DEP:lvm2
9#DEP:pciutils
10#DEP:udev
11#DEP:hotplug
12#DEP:multipath_tools
13#DEP:splashutils
14#DEP:syn3splash
15#DEP:drbd8
16#DEP:drbd_utils
17##DEP:drv_r1000
18#DEP:drv_e1000e
19##DEP:drv_e1000
20#DEP:synwatchdog
21#DEP:v86d
22#DEP:open_vm_tools
23#DEP:initrd_scripts
24#DEP:util_linux
25#DEP:linkbeep
26#DEP:firmware
27#DEP:fping
28#DEP:network_scripts
29
30##DEP:drv_3w_sas
31##DEP:drv_r8168
32##DEP:drv_r8169
33
34##DEP:cmospwd
35
36#uitgeschakeld, ivm compile problemen:
37##DEP:drv_viafb
38
39
40CWD=`pwd`
41INITROOT=/tmp/initrd.tmp.$$
42
43rm -r $INITROOT &>/dev/null
44mkdir $INITROOT || exit 1
45export ROOT=$INITROOT
46
47##############base packages er in
48installpkg `../../findpkg busybox` || exit 1
49installpkg `../../findpkg glibc_solibs` || exit 1
50installpkg `../../findpkg mdadm` || exit 1
51installpkg `../../findpkg udev` || exit 1
52installpkg `../../findpkg multipath_tools` || exit 1
53installpkg `../../findpkg e2fsprogs` || exit 1
54installpkg `../../findpkg lvm2` || exit 1
55installpkg `../../findpkg drbd8` || exit 1
56installpkg `../../findpkg drbd_utils` || exit 1
57installpkg `../../findpkg xfsprogs` || exit 1
58installpkg `../../findpkg linux` || exit 1
59installpkg `../../findpkg synwatchdog` || exit 1
60installpkg `../../findpkg util_linux` || exit 1
61installpkg `../../findpkg linkbeep` || exit 1
62installpkg `../../findpkg firmware` || exit 1
63
64installpkg `../../findpkg fping` || exit 1
65installpkg `../../findpkg network_scripts` || exit 1 #for fping
66mv $INITROOT/etc/protocols.new $INITROOT/etc/protocols || exit 1
67
68
69#installpkg `../../findpkg hwsetup` || exit 1
70#installpkg `../../findpkg hwdata` || exit 1
71#pci utils NA hwdata, omdat deze nieuwe pci.ids heeft op dit moment
72#installpkg `../../findpkg pciutils` || exit 1
73
74#strip drivers from native kernel
75#bepaalde modules zijn niet nodig, of zelfs ongewenst
76#net WEL omdat we nf_conntrack nodig zijn voor drbd!
77#rm -r $INITROOT/lib/modules/*/kernel/net || exit 1
78rm -r `find $INITROOT/lib/modules/*/kernel/fs/* -type d -not -name '*fat*' -not -name '*cifs*' -not -name '*fscache*'`
79#rm -r $INITROOT/lib/modules/*/kernel/drivers/usb/serial || exit 1
80#rm -r $INITROOT/lib/modules/*/kernel/drivers/usb/storage || exit 1
81#rm -r $INITROOT/lib/modules/*/pcmcia || exit 1
82#wel: is nodig voor cpu throttling enzo: rm -r $INITROOT/lib/modules/*/kernel/drivers/hwmon || exit 1
83#rm -r $INITROOT/lib/modules/*/kernel/drivers/media || exit 1
84#rm -r $INITROOT/lib/modules/*/kernel/drivers/ieee1394 || exit 1
85#rm -r $INITROOT/lib/modules/*/kernel/drivers/parport || exit 1
86#rm -r $INITROOT/lib/modules/*/kernel/drivers/char/agp || exit 1
87#rm -r $INITROOT/lib/modules/*/kernel/drivers/gpu || exit 1
88#rm -r $INITROOT/lib/modules/*/kernel/sound || exit 1
89#rm -r $INITROOT/lib/modules/*/kernel/drivers/bluetooth || exit 1
90#rm -r $INITROOT/lib/modules/*/kernel/net/bluetooth || exit 1
91#rm -r $INITROOT/lib/modules/*/kernel/drivers/input/touchscreen || exit 1
92#rm -r $INITROOT/lib/modules/*/kernel/drivers/char/ppdev.ko || exit 1
93#rm -r $INITROOT/lib/modules/*/kernel/drivers/char/lp.ko || exit 1
94
95
96#extra drivers
97#installpkg `../../findpkg drv_r1000` || exit 1
98installpkg `../../findpkg open_vm_tools` || exit 1
99installpkg `../../findpkg drv_e1000e` || exit 1
100#installpkg `../../findpkg drv_e1000` || exit 1
101#installpkg `../../findpkg drv_viafb` || exit 1
102#installpkg `../../findpkg drv_3w_sas` || exit 1
103#installpkg `../../findpkg drv_r8168` || exit 1
104
105#r8169 8.00 driver is buggy en werkt niet goed met deze kaart:
106#02:00.0 0200: 10ec:8168 (rev 06)
107#02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
108#(workaround gemaakt in initrd_scripts die eerst 8168 laad)
109#installpkg `../../findpkg drv_r8169` || exit 1
110
111
112#splashscreen
113installpkg `../../findpkg syn3splash` || exit 1
114installpkg `../../findpkg splashutils` || exit 1
115#installpkg `../../findpkg freetype2` || exit 1
116#installpkg `../../findpkg libjpeg` || exit 1
117#installpkg `../../findpkg zlib` || exit 1
118installpkg `../../findpkg v86d` || exit 1
119#installpkg `../../findpkg gcc` || exit 1
120
121#installpkg `../../findpkg libtermcap` || exit 1
122#installpkg `../../findpkg bash` || exit 1
123# gebruik bash standaard ipv ash
124#ln -sf bash $INITROOT/bin/sh  || exit 1
125
126#de echte modprobe ivm modaliassen
127#installpkg `../../findpkg module_init_tools` || exit 1
128TGZ=`../../findpkg module_init_tools` || exit 1
129(
130        cd $INITROOT &&
131        tar -xzf "$TGZ" 'sbin/modprobe'
132) || exit 1
133
134#shadow, group, passwd voor udevd
135TGZ=`../../findpkg etc` || exit 1
136(
137        cd $INITROOT &&
138        tar -xzf "$TGZ" etc/passwd.new etc/shadow.new etc/group.new &&
139        mv etc/passwd.new etc/passwd &&
140        mv etc/group.new etc/group &&
141        mv etc/shadow.new etc/shadow
142) || exit 1
143
144#de echte mount ivm norecovery optie
145#TGZ=`../../findpkg util_linux` || exit 1
146#(#
147#       cd $INITROOT &&
148#       tar -xzf "$TGZ" 'bin/mount'
149#) || exit 1
150
151
152################addons
153
154#niet nodig, genzaptelcfg doet dit wel
155#installpkg `../../findpkg zaptel` || exit 1
156#very small and very usefull in debugging
157installpkg `../../findpkg strace` || exit 1
158installpkg `../../findpkg gzip` || exit 1
159#installpkg `../../findpkg cmospwd` || exit 1
160
161#################eject er in
162#TGZ=`../../findpkg bin` || exit 1
163#(
164#       cd $INITROOT
165#       tar -xzf $TGZ usr/bin/eject
166#) || exit 1
167
168#################speciale mount voor netwerk boot.
169#De busybox mount kan geen subdir mounts aan.
170
171#NOTE: zit nu in cifstools package
172#TGZ=`../../findpkg samba` || exit 1
173#(
174#       cd $INITROOT
175#       tar -xzf $TGZ usr/sbin/mount.cifs 
176#) || exit 1
177
178
179###################init scripts er in
180installpkg `../../findpkg initrd_scripts` || exit 1
181
182
183####################lib configuratie
184touch $INITROOT/etc/ld.so.conf
185ldconfig -r $INITROOT || exit 1
186
187#####################bepaal versie (adhv kernel nummer)
188VERSION=`cat ../linux/linux.version` || exit 1
189echo "Version $VERSION"
190
191####################depmod runnen
192#hiervoor moeten we ff tijdelijk depmod installen
193
194# workaround for bug or feature in modprobe. modprobe looks in the 'extra' dir first, but busyboxs modprobe doesnt:
195pushd $INITROOT/lib/modules/$VERSION/extra || exit 1
196for EMOD in *; do
197    OMOD=`find $INITROOT/lib/modules/$VERSION -name $EMOD |grep -v extra`
198    if [ "$OMOD" != "" ];then
199        mv $EMOD $OMOD  || exit 1
200    fi
201done
202popd
203
204
205TGZ=`../../findpkg module_init_tools` || exit 1
206(
207        cd $INITROOT &&
208        tar -xzf $TGZ --wildcards '*sbin/depmod*'
209) || exit 1
210echo "Running depmod..."
211chroot $INITROOT /sbin/depmod -e -a $VERSION  || exit 1
212echo "done"
213
214#depmod kan weer weg
215rm $INITROOT/sbin/depmod*
216
217#####################overbodige zooi eruit strippen
218rm -r $INITROOT/var/log
219rm -r $INITROOT/usr/include
220rm -r $INITROOT/usr/share/locale
221rm -r $INITROOT/usr/man
222rm -r $INITROOT/usr/doc
223rm -r $INITROOT/usr/share/doc
224rm -r $INITROOT/usr/share/man
225rm -r $INITROOT/boot
226rm -r $INITROOT/service 2>/dev/null
227rm `find $INITROOT -type f -name *.static` 2>/dev/null
228rm `find $INITROOT -name *.a` 2>/dev/null
229
230
231
232####################binaries strippen voor als dit nog niet gebeurd is
233echo "stripping binaries"
234pushd $INITROOT
235find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || exit 1
236find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || exit 1
237find  lib/modules/*/kernel -type f | xargs strip --strip-unneeded || exit 1
238popd
239
240##################### ongebruikte libs verwijderen
241USED=used.tmp
242
243
244#bepaal alle GEBRUIKTE libs
245echo "* finding library dependencies"
246echo "Size now:"
247du -hs $INITROOT
248
249find $INITROOT|grep -v dev|while read FILE;do ldd "$FILE" 2>/dev/null;done|sed 's/^\t//g'|sed 's/\..*$//g' |sort|uniq > $USED
250
251#bepaal alle aanwezige libs en wis ze indien niet gebruikt
252echo "* deleting unused libs"
253find $INITROOT -name '*.so*'|while read NAME; do
254        SHORTNAME=`echo "$NAME"|sed 's/.*\///g'|sed 's/\..*$//g'|sed 's/-.*$//g'`
255        if ! grep $SHORTNAME $USED >/dev/null; then
256                rm "$NAME"
257        fi
258done
259rm $USED
260
261echo "Size after:"
262du -hs $INITROOT
263
264
265##################### in een initrd proppen
266#vrije ruimte die ongeveer overblijft:
267#SIZE=`du -s $INITROOT|cut -f 1` || exit 1
268
269#echo "Size van alles files: $SIZE"
270#(( SIZE+=3000 ))
271#echo "* initrd fixen van $SIZE kbytes."
272#mkdir initrd.mnt &>/dev/null
273#umount -l initrd.mnt &>/dev/null
274#dd bs=1024 if=/dev/zero of=$INITROOT.dsk count=$SIZE >/dev/null || exit 1
275#mkfs.ext2 -F $INITROOT.dsk >/dev/null || exit 1
276
277#mount -o loop $INITROOT.dsk initrd.mnt || exit 1
278#if ! cp -a $INITROOT/* initrd.mnt ; then#
279#       umount initrd.mnt
280#       exit 1
281#fi
282#echo "Space usage op initrd:"
283#df -h initrd.mnt
284#sleep 1
285#umount initrd.mnt || exit 1
286
287#fsck.ext2 -n -f $INITROOT.dsk || exit 1
288
289#testen
290if [ "$1" == "test" ]; then
291        echo TESTMODE
292        exit  1
293fi
294
295#rm initrd.gz &>/dev/null
296#gzip -9 $INITROOT.dsk || exit 1
297#mv $INITROOT.dsk.gz initrd.gz || exit 1
298echo "Compressing initrd.gz.."
299( cd $INITROOT ; find . | cpio -o -H newc --quiet | xz --check=crc32 ) > initrd.gz || exit 1
300#( cd $INITROOT ; find . | cpio -o -H newc --quiet | gzip -9 ) > initrd.gz || exit 1
301rm -r "$INITROOT" || exit 1
302
303#################### maak er een nette package van
304PKG=/tmp/initrd
305rm -r $PKG &>/dev/null
306mkdir -p $PKG/boot || exit 1
307mv initrd.gz $PKG/boot/initrd.gz.test || exit 1
308
309#postinstaller
310mkdir -p $PKG/etc/postinst.d
311cp $CWD/post.initrd $PKG/etc/postinst.d || exit 1
312chmod +x $PKG/etc/postinst.d/* || exit 1
313
314
315NAME=initrd
316cd $PKG
317/sbin/makepkg -l y -c n $CWD/$NAME.pkg >/dev/null &&
318echo $VERSION > $CWD/$NAME.version
Note: See TracBrowser for help on using the repository browser.