forked from openSUSE/installation-images
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgefrickel
executable file
·69 lines (57 loc) · 1.3 KB
/
gefrickel
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
#! /bin/bash
#
# move parts of initrd into squashfs images
#
function err {
echo $1
exit 1
}
function squash {
mkdir -p parts
$mksquashfs $1 parts/$2 -comp xz -noappend -no-progress
chmod 644 parts/$2
}
dir=$1
[ -d "$dir" ] || err "$dir: not a directory"
cd $dir
[ -d "parts" ] && { echo "$dir: already gefrickelt" ; exit 1 ; }
[ -x "/usr/bin/mksquashfs" ] && mksquashfs="/usr/bin/mksquashfs"
[ -x "/usr/bin/mksquashfs4" ] && mksquashfs="/usr/bin/mksquashfs4"
[ -z "$mksquashfs" ] && err "mksquashfs missing"
# lib vs. lib64
lib_dir=`echo lib*/libc.so.*`
lib_dir=${lib_dir%%/*}
# - - - lib/{modules,firmware} - - -
#
# all mods ex loop & squashfs
#
m_dir=`echo lib/modules/*/initrd`
[ -d "$m_dir" ] || err "no kernel module dir"
mkdir -p "b/$m_dir"
for i in loop squashfs lz4_decompress ; do
[ -f $m_dir/$i.ko ] && mv $m_dir/$i.ko b/$m_dir
done
mkdir -p a/lib
mv lib/modules a/lib
[ -d lib/firmware ] && mv lib/firmware a/lib
# but NOT udev
# [ -d lib/udev ] && mv lib/udev a/lib
mv b/lib/modules lib
squash a 00_lib
rm -rf a b
# - - - usr - - -
#
# keep libs for linuxrc
#
mkdir -p "b/usr/$lib_dir"
for i in usr/$lib_dir/lib* ; do
case $i in *librpm*) continue ;; esac
mv $i b/usr/$lib_dir
done
mkdir -p b/usr/bin
mv usr/bin/kmod b/usr/bin
mkdir -p a
mv usr a
mv b/usr .
squash a 01_usr
rm -rf a b