- adjust to package changes
[opensuse:installation-images.git] / gefrickel
1 #! /bin/bash
2
3 #
4 # move parts of initrd into squashfs images
5 #
6
7 function err {
8   echo $1
9   exit 1
10 }
11
12 function squash {
13   mkdir -p parts
14   $mksquashfs $1 parts/$2 -noappend -no-progress
15   chmod 644 parts/$2
16 }
17
18 dir=$1
19
20 [ -d "$dir" ] || err "$dir: not a directory"
21 cd $dir
22
23 [ -d "parts" ] && { echo "$dir: already gefrickelt" ; exit 1 ; }
24
25 [ -x "/usr/bin/mksquashfs" ] && mksquashfs="/usr/bin/mksquashfs"
26 [ -x "/usr/bin/mksquashfs4" ] && mksquashfs="/usr/bin/mksquashfs4"
27
28 [ -z "$mksquashfs" ] && err "mksquashfs missing"
29
30 # lib vs. lib64
31 lib_dir=`echo lib*/libc.so.*`
32 lib_dir=${lib_dir%%/*}
33
34 # - - -  lib/{modules,firmware}  - - -
35 #
36 # all mods ex loop & squashfs
37 #
38 m_dir=`echo lib/modules/*/initrd`
39 [ -d "$m_dir" ] || err "no kernel module dir"
40 mkdir -p "b/$m_dir"
41 for i in loop squashfs ; do
42   [ -f $m_dir/$i.ko ] && mv $m_dir/$i.ko b/$m_dir
43 done
44 mkdir -p a/lib
45 mv lib/modules a/lib
46 [ -d lib/firmware ] && mv lib/firmware a/lib
47 # but NOT udev
48 # [ -d lib/udev ] && mv lib/udev a/lib
49 mv b/lib/modules lib
50 squash a 00_lib
51 rm -rf a b
52
53 # - - -  usr  - - -
54 #
55 # keep libs for linuxrc
56 #
57 mkdir -p "b/usr/$lib_dir"
58 for i in usr/$lib_dir/lib* ; do
59   case $i in *librpm*) continue ;; esac
60   mv $i b/usr/$lib_dir
61 done
62 mkdir -p a
63 mv usr a
64 mv b/usr .
65 squash a 01_usr
66 rm -rf a b
67