rev |
line source |
slaxemulator@43
|
1 #!/bin/bash
|
slaxemulator@43
|
2 # Activate a module, while running LiveCD.
|
slaxemulator@43
|
3 # Include it into live directory structure on the fly
|
slaxemulator@43
|
4 #
|
slaxemulator@43
|
5 # Author: Tomas M. <http://www.linux-live.org>
|
slaxemulator@43
|
6
|
slaxemulator@43
|
7
|
slaxemulator@43
|
8
|
slaxemulator@43
|
9 MODULE=$(readlink -f "$1")
|
slaxemulator@43
|
10
|
slaxemulator@43
|
11 if [ "$MODULE" = "" -o ! -e "$MODULE" -o -d "$MODULE" ]; then
|
slaxemulator@43
|
12 echo
|
slaxemulator@43
|
13 echo "Activate a module on the fly while running Linux Live"
|
slaxemulator@43
|
14 echo "Usage: $0 module.lzm"
|
slaxemulator@43
|
15 exit 1
|
slaxemulator@43
|
16 fi
|
slaxemulator@43
|
17
|
slaxemulator@43
|
18 if [ "$(echo $MODULE | fgrep -i .lzm || fgrep -i .xz)" = "" ]; then
|
slaxemulator@43
|
19 echo
|
slaxemulator@43
|
20 echo "$(basename $MODULE): Module must end with .lzm"
|
slaxemulator@43
|
21 exit 2
|
slaxemulator@43
|
22 fi
|
slaxemulator@43
|
23
|
slaxemulator@43
|
24 PATH=.:$(dirname $0):/usr/lib:$PATH
|
slaxemulator@43
|
25 . liblinuxlive || exit 3
|
slaxemulator@43
|
26
|
slaxemulator@43
|
27 allow_only_root
|
slaxemulator@43
|
28 IMAGES=/mnt/live/memory/images
|
slaxemulator@43
|
29 MODULES=/mnt/live/memory/modules
|
slaxemulator@43
|
30
|
slaxemulator@43
|
31 # are we even using union?
|
slaxemulator@43
|
32 if [ "$(grep '^aufs / ' /proc/mounts)" = "" ]; then
|
slaxemulator@43
|
33 echo "not in the live mode, can't continue. Try lzm2dir $MODULE /"
|
slaxemulator@43
|
34 exit 4
|
slaxemulator@43
|
35 fi
|
slaxemulator@43
|
36
|
slaxemulator@43
|
37 mkdir -p "$MODULES"
|
slaxemulator@43
|
38
|
slaxemulator@43
|
39 # Test whether the module file is stored in union
|
slaxemulator@43
|
40 # if yes, then we must move it somewhere else (to RAM) else it can't be added
|
slaxemulator@43
|
41 if [ -e "/mnt/live/memory/changes/$(readlink -f "$MODULE")" ]; then
|
slaxemulator@43
|
42 echo "module file is stored inside the union, moving to $MODULES first..."
|
slaxemulator@43
|
43 TARGET="$MODULES/$(basename "$MODULE")"
|
slaxemulator@43
|
44 mv "$MODULE" "$TARGET"
|
slaxemulator@43
|
45 if [ $? -ne 0 ]; then
|
slaxemulator@43
|
46 echo "error copying module to memory, not enough free RAM? try df" >&2
|
slaxemulator@43
|
47 rm "$TARGET"
|
slaxemulator@43
|
48 exit 6
|
slaxemulator@43
|
49 fi
|
slaxemulator@43
|
50 MODULE="$TARGET"
|
slaxemulator@43
|
51 fi
|
slaxemulator@43
|
52
|
slaxemulator@43
|
53 MOD=$(union_insert_module / "$MODULE" $IMAGES)
|
slaxemulator@43
|
54 if [ $? -ne 0 ]; then echo "error inserting module to live filesystem" >&2; exit 3; fi
|
slaxemulator@43
|
55
|
slaxemulator@43
|
56 # All executables (but symlinks) in /etc/rc.d/init.d/ from this module will be started
|
slaxemulator@43
|
57 # with two arguments: "start" "activate".
|
slaxemulator@43
|
58 # This is done only by the 'activate' script, not in the case when the module is loaded
|
slaxemulator@43
|
59 # during OS startup (in that case, your distro is responsible for execution)
|
slaxemulator@43
|
60 #
|
slaxemulator@43
|
61 # For compatibility, /etc/init.d is also examined, but it's not recommended for you to put your startup scripts
|
slaxemulator@43
|
62 # there in your module
|
slaxemulator@43
|
63
|
slaxemulator@43
|
64 MOD="$IMAGES/$(basename $MOD)"
|
slaxemulator@43
|
65
|
slaxemulator@43
|
66 find_n_run_scripts $MOD start activate
|
slaxemulator@43
|
67
|
slaxemulator@43
|
68 # update ld cache if new ld.so.conf/cache exists in the module
|
slaxemulator@43
|
69 if [ -e "$MOD/etc/ld.so.conf" -o -e "$MOD/etc/ld.so.cache" ]; then
|
slaxemulator@43
|
70 echo "Module contains ld.so.conf or ld.so.cache, updating libs cache..."
|
slaxemulator@43
|
71 /sbin/ldconfig
|
slaxemulator@43
|
72 fi
|