ef148b6a61f3724a9a2e54aafa49ed52ab072a7e
[live-boot-grml.git] / backend / initramfs-tools / live.hook
1 #!/bin/sh
2
3 set -e
4
5 . /usr/share/initramfs-tools/hook-functions
6
7 [ "${QUIET}" ] || echo -n "live-boot:"
8
9 # Reading configuration file from filesystem and live-media
10 for _FILE in /etc/live/boot.conf /etc/live/boot/* \
11              /run/live/medium/live/boot.conf /run/live/medium/live/boot/*
12 do
13         if [ -e "${_FILE}" ]
14         then
15                 . "${_FILE}"
16         fi
17 done
18
19 # Grml version information:
20 if [ -r /etc/grml_version ]
21 then
22        cp /etc/grml_version "${DESTDIR}"/etc
23 fi
24
25 # Checking live-boot
26 if [ ! -e /bin/live-boot ]
27 then
28         echo
29         echo "W: live-boot-initramfs-tools (backend) installed without live-boot,"
30         echo "W: this initramfs will *NOT* have live support."
31         exit 0
32 fi
33
34 [ "${QUIET}" ] || echo -n " core"
35
36 mkdir -p "${DESTDIR}/bin"
37 cp -a /bin/live-boot "${DESTDIR}/bin"
38
39 mkdir -p "${DESTDIR}/lib/live"
40 cp -a /lib/live/boot "${DESTDIR}/lib/live"
41
42 mkdir -p "${DESTDIR}/etc/live"
43 if [ -e /etc/live/boot.conf ]
44 then
45         cp -a /etc/live/boot.conf "${DESTDIR}/etc/live"
46 fi
47 if [ -e /etc/live/boot ]
48 then
49         cp -a /etc/live/boot "${DESTDIR}/etc/live"
50 fi
51
52 # klibc dependencies
53 for FILE in /lib/libacl* /lib/libblkid* /lib/libuuid* /lib/libdevmapper* /lib/libattr*
54 do
55         if [ ! -e "${DESTDIR}/${FILE}" ] && ls "${FILE}" > /dev/null 2>&1
56         then
57                 cp -a "${FILE}" "${DESTDIR}/${FILE}"
58         fi
59 done
60
61 # udev dependencies
62 if [ "${MINIMAL:-}" != "true" ] &&  [ "${MINIMAL:-}" != "yes" ]
63 then
64         for FILE in /lib/udev/*_id
65         do
66                 copy_exec "${FILE}"
67         done
68 fi
69
70 if [ -e /lib/udev/rules.d/60-cdrom_id.rules ] && [ "${DISABLE_CDROM:-}" != "true" ] && \
71         [ "${DISABLE_CDROM:-}" != "yes" ]
72 then
73         mkdir -p "${DESTDIR}/lib/udev/rules.d"
74         cp -p /lib/udev/rules.d/60-cdrom_id.rules "${DESTDIR}/lib/udev/rules.d"
75 fi
76
77 [ "${QUIET}" ] || echo -n " filesystems"
78
79 # Configuration: keymap (usefull when using encryption)
80 if [ -x /bin/loadkeys ] && [ -r /etc/console/boottime.kmap.gz ]
81 then
82         copy_exec /bin/loadkeys
83
84         mkdir -p "${DESTDIR}/etc"
85         cp /etc/console/boottime.kmap.gz "${DESTDIR}/etc"
86 fi
87
88 # Configuration: Unique ID
89 if [ -n "${LIVE_GENERATE_UUID}" ]
90 then
91         mkdir -p "${DESTDIR}/conf"
92         uuidgen -r > "${DESTDIR}/conf/uuid.conf"
93 fi
94
95 # Filesystem: btrfs
96 manual_add_modules btrfs
97
98 # Filesystem: cifs
99 if [ -x /sbin/mount.cifs ]
100 then
101         copy_exec /sbin/mount.cifs
102         manual_add_modules cifs
103 fi
104
105 # Filesystem: ext3/ext4
106 manual_add_modules ext3
107 manual_add_modules ext4
108
109 # Filesystem: hfs/hfsplus
110 manual_add_modules hfs
111 manual_add_modules hfsplus
112
113 # Filesystem: jffs2
114 manual_add_modules jffs2
115
116 if [ -x /usr/bin/rsync ] && [ "${MINIMAL:-}" != "true" ] && [ "${MINIMAL:-}" != "yes" ]
117 then
118         copy_exec /usr/bin/rsync /bin
119 fi
120
121 # Filesystem: squashfs
122 copy_exec /sbin/losetup
123 manual_add_modules loop
124 manual_add_modules squashfs
125 manual_add_modules sqlzma
126 manual_add_modules unlzma
127
128 # Filesystem: aufs/overlay
129 manual_add_modules aufs
130 manual_add_modules overlay
131
132 # Filesystem: vfat
133 if [ "${DISABLE_FAT:-}" != "true" ] &&  [ "${DISABLE_FAT:-}" != "yes" ]
134 then
135         manual_add_modules nls_cp437
136         manual_add_modules nls_iso8859-1
137         manual_add_modules nls_utf8
138         manual_add_modules nls_ascii
139         manual_add_modules vfat
140 fi
141
142 # Filesystem: ntfs
143 if [ "${DISABLE_NTFS:-}" != "true" ] && [ "${DISABLE_NTFS:-}" != "yes" ]
144 then
145         manual_add_modules ntfs
146 fi
147
148 [ "${QUIET}" ] || echo -n " devices"
149 # Hardware: cdrom
150 if [ "${DISABLE_CDROM:-}" != "true" ] && [ "${DISABLE_CDROM:-}" != "yes" ]
151 then
152         manual_add_modules ide-cd
153         manual_add_modules ide-generic
154         manual_add_modules ohci1394
155         manual_add_modules sbp2
156         manual_add_modules sr_mod
157 fi
158
159 # Hardware: usb
160 if [ "${DISABLE_USB:-}" != "true" ] && [ "${DISABLE_USB:-}" != "yes" ]
161 then
162         manual_add_modules sd_mod
163 fi
164
165 # Hardware: network
166 auto_add_modules net
167
168 # Program: eject
169 if [ -x /usr/bin/eject ]
170 then
171         copy_exec /usr/bin/eject /bin
172 fi
173
174 [ "${QUIET}" ] || echo -n " utils"
175
176 # Feature: Verify Checksums
177 if [ -e /etc/progress-linux_version ]
178 then
179         copy_exec /usr/bin/sha256sum /bin
180 else
181         copy_exec /usr/bin/md5sum /bin
182 fi
183
184 # Program: memdisk
185 if [ -x /usr/bin/memdiskfind ]
186 then
187 [ "${QUIET}" ] || echo -n " memdisk"
188         copy_exec /usr/bin/memdiskfind
189         manual_add_modules phram
190         manual_add_modules mtdblock
191 fi
192
193 # Program: udev
194 if [ -x /bin/udevadm ]
195 then
196         [ "${QUIET}" ] || echo -n " udev"
197         copy_exec /bin/udevadm
198 fi
199
200 # Program: blockdev
201 if [ -x /sbin/blockdev ]
202 then
203         [ "${QUIET}" ] || echo -n " blockdev"
204         copy_exec /sbin/blockdev
205 fi
206
207 # FUSE kernel module
208 if [ "${DISABLE_FUSE:-n}" != "true" ] && [ "${DISABLE_FUSE:-n}" != "yes" ]
209 then
210         manual_add_modules fuse
211
212         # FUSE filesystem: httpfs2
213         if [ -x /usr/bin/httpfs2_ssl ]
214         then
215                 [ "${QUIET}" ] || echo -n " httpfs:ssl"
216                 copy_exec /usr/bin/httpfs2_ssl /bin/httpfs
217         elif [ -x /usr/bin/httpfs2 ]
218         then
219                 [ "${QUIET}" ] || echo -n " httpfs"
220                 copy_exec /usr/bin/httpfs2 /bin/httpfs
221         fi
222
223         # FUSE filesystem: curlftpfs
224         if [ -x /usr/bin/curlftpfs ]
225         then
226                 [ "${QUIET}" ] || echo -n " ftpfs"
227                 copy_exec /usr/bin/curlftpfs /bin
228         fi
229 fi
230
231 # iSCSI
232 if [ -x /usr/sbin/iscsistart ]
233 then
234         [ "${QUIET}" ] || echo -n " iscsi"
235         copy_exec /usr/sbin/iscsistart /bin
236         #manual_add_modules ib_iser
237         manual_add_modules iscsi_tcp
238         manual_add_modules crc32c
239 fi
240
241 # Some experimental stuff
242
243 [ "${QUIET}" ] || echo -n " dns"
244
245 # /lib/libnss_dns.so.*:a   DNS
246 # /lib/libnss_files.so.*:  /etc/hosts and /etc/passwd
247 # /lib/libnss_compat.so.*: /etc/passwd
248
249 for _SHLIB in $(find /lib -name 'libnss_dns.so.*' -o -name 'libnss_files.so.*')
250 do
251         copy_exec "${_SHLIB}"
252 done
253
254 if [ ! -e "${DESTDIR}/etc/nsswitch.conf" ]
255 then
256         # Needed to make "hostname -f" honor the domainname provided by DHCP
257         echo "hosts: files dns" > "${DESTDIR}/etc/nsswitch.conf"
258 fi
259
260 # vlan support
261 if [ -x /sbin/vconfig ]
262 then
263         copy_exec /sbin/vconfig
264         manual_add_modules 8021q
265 fi
266
267 [ "${QUIET}" ] || echo .