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