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