- added btrfsprogs
[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 # lib vs. lib64
26 lib_dir=`echo lib*/libc.so.*`
27 lib_dir=${lib_dir%%/*}
28
29 # - - -  lib/{modules,firmware}  - - -
30 #
31 # all mods ex loop & squashfs
32 #
33 m_dir=`echo lib/modules/*/initrd`
34 [ -d "$m_dir" ] || err "no kernel module dir"
35 mkdir -p "b/$m_dir"
36 for i in loop squashfs ; do
37   [ -f $m_dir/$i.ko ] && mv $m_dir/$i.ko b/$m_dir
38 done
39 mkdir -p a/lib
40 mv lib/modules a/lib
41 [ -d lib/firmware ] && mv lib/firmware a/lib
42 # but NOT udev
43 # [ -d lib/udev ] && mv lib/udev a/lib
44 mv b/lib/modules lib
45 squash a 00_lib
46 rm -rf a b
47
48 # - - -  usr  - - -
49 #
50 # keep libs for linuxrc
51 #
52 mkdir -p "b/usr/$lib_dir"
53 for i in usr/$lib_dir/lib* ; do
54   case $i in *librpm*) continue ;; esac
55   mv $i b/usr/$lib_dir
56 done
57 mkdir -p a
58 mv usr a
59 mv b/usr .
60 squash a 01_usr
61 rm -rf a b
62