rev |
line source |
spode@0
|
1 #!/bin/sh
|
spode@0
|
2 #
|
pankso@115
|
3 # Tazusb - SliTaz LiveUSB utility to generate, configure and manipulate
|
pankso@115
|
4 # SliTaz LiveUSB bootable media and/or USB /home partition, such as
|
pankso@115
|
5 # flash keys, SD card or USB harddisk.
|
spode@0
|
6 #
|
pascal@156
|
7 # Copyright (C) 2014 SliTaz GNU/Linux - GNU gpl v2
|
pankso@115
|
8 #
|
pankso@115
|
9 # Authors: see AUTHORS file
|
pankso@115
|
10 #
|
al@180
|
11
|
pascal@172
|
12 VERSION=4.2.6
|
erjo@91
|
13
|
pankso@124
|
14 . /lib/libtaz.sh
|
pankso@124
|
15
|
al@180
|
16 # Export package name for gettext.
|
al@180
|
17 export TEXTDOMAIN='tazusb'
|
erjo@91
|
18
|
al@180
|
19 COMMAND="$1"
|
al@180
|
20 TARGET_ROOT='/media/flash'
|
al@180
|
21 DRIVE_NAME="$(grep "drive name" < /proc/sys/dev/cdrom/info | cut -f3)"
|
al@180
|
22 CDROM="/dev/$DRIVE_NAME"
|
al@180
|
23 LOG="/tmp/$(basename $0).log"
|
spode@0
|
24
|
spode@0
|
25
|
spode@0
|
26 #
|
spode@0
|
27 # Tazusb functions
|
spode@0
|
28 #
|
spode@0
|
29
|
al@180
|
30
|
spode@0
|
31 # Print the usage.
|
al@180
|
32
|
al@180
|
33 usage () {
|
al@180
|
34 _ 'SliTaz Live USB - Version: %s' "$VERSION"
|
al@180
|
35 newline
|
al@180
|
36 boldify "$(_n 'Usage:')"
|
al@180
|
37 echo -n ' '; _ '%s [command] [compression|device]' "$(basename $0)"
|
al@180
|
38 boldify "$(_n 'Commands:')"
|
al@180
|
39 optlist "\
|
al@180
|
40 usage $(_ 'Print this short usage.')
|
al@180
|
41 writefs $(_ 'Write the current filesystem to rootfs.gz. Supported compression: lzma, gzip, none.')
|
al@180
|
42 format $(_ 'Format and label device with ext3, ext2 or fat32 filesystem (for LiveUSB or /home). Default is ext3.')
|
al@180
|
43 gen-liveusb $(_ 'Generate a bootable LiveUSB using files from the LiveCD.')
|
al@180
|
44 gen-swap $(_ 'Create or recreate and activate additional swap memory.')
|
al@180
|
45 gen-iso2usb $(_ 'Generate a bootable LiveUSB using files from ISO file.')
|
al@180
|
46 clean $(_ 'Remove old backup filesystems to free disk space.')
|
al@180
|
47 "
|
al@180
|
48 newline
|
spode@0
|
49 }
|
spode@0
|
50
|
al@180
|
51
|
paul@41
|
52 # Display a list of available partitions.
|
al@180
|
53
|
al@180
|
54 fdisk_list() {
|
al@180
|
55 separator '-'
|
hacker@12
|
56 fdisk -l | grep ^/dev/sd*
|
al@180
|
57 separator '-'
|
hacker@12
|
58 }
|
hacker@12
|
59
|
al@180
|
60
|
hacker@12
|
61 # We need a USB media to install.
|
hacker@12
|
62
|
al@180
|
63 ask_for_device() {
|
al@180
|
64 longline "$(_ "Please specify the target USB device to %s. You can type \
|
al@180
|
65 'list' to get a list of devices, type 'exit' or give an empty value to exit." \
|
al@180
|
66 "$COMMAND")"
|
al@180
|
67 newline
|
al@180
|
68 _n 'Device to use: '; read answer
|
al@180
|
69
|
al@180
|
70 while [ "$answer" == 'list' ]; do
|
hacker@12
|
71 fdisk_list
|
al@180
|
72 _n 'Device to use: '; read answer
|
hacker@12
|
73 done
|
al@180
|
74
|
al@180
|
75 if [ -z "$answer" -o "$answer" == 'exit' ]; then
|
al@180
|
76 newline
|
al@180
|
77 _ 'No specified device or exit.'
|
hacker@12
|
78 exit 0
|
hacker@12
|
79 else
|
al@180
|
80 DEVICE="$answer"
|
hacker@12
|
81 fi
|
hacker@12
|
82 }
|
hacker@12
|
83
|
al@180
|
84
|
spode@0
|
85 # Verify a device exists before format or install
|
al@180
|
86
|
al@180
|
87 check_for_device() {
|
al@180
|
88 IFDEV="$(fdisk -l | grep $DEVICE)"
|
spode@9
|
89 if [ -z "$IFDEV" ]; then
|
al@180
|
90 newline
|
al@180
|
91 _ 'Unable to find device %s' "$DEVICE"
|
spode@0
|
92 exit 0
|
spode@0
|
93 fi
|
spode@0
|
94 }
|
spode@0
|
95
|
al@180
|
96
|
paul@41
|
97 # gets the UUID and filesystem type
|
al@180
|
98
|
al@180
|
99 get_part_info() {
|
al@180
|
100 UUID="$(blkid -s UUID -o value $DEVICE)"
|
al@180
|
101 FSTYPE="$(blkid -s TYPE -o value $DEVICE)"
|
spode@0
|
102 }
|
spode@0
|
103
|
al@180
|
104
|
spode@0
|
105 # Format target device and label partition.
|
al@180
|
106
|
al@180
|
107 mkfs_ext3() {
|
al@180
|
108 _n 'Please specify a label for the partition (TazUSB): '
|
spode@0
|
109 read label
|
al@180
|
110
|
al@180
|
111 [ -z "$label" ] && label='TazUSB'
|
al@180
|
112
|
al@180
|
113 _ 'Label: %s' "$label"
|
al@180
|
114 echo "Mkfs: mkfs.ext3 -L \"$label\" $DEVICE"
|
al@180
|
115 newline; sleep 2
|
spode@9
|
116 mkfs.ext3 -L "$label" $DEVICE
|
spode@0
|
117 }
|
spode@0
|
118
|
al@180
|
119
|
paul@77
|
120 # Get label for device
|
al@180
|
121
|
al@180
|
122 get_label() {
|
al@180
|
123 _n 'Please specify a label for the partition (TazUSB): '
|
erjo@47
|
124 read label
|
al@180
|
125 [ -z "$label" ] && label='TazUSB'
|
al@180
|
126 }
|
al@180
|
127
|
al@180
|
128
|
al@180
|
129 # Get fs type. Supported fs are ext3, ext2, fat32
|
al@180
|
130
|
al@180
|
131 get_fs_type() {
|
al@180
|
132 _n 'Please specify a filesystem type ext2, ext3 or fat32 (ext3): '
|
al@180
|
133 read fs_type
|
al@180
|
134 [ -z "$fs_type" ] && fs_type='ext3'
|
al@180
|
135 }
|
al@180
|
136
|
al@180
|
137
|
al@180
|
138 # We can chose the filesystem type.
|
al@180
|
139
|
al@180
|
140 ask_for_fs_type() {
|
al@180
|
141 _ 'Please specify the filesystem type to %s.' "$COMMAND"
|
al@180
|
142 _ 'Available formats are ext3(default), ext2 or fat32.'
|
al@180
|
143 _ 'Press enter to keep the default value.'
|
al@180
|
144 newline
|
al@180
|
145 _n 'File system type: '; read answer
|
al@180
|
146 if [ -z "$answer" ]; then
|
al@180
|
147 FS_TYPE='ext3'
|
al@180
|
148 else
|
al@180
|
149 FS_TYPE="$answer"
|
erjo@47
|
150 fi
|
erjo@47
|
151 }
|
erjo@47
|
152
|
erjo@47
|
153
|
erjo@47
|
154 # Format target device in ext3, ext2 or fat32.
|
erjo@49
|
155 # Usage: make_fs ext2|fat32|ext3 (default)
|
al@180
|
156
|
al@180
|
157 make_fs() {
|
erjo@47
|
158 local answer
|
al@180
|
159
|
al@180
|
160 FS=$(echo $fs_type | tr '[A-Z]' '[a-z]')
|
erjo@47
|
161 case "$FS" in
|
erjo@47
|
162 ext3|ext2)
|
al@180
|
163 newline; _ 'Processing...'
|
al@180
|
164 _ 'Label: %s' "$label"
|
al@180
|
165 echo "Mkfs: mkfs.$FS -L \"$label\" $DEVICE"
|
al@180
|
166 newline; sleep 2
|
al@180
|
167 mkfs.$FS -L "$label" $DEVICE > $LOG 2>&1
|
erjo@47
|
168 ;;
|
al@180
|
169 fat32)
|
al@180
|
170 if [ -x '/sbin/mkdosfs' ];then
|
al@180
|
171 newline; _ 'Processing...'
|
al@180
|
172 _ 'Label: %s' "$label"
|
al@180
|
173 echo "Mkfs: mkdosfs -F 32 -n \"$label\" $DEVICE"
|
al@180
|
174 newline; sleep 2
|
al@180
|
175 mkdosfs -F 32 -n "$label" $DEVICE
|
erjo@47
|
176 else
|
al@180
|
177 _ "Can't find %s tool." 'mkdosfs'
|
al@180
|
178 _n 'Would you like to install %s from repository [y/N]? ' 'dosfstools'
|
al@180
|
179 read answer
|
al@180
|
180 case "$answer" in
|
erjo@47
|
181 y|Y)
|
al@180
|
182 yes | tazpkg get-install dosfstools && make_fs fat32;;
|
erjo@47
|
183 *)
|
erjo@47
|
184 exit 1 ;;
|
erjo@47
|
185 esac
|
erjo@47
|
186 fi
|
erjo@47
|
187 ;;
|
erjo@47
|
188 *)
|
al@180
|
189 _ 'Sorry. Filesystem %s is not supported.' "$FS"
|
al@180
|
190 exit
|
al@180
|
191 ;;
|
erjo@47
|
192 esac
|
erjo@47
|
193 }
|
erjo@47
|
194
|
al@180
|
195
|
spode@0
|
196 # Mount an existing USB device.
|
al@180
|
197
|
al@180
|
198 unmount_target_usb() {
|
spode@0
|
199 # If mount point is in use, unmount
|
erjo@47
|
200 if mount | grep -q $TARGET_ROOT; then
|
spode@0
|
201 umount $TARGET_ROOT
|
spode@0
|
202 fi
|
al@180
|
203
|
spode@0
|
204 # Device could be mounted elsewhere, so unmount
|
erjo@47
|
205 if mount | grep -q $DEVICE; then
|
al@180
|
206 _ 'Unmounting USB target device...'
|
spode@9
|
207 umount $DEVICE
|
spode@0
|
208 fi
|
spode@0
|
209 }
|
spode@0
|
210
|
al@180
|
211
|
spode@0
|
212 # Mount an existing USB device.
|
al@180
|
213
|
al@180
|
214 mount_target_usb() {
|
al@180
|
215 _ 'Mounting USB target device...'
|
spode@0
|
216 mkdir -p $TARGET_ROOT
|
spode@9
|
217 mount $DEVICE $TARGET_ROOT 2>/dev/null
|
spode@0
|
218 }
|
spode@0
|
219
|
al@180
|
220
|
spode@0
|
221 # Mount SliTaz LiveCD to get needed files.
|
al@180
|
222
|
al@180
|
223 mount_cdrom() {
|
al@180
|
224 _ 'Mounting CD-ROM device...'
|
al@180
|
225
|
spode@0
|
226 if mount | grep /media/cdrom; then
|
spode@0
|
227 umount /media/cdrom
|
spode@0
|
228 fi
|
al@180
|
229
|
spode@0
|
230 mkdir -p /media/cdrom
|
hacker@12
|
231 mount -r -t iso9660 $CDROM /media/cdrom 2>/dev/null
|
al@180
|
232
|
pascal@78
|
233 if [ ! -f /media/cdrom/boot/rootfs.gz -a \
|
pascal@78
|
234 ! -f /media/cdrom/boot/rootfs1.gz ]; then
|
al@180
|
235 newline
|
al@180
|
236 longline "$(_ 'Unable to mount CD-ROM or to find a filesystem on it (%s).' 'rootfs.gz')"
|
spode@0
|
237 exit 0
|
spode@0
|
238 fi
|
spode@0
|
239 }
|
spode@0
|
240
|
al@180
|
241
|
erjo@24
|
242 # Mount SliTaz ISO to get needed files.
|
al@180
|
243
|
al@180
|
244 mount_iso() {
|
erjo@24
|
245 if mount | grep /media/cdrom ; then
|
erjo@24
|
246 umount /media/cdrom
|
erjo@24
|
247 fi
|
al@180
|
248
|
erjo@24
|
249 test -d /media/cdrom || mkdir -p /media/cdrom
|
al@180
|
250
|
erjo@34
|
251 # Add support to other distros.
|
al@180
|
252 if [ ! -f /etc/slitaz-version ]; then
|
al@180
|
253 OPTIONS='-o loop'
|
al@180
|
254 else
|
al@180
|
255 OPTIONS=''
|
al@180
|
256 fi
|
al@180
|
257
|
al@180
|
258 _ 'Mounting %s...' "$(basename $ISO)"
|
al@180
|
259 mount $OPTIONS $ISO /media/cdrom 2>/dev/null
|
al@180
|
260
|
pascal@78
|
261 if [ ! -f /media/cdrom/boot/rootfs.gz -a \
|
pascal@78
|
262 ! -f /media/cdrom/boot/rootfs1.gz ]; then
|
al@180
|
263 longline "$(_ 'Unable to mount ISO or to find a filesystem on it (%s).' 'rootfs.gz')"
|
erjo@24
|
264 exit 0
|
erjo@24
|
265 fi
|
erjo@24
|
266 }
|
erjo@24
|
267
|
al@180
|
268
|
al@180
|
269 # All needed files are in the boot directory of the CD-ROM.
|
al@180
|
270
|
al@180
|
271 copy_cdrom_files() {
|
al@180
|
272 _n 'Copying needed files from CD-ROM...'
|
al@180
|
273 mkdir -p $TARGET_ROOT/boot
|
al@180
|
274 cp /media/cdrom/boot/bzImage* $TARGET_ROOT/boot
|
pascal@170
|
275 cp /media/cdrom/boot/rootfs*.gz* $TARGET_ROOT/boot
|
al@180
|
276 cp /media/cdrom/boot/memtest $TARGET_ROOT/boot 2>/dev/null
|
al@180
|
277 cp /media/cdrom/boot/*pxe $TARGET_ROOT/boot 2>/dev/null
|
spode@0
|
278 status
|
spode@0
|
279 }
|
spode@0
|
280
|
al@180
|
281
|
al@180
|
282 install_mbr() {
|
spode@0
|
283 # MBR
|
pankso@11
|
284 DISK=${DEVICE%[1-99]}
|
pascal@22
|
285 if [ -f /usr/share/boot/mbr.bin ]; then
|
al@180
|
286 _n 'Installing a new MBR to %s' "$DISK"
|
pascal@22
|
287 cat /usr/share/boot/mbr.bin > $DISK
|
spode@0
|
288 status
|
spode@0
|
289 else
|
spode@0
|
290 # Skip MBR install (tazpkg get-install syslinux-extra ? and then cat)
|
al@180
|
291 _ 'No new MBR installed to %s' "$DISK"
|
spode@0
|
292 fi
|
spode@0
|
293 }
|
spode@0
|
294
|
al@180
|
295
|
spode@0
|
296 # ext/syslinux install
|
al@180
|
297
|
al@180
|
298 install_boot() {
|
MikeDSmith25@31
|
299 # Decide if we're installing syslinux or extlinux
|
al@180
|
300 if [ "$FSTYPE" == 'vfat' ]; then
|
al@180
|
301 ST='syslinux'
|
pascal@78
|
302 STC="syslinux --install -d /boot/syslinux/ $DEVICE"
|
al@180
|
303 STE='cfg'
|
spode@0
|
304 else
|
al@180
|
305 ST='extlinux'
|
spode@0
|
306 STC="extlinux --install $TARGET_ROOT/boot/$ST"
|
al@180
|
307 STE='conf'
|
spode@0
|
308 fi
|
al@180
|
309
|
al@180
|
310 _ 'Installing bootloader: %s' "$ST"
|
spode@0
|
311 mkdir -p $TARGET_ROOT/boot/$ST
|
spode@0
|
312 $STC
|
al@180
|
313
|
erjo@23
|
314 # Use existing isolinux.cfg for extlinux.conf or syslinux.cfg
|
erjo@23
|
315 cp /media/cdrom/boot/isolinux/isolinux.cfg $TARGET_ROOT/boot/$ST/$ST.$STE
|
al@180
|
316
|
pascal@90
|
317 # Update DVD autoinstall
|
mojo@142
|
318 sed -i "s/LABEL=packages-[^,]*/UUID=$UUID/g" $(grep -l append $TARGET_ROOT/boot/$ST/*)
|
al@180
|
319
|
mojo@141
|
320 # Add home=$UUID to kernel line in extlinux or syslinux.cfg
|
mojo@141
|
321 sed -i -e "s/\(root=.*\)/\1 home=$UUID/" $(grep -l append $TARGET_ROOT/boot/$ST/*)
|
al@180
|
322
|
pankso@16
|
323 # Splash screen and help files.
|
pascal@104
|
324 cp /media/cdrom/boot/isolinux/splash.* $TARGET_ROOT/boot/$ST
|
al@180
|
325 cp /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/$ST
|
al@180
|
326 cp /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/$ST
|
al@180
|
327 cp /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/$ST
|
pankso@114
|
328 sed -i -e s/'SliTaz GNU\/Linux'/'SliTaz GNU\/Linux LiveUSB'/ \
|
pascal@156
|
329 -e "s/isolinux/$ST/" $TARGET_ROOT/boot/$ST/$ST.$STE
|
spode@0
|
330 }
|
spode@0
|
331
|
al@180
|
332
|
spode@0
|
333 # Let user exit or reboot.
|
al@180
|
334
|
al@180
|
335 exit_or_reboot() {
|
pankso@124
|
336 separator
|
al@180
|
337 newline
|
al@180
|
338 longline "$(_n 'Do you want to exit Tazusb or reboot system (Exit/reboot)? ')"
|
al@180
|
339 read answer
|
al@180
|
340 if [ "$answer" == 'reboot' ]; then
|
pankso@124
|
341 unmount_target_usb
|
spode@0
|
342 reboot || reboot -f
|
spode@0
|
343 else
|
pankso@124
|
344 unmount_target_usb
|
al@180
|
345 newline; exit 0
|
spode@0
|
346 fi
|
spode@0
|
347 }
|
spode@0
|
348
|
al@180
|
349
|
al@180
|
350 set_bootable() {
|
spode@0
|
351 # As the boot flag is toggable, need to check it before hand
|
pankso@16
|
352 DISK=${DEVICE%[1-99]}
|
al@180
|
353 ISSET="$(fdisk -l $DISK | grep $DEVICE | grep "\*")"
|
al@180
|
354
|
spode@0
|
355 # If not set, set bootable
|
al@180
|
356 if [ -z "$ISSET" ]; then
|
pankso@16
|
357 umount $TARGET_ROOT 2>/dev/null
|
al@180
|
358 _n 'Setting %s as bootable...' "$DEVICE"
|
pankso@16
|
359 fdisk $DISK >/dev/null << EOF
|
spode@0
|
360 a
|
spode@0
|
361 1
|
spode@0
|
362 w
|
spode@0
|
363 EOF
|
pankso@16
|
364 status
|
spode@0
|
365 fi
|
spode@0
|
366 }
|
spode@0
|
367
|
al@180
|
368
|
paul@41
|
369 # Generate a virtual swap file in /home/swap. SliTaz boot scripts
|
paul@41
|
370 # will activate it, useful for low memory systems
|
pankso@13
|
371
|
al@180
|
372 gen_swap_file() {
|
al@180
|
373 newline
|
al@180
|
374 boldify "$(_n 'Gen swap')"
|
al@180
|
375 separator
|
al@180
|
376 longline "$(_ "Generate a swap file in %s that will be activated on each \
|
al@180
|
377 boot to have more memory available (empty value to exit)." '/home/swap')"
|
al@180
|
378 newline
|
al@180
|
379 _n 'Swap file in MB: '
|
pankso@13
|
380 read size
|
pankso@13
|
381 if [ -z "$size" ]; then
|
al@180
|
382 _ 'Empty value. Exiting...'
|
pankso@13
|
383 exit 0
|
pankso@13
|
384 fi
|
pankso@13
|
385 cd /home
|
pankso@13
|
386 # Sanity check
|
pankso@13
|
387 if [ -f swap ]; then
|
pankso@13
|
388 swapoff swap 2>/dev/null
|
pankso@13
|
389 fi
|
pankso@13
|
390 # DD to gen a virtual disk.
|
pankso@13
|
391 dd if=/dev/zero of=swap bs=1M count=$size
|
pankso@13
|
392 # Make swap filesystem.
|
pankso@13
|
393 mkswap swap
|
pankso@13
|
394 swapon swap
|
al@180
|
395 newline
|
pankso@13
|
396 }
|
pankso@13
|
397
|
al@180
|
398
|
paul@26
|
399 # Clean out old backups to save disk space
|
al@180
|
400
|
al@180
|
401 clean_usb() {
|
al@180
|
402 newline
|
al@180
|
403 boldify "$(_n 'Clean')"
|
al@180
|
404 separator
|
al@180
|
405 longline "$(_n 'Remove old %s backup filesystems to free up disk space.' \
|
al@180
|
406 'rootfs.gz.unixtimestamp')"
|
al@180
|
407 newline
|
MikeDSmith25@31
|
408 # Locate and interactively remove old filesystems from /home directory
|
al@180
|
409 for file in $(find /home/boot/rootfs.gz.[0-9]*); do
|
al@180
|
410 _n 'Do you wish to remove: %s (Yes/no/exit)? ' "$(basename $file)"
|
paul@26
|
411 read answer
|
paul@26
|
412 case $answer in
|
paul@26
|
413 e|E|"exit"|Exit)
|
paul@26
|
414 exit 0 ;;
|
paul@26
|
415 y|Y|yes|Yes)
|
paul@26
|
416 rm -f $file ;;
|
paul@26
|
417 *)
|
al@180
|
418 _ 'No filesystems selected, exiting...' ;;
|
paul@26
|
419 esac
|
paul@26
|
420 done
|
paul@26
|
421 }
|
paul@26
|
422
|
al@180
|
423
|
spode@0
|
424 #
|
spode@0
|
425 # Tazusb sequence
|
spode@0
|
426 #
|
spode@0
|
427
|
spode@0
|
428 case $COMMAND in
|
spode@0
|
429 writefs)
|
MikeDSmith25@31
|
430 # Writefs to rootfs.gz
|
spode@0
|
431 check_root
|
al@180
|
432 if [ -z "$2" ]; then
|
al@180
|
433 COMPRESSION='none'
|
spode@0
|
434 else
|
al@180
|
435 COMPRESSION="$2"
|
spode@0
|
436 fi
|
MikeDSmith25@31
|
437 # Start info
|
al@180
|
438 title 'Write filesystem'
|
al@180
|
439
|
al@180
|
440 longline "$(_ "The command writefs will write all the current \
|
al@180
|
441 filesystem into a suitable cpio archive (%s) usable on a bootable \
|
al@180
|
442 LiveUSB media." 'rootfs.gz')"
|
pankso@151
|
443 newline
|
al@180
|
444 _ 'Archive compression: %s' "$(colorize 36 "$COMPRESSION")"
|
spode@0
|
445
|
MikeDSmith25@31
|
446 # Clear out tazpkg cache
|
psychomaniak@179
|
447 rm /var/lib/tazpkg/*.bak /var/cache/tazpkg/* -r -f
|
spode@0
|
448
|
pankso@151
|
449 # Optionally remove sound card selection and screen resolution.
|
al@180
|
450 _ 'Do you wish to remove the sound card and screen configs?'
|
al@180
|
451 _n 'Press ENTER to keep or answer (No|yes|exit): '
|
pankso@5
|
452 read anser
|
pankso@5
|
453 case $anser in
|
pankso@5
|
454 e|E|"exit"|Exit)
|
pankso@35
|
455 exit 0 ;;
|
pankso@5
|
456 y|Y|yes|Yes)
|
al@180
|
457 _n 'Removing current sound card and screen configurations...'
|
pankso@5
|
458 rm -f /var/lib/sound-card-driver
|
pankso@151
|
459 rm -f /var/lib/alsa/asound.state
|
pankso@151
|
460 rm -f /etc/X11/xorg.conf ;;
|
pankso@5
|
461 *)
|
al@180
|
462 _n 'Keeping current sound card and screen configurations...' ;;
|
pankso@35
|
463 esac
|
al@180
|
464 status
|
al@180
|
465 newline
|
al@180
|
466
|
pankso@150
|
467 # Optionally remove i18n settings
|
al@180
|
468 _ 'Do you wish to remove local/keymap settings?'
|
al@180
|
469 _n 'Press ENTER to keep or answer (No|yes|exit): '
|
pankso@149
|
470 read anser
|
pankso@149
|
471 case $anser in
|
pankso@149
|
472 e|E|"exit"|Exit)
|
pankso@149
|
473 exit 0 ;;
|
pankso@149
|
474 y|Y|yes|Yes)
|
al@180
|
475 _n 'Removing current locale/keymap settings...'
|
al@180
|
476 echo > /etc/locale.conf
|
al@180
|
477 echo > /etc/keymap.conf ;;
|
pankso@149
|
478 *)
|
al@180
|
479 _n 'Keeping current locale/keymap settings...'
|
al@180
|
480 grep -qs '^INCLUDE i18n.cfg' /home/boot/*linux/*linux.c* &&
|
al@180
|
481 sed -i 's/^INCLUDE i18n.cfg/# &/' /home/boot/*linux/*linux.c* ;;
|
pankso@149
|
482 esac
|
pankso@149
|
483 status
|
al@180
|
484
|
pankso@149
|
485 # Clean-up files by default
|
psychomaniak@179
|
486 mv -f /var/log/wtmp /tmp/tazusb-wtmp
|
psychomaniak@179
|
487 touch /var/log/wtmp
|
al@180
|
488 echo > /etc/udev/rules.d/70-persistent-net.rules
|
al@180
|
489 echo > /etc/udev/rules.d/70-persistant-cd.rules
|
al@180
|
490
|
MikeDSmith25@31
|
491 # Create list of files
|
pascal@156
|
492 # find / -xdev | sed '/^\/home\//d;/^\/tmp\//d' >/tmp/list
|
pascal@156
|
493 # for dev in console null tty tty1
|
pascal@156
|
494 # do
|
pascal@156
|
495 # echo /dev/$dev >>/tmp/list
|
pascal@156
|
496 # done
|
pascal@156
|
497
|
pascal@178
|
498 find /bin /etc /init /sbin /var /dev /lib /root /usr /opt >/tmp/list
|
spode@0
|
499
|
pascal@147
|
500 for dir in /home /proc /run /sys /tmp /mnt /media /media/cdrom /media/flash /media/usbdisk
|
spode@0
|
501 do
|
spode@0
|
502 echo $dir >>/tmp/list
|
spode@0
|
503 done
|
pascal@166
|
504 sed -i '/^\/var\/run\/.*pid$/d' /tmp/list
|
spode@0
|
505
|
pascal@178
|
506 for removelog in auth boot messages dmesg daemon utmp slim Xorg ; do
|
psychomaniak@173
|
507 sed -i "\/var\/log\/$removelog/d" /tmp/list
|
psychomaniak@173
|
508 done
|
psychomaniak@173
|
509
|
MikeDSmith25@31
|
510 # Generate initramfs with specified compression
|
al@180
|
511 if [ "$COMPRESSION" == 'lzma' ]; then
|
al@180
|
512 _n 'Creating %s with lzma compression... ' 'rootfs.gz'
|
pascal@156
|
513 cpio -o -H newc | lzma e -si -so > /rootfs.gz
|
spode@0
|
514
|
al@180
|
515 elif [ "$COMPRESSION" == 'gzip' ]; then
|
al@180
|
516 _n 'Creating %s with gzip compression... ' 'rootfs.gz'
|
pascal@156
|
517 cpio -o -H newc | gzip -9 > /rootfs.gz
|
spode@0
|
518
|
spode@0
|
519 else
|
al@180
|
520 _n 'Creating %s without compression... ' 'rootfs.gz'
|
pascal@156
|
521 cpio -o -H newc > /rootfs.gz
|
pascal@156
|
522 fi < /tmp/list
|
spode@0
|
523
|
psychomaniak@179
|
524 mv -f /tmp/tazusb-wtmp /var/log/wtmp
|
psychomaniak@179
|
525
|
MikeDSmith25@31
|
526 # Get initramfs size
|
al@180
|
527 size=$(du -sh /rootfs.gz | cut -f1)
|
spode@0
|
528
|
MikeDSmith25@31
|
529 # If the bootable medium is where it should be, copy across
|
spode@0
|
530 if (test -e /home/boot/bzImage); then
|
al@180
|
531 longline "$(_ 'Moving %s to media. Remember to unmount for delayed writes!' 'rootfs.gz')"
|
spode@0
|
532
|
MikeDSmith25@31
|
533 # Move the old filesystem with the unix timestamp for reference
|
spode@0
|
534 if (test -e /home/boot/previous.gz); then
|
spode@0
|
535 mv /home/boot/previous.gz /home/boot/rootfs.gz.$(date +%s)
|
spode@0
|
536 fi
|
spode@0
|
537
|
spode@0
|
538 mv /home/boot/rootfs.gz /home/boot/previous.gz
|
spode@0
|
539 mv /rootfs.gz /home/boot/.
|
spode@0
|
540 else
|
al@180
|
541 _ '%s is located in /' 'rootfs.gz'
|
spode@0
|
542 fi
|
spode@0
|
543
|
pankso@124
|
544 separator
|
al@180
|
545 _ 'Root filesystem size: %s' "$size"
|
al@180
|
546 separator '-'
|
al@180
|
547 _n 'ENTER to continue...'; read i
|
spode@0
|
548 ;;
|
al@180
|
549
|
al@180
|
550
|
spode@0
|
551 format)
|
paul@54
|
552 # Format a partition.
|
spode@0
|
553 check_root
|
al@180
|
554
|
al@180
|
555 title 'Format a device'
|
al@180
|
556
|
al@180
|
557 DEVICE="$2"
|
al@180
|
558 label="$3"
|
al@180
|
559 fs_type="$4"
|
al@180
|
560 if [ -z "$DEVICE" ]; then
|
hacker@12
|
561 ask_for_device
|
hacker@12
|
562 check_for_device
|
hacker@12
|
563 else
|
al@180
|
564 _ 'Device: %s' "$DEVICE"
|
spode@0
|
565 fi
|
al@180
|
566 [ -z "$fs_type" ] && get_fs_type
|
paul@54
|
567 get_label
|
al@180
|
568 unmount_target_usb
|
erjo@47
|
569 make_fs "$fs_type"
|
paul@77
|
570 # mkfs_ext3
|
pankso@124
|
571 separator
|
al@180
|
572 longline "$(_ 'Device %s is ready to use as LiveUSB and/or /home partition.' "$label ($DEVICE)")"
|
spode@0
|
573 ;;
|
al@180
|
574
|
al@180
|
575
|
spode@0
|
576 gen-liveusb)
|
spode@0
|
577 # Generate a LiveUSB media using files from a LiveCD.
|
spode@0
|
578 check_root
|
al@180
|
579
|
al@180
|
580 title 'Gen a LiveUSB media'
|
al@180
|
581
|
al@180
|
582 DEVICE="$2"
|
al@180
|
583 if [ -z "$DEVICE" ]; then
|
hacker@12
|
584 ask_for_device
|
spode@0
|
585 fi
|
al@180
|
586
|
spode@0
|
587 check_for_device
|
pankso@11
|
588 mount_cdrom
|
spode@0
|
589 get_part_info
|
spode@0
|
590 unmount_target_usb
|
spode@0
|
591 install_mbr
|
spode@0
|
592 set_bootable
|
spode@0
|
593 mount_target_usb
|
spode@0
|
594 copy_cdrom_files
|
spode@0
|
595 install_boot
|
spode@0
|
596 exit_or_reboot
|
spode@0
|
597 ;;
|
al@180
|
598
|
al@180
|
599
|
pankso@13
|
600 gen-swap)
|
pankso@13
|
601 check_root
|
al@180
|
602 gen_swap_file
|
al@180
|
603 ;;
|
al@180
|
604
|
al@180
|
605
|
erjo@47
|
606 gen-iso2usb|iso2usb)
|
erjo@24
|
607 check_root
|
erjo@24
|
608 # Check if file exists
|
al@180
|
609 ISO="$2"
|
al@180
|
610 if [ -z "$ISO" -o ! -f "$ISO" ]; then
|
al@180
|
611 _ 'Please specify a valid filename on the command line.'
|
erjo@24
|
612 exit 1
|
erjo@24
|
613 fi
|
al@180
|
614
|
al@180
|
615 title 'Copy ISO file to SliTaz LiveUSB media'
|
al@180
|
616
|
al@180
|
617 DEVICE="$3"
|
al@180
|
618 if [ -z "$DEVICE" ]; then
|
erjo@24
|
619 ask_for_device
|
erjo@24
|
620 fi
|
erjo@24
|
621 check_for_device
|
erjo@24
|
622 mount_iso
|
erjo@24
|
623 get_part_info
|
erjo@24
|
624 unmount_target_usb
|
erjo@24
|
625 install_mbr
|
erjo@24
|
626 set_bootable
|
erjo@24
|
627 mount_target_usb
|
erjo@24
|
628 copy_cdrom_files
|
erjo@24
|
629 install_boot
|
pascal@83
|
630 umount /media/cdrom
|
pankso@66
|
631 losetup -d /dev/loop0
|
erjo@24
|
632 exit_or_reboot
|
al@180
|
633 ;;
|
al@180
|
634
|
al@180
|
635
|
paul@26
|
636 clean)
|
paul@28
|
637 check_root
|
paul@28
|
638 clean_usb
|
al@180
|
639 ;;
|
al@180
|
640
|
al@180
|
641
|
spode@0
|
642 usage|*)
|
spode@0
|
643 # Display usage by default.
|
spode@0
|
644 usage
|
spode@0
|
645 ;;
|
spode@0
|
646 esac
|
spode@0
|
647
|
spode@0
|
648 exit 0
|