# HG changeset patch # User Christophe Lincoln # Date 1335636984 -7200 # Node ID 0a831f1f1b51e64a7e425a9c1b900e70981fd14e # Parent b4c3846a03c1252040aa822f10ca55d1165a8adf Moved all mountbox, burnbox, bootfloppybox to oldstuff/gtkdialog diff -r b4c3846a03c1 -r 0a831f1f1b51 doc/burnbox.en.html --- a/doc/burnbox.en.html Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ - - - - Burnbox Manual - - - - - - - - -
- -

About

-

-Burnbox supports: -

- - -

General Device Settings

-

-In the last tab, make sure the cdrom settings are correct (Device:/dev/cdrom; Speed (auto-detected): 48; Options: ). -Input is taken from the DEVICE settings. -

- -

Blank CD/DVD-RW

-

-Use Blank disk to erase contents and prepare for burning. -

- -

Iso Burning

-

-This is supported in the third tab. -

- -

-You can also create or manipulate ISO images with the ISO Master utility. -

- -

Backup of data and audio CD

-

-This is supported in the second tab. Optional package cdrkit-isoinfo may help to improve the burn speed. -

- -

-Audio CD ripping is supported using the asunder package. -

- -

Data CD/DVD burning

-

-This is supported in the First tab. One can specify the burn type before adding files. -Depending upon the burn type, the files are decoded on the fly. -One can remove the added files by simply double-clicking on the file in the tree view. -Total track size shows the CD/DVD space occupied. -

- - - -

Audio CD burning

-

-This is supported in the first tab. WAV, OGG, MP3 files are supported. -OGG and MP3 are automatically converted into an uncompressed WAV format for burning. -

- - -

Video CD (VCD/SVCD) burning

-

-This is supported in the first tab. Only burning mpg video format is supported directly: MPEG-1 video for vcd and MPEG-2 for svcd and dvd. -AVI, MOV, FLV, WMV videos are automatically converted into a VCD/SVCD/DVD compatible mpg video format. -

- - -

Common Problems

- - - -
- - - diff -r b4c3846a03c1 -r 0a831f1f1b51 doc/burnbox.fr.html --- a/doc/burnbox.fr.html Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ - - - - Documentation de Burnbox - - - - - - - - -
- -

A propos

-

-Possibilités de Burnbox: -

- - -

Configuration générale des périphériques

-

-Dans le dernier onglet, assurez-vous que les paramètres sont correctes (Pilote:/dev/cdrom; Vitess (auto-detected): 48; Options: ). -Les informations sont récupérées depuis la variable DEVICE. -

- -

Effacer CD/DVD-RW

-

-Utilisez Blank disk pour effacer un média. -

- -

Graver une ISO

-

-Cliquez sur le troisième onglet. -

- -

-Vous pouvez créér ou modifier des images ISO avec l'outil ISO Master. -

- -

Sauvegarde de données et de CD audio

-

-Ceci est pris en charge dans le deuxième onglet. Le paquet cdrkit-isoinfo (optionnel) peut vous aider à améliorer la vitesse d'enregistrement. -

- -

- -l'extraction de CD audio est prise en charge en utilisant le paquet Asunder. -

- -

Enregistrement des données sur CD/DVD

-

-Ceci est pris en charge dans le premier onglet. On peut spécifier le type de gravure avant d'ajouter des fichiers. -Selon le type de gravure, les fichiers sont déchiffrés à la volée. -On peut supprimer les fichiers ajoutés simplement en double-cliquant sur le fichier dans l'arborescence. -La taille de la piste Total indique l'espace occupé sur le CD / DVD. -

- - - -

Enregistrement de CD audio

-

-Ceci est pris en charge dans le premier onglet. les formats WAV, OGG, MP3 sont supportés. -Les fichiers OGG et MP3 sont automatiquement convertis et décompressé au format WAV pour la gravure. -

- - -

Enregistrement de video sur CD (VCD/SVCD)

-

-Ceci est pris en charge dans le premier onglet. Seul le format MPG est directement pris en charge: vidéo MPEG-1 pour VCD et MPEG-2 pour SVCD et DVD. -Les formats AVI, MOV, FLV, WMV vidéos sont automatiquement converties en un VCD/SVCD/DVD compatible avec le format vidéo mpg. -

- - -

Problèmes fréquents

- - - -
- - - diff -r b4c3846a03c1 -r 0a831f1f1b51 doc/burnbox.html --- a/doc/burnbox.html Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -burnbox.en.html \ No newline at end of file diff -r b4c3846a03c1 -r 0a831f1f1b51 doc/burnbox.pt_BR.html --- a/doc/burnbox.pt_BR.html Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ - - - - Manual do Burnbox - - - - - - - - -
- -

Sobre

-

- O Burnbox suporta: -

- - -

Configurações de Dispositivo

-

-Assegure-se de que o drive de cdrom está configurado corretamente -na primeira aba do programa (device: /dev/cdrom, speed (auto-detected): 48; -Options: ). A entrada é definida a partir da configuração do DEVICE (dispositivo). -

- -

Apagar CD/DVD-RW

-

-Use a opção Blank disk para apagar o conteúdo de um cd ou -dvd regravável e prepará-lo para gravação.

- -

Gravação de Imagens ISO

-

-Utilize a segunda aba para gravações de imagem ISO. -

- -

-Você pode criar ou manipular imagens ISO com o aplicativo ISO Master. -

- -

Backup de dados e CD de áudio

-

-Utilize a segunda aba. O pacote opcional cdrkit-isoinfo -pode ajudar a aumentar as velocidades de gravação. -

- -

-A extração de faixas de áudio de CDs é possível com o aplicativo Asunder. -

- -

Gravação de CD/DVD de dados

-

-Você encontra esta opção na terceira aba. Pode-se especificar o tipo de -gravação antes de adiciona os arquivos. Dependendo do tipo de gravação -escolhido, os arquivos são decodificados durante a execução do programa. -Pode-se remover arquivos simplesmente clicando no nome do arquivo na -visão de pastas em árvore. A informação "total track size" mostra o -quanto o CD/DVD está ocupado. -

- - - -

Gravação de CDs de áudio

-

-Você encontra esta opção na terceira aba. São suportados arquivos WAV, OGG -e MP3. OGG e MP3 são convertidos automaticamente em arquivos WAV sem -compressão para a gravação. -

- - -

Gravação de Video CD (VCD/SVCD)

-

-Você encontra esta opção na terceira aba. Somente a gravação de vídeos -no formato mpg são suportados diretamente: MPEG-1 para VCD e MPEG-2 -para SVCD e DVD. Arquivos AVI, MOV, FLV e WMV são automaticamente -convertidos para mpg compatível com VCD/SVCD/DVD. -

- - -

Problemas comuns

- - - -
- - - diff -r b4c3846a03c1 -r 0a831f1f1b51 lib/libmountbox --- a/lib/libmountbox Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,675 +0,0 @@ -#!/bin/sh -# -# Libmountbox provides devices list in suitable format for GTK tree -# and various dialog boxes to mount, umount, etc. -# -# (C) 2009 - SliTaz GNU/Linux project. -# - -# Short usage. -usage() -{ - echo -e "\nUsage: $0 command\n -Output commands: - list-mounted List all mounted devices in a suitable GTK tree format. - list-umounted List all umounted in a suitable GTK tree format. - create-file Create an empty file with predefined size. - add-old-crypto Create loop-eas device. - remove-crypto Delete a crypto device. - -GTKdialog boxes - mounted-fs-infos Display mounted devices info with actions. - umounted-fs-infos Display umounted devices info with actions. - remove-loop Confirmation box. - new-file Parameter box for file creation. - cryptomgr Manage crypto device with devmapper. - add-crypto Pass phrase dialog.\n" -} - -# Format df -h output for GTK tree. -mounted_fs_data() -{ - SIZE=`echo $RES | cut -d " " -f 2` - USED=`echo $RES | cut -d " " -f 3` - AVAILABLE=`echo $RES | cut -d " " -f 4` - PCT=`echo $RES | cut -d " " -f 5` - MOUNTED_ON=`echo $RES | cut -d " " -f 6` -} - -# Update BLOCKS SIZE UUID TYPE LABEL variables -getdevinfo() -{ - local dev - dev=${1#/dev/} - BLOCKS=0 - if [ -f /sys/block/$dev/size ]; then - BLOCKS=`cat /sys/block/$dev/size` - elif [ -f /sys/block/*/$dev/size ]; then - BLOCKS=`cat /sys/block/*/$dev/size` - fi - if [ $BLOCKS -gt 2097152 ]; then - unit=G - n=$(($BLOCKS * 10 / 2097152)) - elif [ $BLOCKS -gt 2048 ]; then - unit=M - n=$(($BLOCKS * 10 / 2048)) - else - unit=K - n=$(($BLOCKS * 5)) - fi - SIZE=$(($n/10)).$(($n%10))$unit - UUID=`blkid | grep ^/dev/$dev: | grep UUID= | sed 's/.*UUID=\"\([^\"]*\)\".*/\1/'` - TYPE=`blkid | grep ^/dev/$dev: | grep TYPE= | sed 's/.*TYPE=\"\([^\"]*\)\".*/\1/'` - LABEL=`blkid | grep ^/dev/$dev: | grep LABEL= | sed 's/.*LABEL=\"\([^\"]*\)\".*/\1/'` -} - -# Generate label for device manager -dmlabel() -{ - echo crypto-$(basename $1) -} - -unwrap() -{ -awk '{ - if ($2 == "") last=$1; - else { - print last $0 - last="" - } -}' -} - -case $1 in - list-mounted) - # List all fs found by: df -h - # - for dev in `df -h | grep ^/dev/ | cut -d " " -f 1` - do - RO='read-only' - mount | grep $dev | grep -q '(rw' && RO='' - RES=`df -h $dev | unwrap | grep ^$dev` - mounted_fs_data - echo "$dev | $SIZE | $USED | $AVAILABLE | $PCT | $MOUNTED_ON | $RO" - done ;; - list-umounted) - # List all umounted fs found by: fdisk -l - # - for dev in `fdisk -l | grep ^/dev | cut -d " " -f 1` - do - RES=`fdisk -l | grep $dev | sed s/*//g` - START=`echo $RES | cut -d " " -f 2` - END=`echo $RES | cut -d " " -f 3` - BLOCKS=`echo $RES | cut -d " " -f 4` - ID=`echo $RES | cut -d " " -f 5` - SYSTEM=`echo $RES | cut -d " " -f 6-` - # Bootable... - if fdisk -l | grep $dev | grep -q "*"; then - BOOT="yes" - else - BOOT="-" - fi - # Skip swap, extended, and mounted partitions. - if echo $RES | grep -q "swap" || echo $RES | grep -q "Extended" ; then - continue - elif mount | grep -q "^$dev "; then - continue - else - getdevinfo $dev - echo "$dev | $SIZE | $SYSTEM | $TYPE | $LABEL | $BOOT | $START | $END | $BLOCKS | $ID | $UUID" - fi - done - for dev in /dev/mapper/* ; do - [ -b $dev ] || continue - mount | grep -q "^$dev " && continue - mdev=dm-$(ls -l $dev | awk '{ print $6 }') - mount | grep -q "^/dev/$mdev " && continue - getdevinfo /dev/$mdev - echo "$dev | $SIZE | - | $TYPE | $LABEL | - | - | - | $BLOCKS | - | $UUID" - done - for dev in $(losetup | cut -d: -f1); do - [ -b $dev ] || continue - mount | grep -q "^$dev " && continue - getdevinfo $dev - echo "$dev | $SIZE | - | $TYPE | $LABEL | - | - | - | $BLOCKS | - | $UUID" - done - [ -e /dev/cdrom ] && - echo "/dev/cdrom | - | CD/DVD | iso9660 | - | - | - | - | - | - | -" - for i in /sys/devices/platform/floppy.*/block:*; do - [ -e $i ] && echo "/dev/${i#*block:} | - | - | - | floppy | - | - | - | - | -" - done - ;; - mounted-fs-infos) - # Mounted fs info and actions, rootfs or other fs. - # - if [ "$MOUNTED" == "/dev/root" ]; then - export MOUNTED_DEVICE=" - - - - - - - df -h / | grep ^rootfs - - - - - - -" - gtkdialog --center --program=MOUNTED_DEVICE - else - getdevinfo $MOUNTED - RES=`df -h $MOUNTED | grep ^$MOUNTED` - mounted_fs_data - export MOUNTED_DEVICE=" - - - - - - - " -if mount | grep $MOUNTED_ON | grep -q '(rw'; then - MOUNTED_DEVICE="$MOUNTED_DEVICE - " -else - MOUNTED_DEVICE="$MOUNTED_DEVICE - " -fi -MOUNTED_DEVICE="$MOUNTED_DEVICE - - - - -" - gtkdialog --center --program=MOUNTED_DEVICE - fi ;; - umounted-fs-infos) - # Mounted fs info and actions, rootfs or other fs. - # - case "$DEVICE" in - /dev/mapper/*) mdev=/dev/dm-$(ls -l $DEVICE | awk '{ print $6 }');; - *) mdev=$DEVICE;; - esac - getdevinfo $mdev - export UMOUNTED_DEVICE=" - - - - - - - - - " -while read type fsck args; do - [ "$TYPE" == "$type" ] || continue - which $fsck > /dev/null || continue -UMOUNTED_DEVICE="$UMOUNTED_DEVICE - " -done < - UMOUNTED_DEVICE - - - -" - gtkdialog --center --program=UMOUNTED_DEVICE ;; - loopmgr) - export LOOP_MANAGER=" - - - - 420120 - LOOP_DEV - " - while read dev offset file; do - DEV=$(echo $dev | cut -d: -f1) - [ -b "$DEV" ] || continue - MOUNT=$(mount | grep ^$DEV | awk '{ print $3 }') - getdevinfo $DEV - LOOP_MANAGER="$LOOP_MANAGER - $DEV | $file | $SIZE | $TYPE | $LABEL | $MOUNT | $offset | $UUID -" - done <LOOP_MANAGER - - - - - - - FILE - - - - - - - - - 0 - OFFSET - - - - - - - -" - gtkdialog --center --program=LOOP_MANAGER ;; - remove-loop) - getdevinfo $LOOP_DEV - export REMOVE_DEVICE=" - - - - - - - - - - -" - gtkdialog --center --program=REMOVE_DEVICE ;; - create-file) - file=$2 - size=$3 - [ -n "$file" -a -n "$size" ] || exit - [ "$4" == "true" ] && bs="1K" - [ "$5" == "true" ] && bs="1M" - [ "$6" == "true" ] && bs="1024M" - [ "$8" == "true" ] && dev="/dev/zero count=$size" - [ "$9" == "true" ] && dev="/dev/urandom count=$size" - [ "$10" == "true" ] && dev="/dev/zero seek=$size count=0" - if [ "$7" != "true" -a -e "$file" ]; then - export FILE_EXIST=" - - - - - - - - - - - -" - gtkdialog --center --program=FILE_EXIST - exit - fi - dd if=$dev of=$file bs=$bs - ;; - new-file) - export CREATE_FILE=" - - - - - - - - FILE -$( [ -n "$FILE" ] && echo "$FILE" ) - - - - - - - - - NEW_SIZE - 0 - - - - KB - - - - MB - - - - GB - - - - - - - - - RANDOM - - - - ZERO - - - - SPARSE - - - - OVERRIDE - false - - - - - -" - gtkdialog --center --program=CREATE_FILE ;; - cryptomgr) - missing="" - for i in libdevmapper dmsetup linux-md hashalot cryptsetup ; do - [ -d /var/lib/tazpkg/installed/$i ] || missing="$missing $i" - done - if [ -n "$missing" ]; then - export CRYPTO_MANAGER=" - - - - - - - - - - - - -" - gtkdialog --center --program=CRYPTO_MANAGER - exit - fi - for i in dm-mod dm-crypt aes-i586 ; do - lsmod | grep -q $i || modprobe $i - done - export CRYPTO_MANAGER=" - - - - 420120 - CRYTO_DEV - " - while read name ; do - [ -b /dev/mapper/$name ] || continue - DEV=/dev/dm-$(ls -l /dev/mapper/$name | awk '{ print $6 }') - MOUNT=$(mount | egrep "^$DEV|/dev/mapper/$name" | awk '{ print $3 }') - getdevinfo $DEV - case "$name" in - *crypto*) item="item icon=\"passwd\"";; - *) item="item icon=\"drive-harddisk\"";; - esac - CRYPTO_MANAGER="$CRYPTO_MANAGER - <$item>$name|$DEV | $SIZE | $TYPE | $LABEL | $MOUNT | $UUID -" - done < /dev/null) -EOT - CRYPTO_MANAGER="$CRYPTO_MANAGER - - - - - - - -$( (losetup ; blkid | grep -v /dev/loop ) | cut -d: -f1 | awk '{ printf "%s\n",$1}') - DEVICE - - - - - - CRYPTO - aes-256 - aes-192 - aes-128 - - - - - - - - - -" - gtkdialog --center --program=CRYPTO_MANAGER ;; - add-old-crypto) - # Not luks format - # Try old loop-eas - case "$CRYPTO" in - *128) key="16 sha256";; - *192) key="24 sha384";; - *) key="32 sha512";; - esac - getdevinfo $DEVICE - key=$(echo $PASS_PHRASE | hashalot -x -n $key) - echo 0 $BLOCKS crypt aes-plain $key 0 $DEVICE 0 | \ - dmsetup create $(dmlabel $DEVICE) - ;; - add-crypto) - if cryptsetup isLuks $DEVICE 2> /dev/null; then - xterm -T "Open LUKS" -e \ - "cryptsetup luksOpen $DEVICE $(dmlabel $DEVICE)" - else - export GET_PASS_PHRASE=" - - - - - - - - PASS_PHRASE - - - - -" - gtkdialog --center --program=GET_PASS_PHRASE - fi - ;; - remove-crypto) - cryptsetup luksClose $CRYTO_DEV - [ -e /dev/mapper/$CRYTO_DEV ] && dmsetup remove $CRYTO_DEV - ;; - *) - usage ;; -esac - -exit 0 diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/bootfloppybox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/bootfloppybox Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,1477 @@ +#! /bin/sh +# +# Gtkdialog box for the mount command. Part of SliTaz tools. +# +VERSION=20120412 + +# Check if user is root. +check_root() +{ + if test $(id -u) != 0 ; then + echo -e " +You must be root to run `basename $0`. Please type 'su' and +root password to become super-user.\n" + exit 0 + fi +} + +# This function is used after each screen to continue or abort install. +check_retval() +{ + case $retval in + 1) + rm -f /tmp/floppybox.grub.menu + echo -e "\nVoluntary exit.\n" && exit 0 ;; + 255) + rm -f /tmp/floppybox.grub.menu + echo -e "ESC pressed.\n" && exit 0 ;; + esac +} + +# Trigger floppy driver to update /sys/devices/platform/ +dd if=/dev/fd0 bs=1k count=1 > /dev/null 2>&1 + +# check or list floppy devices. +list_floppy() +{ + local list + list="" + for i in /sys/devices/platform/floppy.*/block/*; do + [ -d $i ] || continue + list="$list $(basename $i)" + done + [ -n "$1" ] || echo $list + [ -n "$list" ] +} + +# dialog to select the floppy device +select_floppy() +{ + DEVICE="$DIALOG --title \" Floppy device \" --backtitle \"Boot Floppy Creation\" --clear --extra-button --extra-label \"Format\" --colors --radiolist \" +Select boot device +\" 18 70 50" + on=on + for i in $(list_floppy); do + DEVICE="$DEVICE /dev/$i 'Floppy in $i' $on" + on=off + done + DEVICE="$DEVICE floppy \"floppy image file boot.fd\" $on" + DEVICE="$DEVICE cdrom \"cdrom image file boot.iso\" off 2>&1 1>&3" + exec 3>&1 + DEVICE=`eval $DEVICE` + retval=$? + exec 3>&- + check_retval + if [ "$retval" = "3" ]; then + case "$DEVICE" in + /dev/*) fdformat -n $DEVICE;; + esac + fi +} + +# Build menu for grub or grub4dos +mkmenu() +{ +if [ "$1" = "grub4dos" ]; then + SAVEDEFAULT="save default" + cat > /tmp/floppybox.grub.menu < /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu </dev/null | strings) + +EOT +[ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ] \ + && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu < /media/floppy/grldr + cp $1/boot/* /media/floppy/boot 2> /dev/null + cp /tmp/floppybox.grub.menu /media/floppy/menu.lst + umount -d /media/floppy + bootlace --floppy --sectors-per-track=18 --heads=2 \ + --chs --ext2 $DEVICE + else + mkdir -p /media/floppy/boot/grub + cp /usr/lib/grub/i386-pc/stage? /media/floppy/boot/grub + cp -a $1/boot /media/floppy + cp /tmp/floppybox.grub.menu /media/floppy/boot/grub/menu.lst + grub-set-default --root-directory=/media/floppy 0 + echo "($GRUB_DEV) $(losetup | grep $DEVICE | cut -d: -f1)" > $1/device.map + [ -n "$LOOP" ] && LOOP="--device-map=$1/device.map" + grub $LOOP --batch < /dev/null + cp /tmp/floppybox.grub.menu $1/boot/grub/menu.lst + if [ "$2" = "grub4dos" ]; then + unlzma -c /usr/share/boot/grldr.lzma > $1/boot/grub/grldr + genisoimage -R -o boot.iso -b boot/grub/grldr \ + -c boot/boot.cat -no-emul-boot -boot-load-seg 0x1000 \ + -hide boot/boot.cat -input-charset iso8859-1 $1 + else + cp /usr/lib/grub/i386-pc/stage2_eltorito $1/boot/grub + genisoimage -R -o boot.iso -b boot/grub/stage2_eltorito \ + -c boot/boot.cat -no-emul-boot -boot-load-size 4 \ + -hide boot/boot.cat -input-charset iso8859-1 \ + -boot-info-table $1 + fi ;; + esac +} + +# Build /init for floppies from iso image +buildinit() +{ + mv $1/init $1/init.org + for i in /dev/tty0 /dev/[sh]d[ab]? ; do + [ -e $1$i ] || cp -a $i $1/dev + done + cat > $1/init < /tmp/bs.\$\$ 2> /dev/null + [ -s /tmp/bs.\$\$ ] || continue + [ "\$(md5sum < /tmp/bs.\$\$)" != "\$tmp" ] || continue + rm -f /tmp/bs.\$\$ + break + done + dd if=/dev/fd0 of=/tmp/rootfs.\$num 2> /dev/null || continue + cat /tmp/rootfs.\$num >> \$1 + rm -f /tmp/rootfs.\$num + num=\$((\$num+1)) +} + +mount -t proc proc /proc +total=\$(grep MemTotal /proc/meminfo | sed 's/[^0-9]//g') +# the floppy driver may not be included in kernel +insmod /lib/modules/*/kernel/drivers/block/floppy.ko.gz 2> /dev/null +# loram may put floppy.ko.gz module in /lib +insmod /lib/floppy.ko.gz 2> /dev/null +case "\$(/sbin/blkid 2>&1)" in +*not\ found*) + cat < /dev/null 2>&1 || + ( zcat /tmp/rootfs 2> /dev/null || unlzma -c /tmp/rootfs ) | cpio -idmu + if [ -d /mnt/slitaz ]; then + cp /tmp/rootfs /mnt/slitaz/rootfs.\$num || + mv -f /mnt/slitaz /mnt/slitaz-aborted + fi + rootfslist="\$rootfslist \$num" + rm -f /tmp/rootfs* + mkdir /sbin 2> /dev/null +done < /mnt/slitaz/install.sh < /dev/null 2>&1 || + ( zcat \\\$dir/rootfs.\\\$i 2> /dev/null || unlzma -c \\\$dir/rootfs.\\\$i ) | cpio -idmu +done +if ! mv -f init.org init 2> /dev/null; then + for i in \\\$(ls rootfs*gz | sed '1!G;h;\\\$!d'); do + mount -o loop,ro \\\$i /media/cdrom && rm -f \\\$i + cp -a /media/cdrom/. . + umount -d /media/cdrom + done +fi +mkdir boot && cp \\\$dir/bzImage boot +cp -a /usr/lib/grub/i386-pc boot/grub +cat > boot/grub/menu.lst< /dev/null 2>&1 + fullsize=1 + while [ \$(stat -c %s /mnt/slitaz/bzImage.fd) -lt \$fullsize ]; do + cat_floppy /mnt/slitaz/bzImage.fd + setup=\$(dd if=/mnt/slitaz/bzImage.fd skip=497 bs=1 count=1 2> /dev/null | hexdump -e '"" 1/1 "%d" "\n"') + syssize=\$(dd if=/mnt/slitaz/bzImage.fd skip=500 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') + cmdline=\$(dd if=/mnt/slitaz/bzImage.fd skip=552 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') + initrd=\$(dd if=/mnt/slitaz/bzImage.fd skip=540 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') + [ \$cmdline -eq 0 ] || cmdline=512 + size=\$((512 + \$setup * 512 + \$cmdline + \$syssize * 16)) + [ -s /etc/slitaz-release ] || initrd=0 + fullsize=\$((\$size + \$initrd + 512)) + [ \$(stat -c %s /mnt/slitaz/bzImage.fd) -lt \$size ] || + name="the first initramfs" + done + [ -s /etc/slitaz-release ] && + dd if=/mnt/slitaz/bzImage.fd bs=512 skip=\$((\$setup+1+\$cmdline/512+(31+\$syssize)/32)) > /mnt/slitaz/rootfs.0 && + dd bs=1 seek=\$initrd count=0 of=/mnt/slitaz/rootfs.0 + dd if=/dev/zero of=/mnt/slitaz/bzImage.fd conv=notrunc bs=1 count=4 seek=552 + dd if=/dev/zero of=/mnt/slitaz/bzImage.fd conv=notrunc bs=1 count=8 seek=536 + dd if=/mnt/slitaz/bzImage.fd bs=512 count=\$((\$setup+1)) > /mnt/slitaz/bzImage + dd if=/mnt/slitaz/bzImage.fd bs=512 skip=\$((\$setup+1+\$cmdline/512)) >> /mnt/slitaz/bzImage + rm -f /mnt/slitaz/bzImage.fd + size=\$((512 + \$setup * 512 + \$syssize * 16)) + dd bs=1 seek=\$size count=0 of=/mnt/slitaz/bzImage > /dev/null 2>&1 + [ \$(stat -c %s /mnt/slitaz/bzImage) -eq \$size ] || + mv -f /mnt/slitaz /mnt/slitaz-aborted +fi +[ -d /sbin ] && mv -f /init.org /init && exec /init +exec /bin/ash < /dev/tty0 > /dev/tty0 2>&1 +EOTEOT + chmod +x $1/init +} + +# write a 32 bits data +# usage: storelong offset data32 file +storelong() +{ + printf "00000 %02X %02X %02X %02X \n" \ + $(( $2 & 255 )) $(( ($2>>8) & 255 )) \ + $(( ($2>>16) & 255 )) $(( ($2>>24) & 255 )) | \ + hexdump -R | dd bs=1 conv=notrunc of=$3 seek=$(( $1 )) 2> /dev/null +} + +# read a 32 bits data +# usage: getlong offset file +getlong() +{ + dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \ + hexdump -e '"" 1/4 "%d" "\n"' +} + +# output floppy images set +floppysetcat() +{ + KERNEL="$1" + INITRD="$2" + shift 2 + CMDLINE="$@" + + # bzImage offsets + SetupSzOfs=497 + SyssizeOfs=500 + CodeAdrOfs=0x214 + RamfsAdrOfs=0x218 + RamfsLenOfs=0x21C + ArgPtrOfs=0x228 + + # boot+setup address + SetupBase=0x90000 + + stacktop=0x9E00 + + bs=/tmp/bs$$ + + # Get and patch boot sector + dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null + uudecode < /dev/null +begin-base64 644 - +/L+6nWgAkAcGF4n8McC5HQDzq1sfD6mg8X1ABlfFd3ixBvOlZWaPR3gGH8ZF ++D/6l1hB6DQBvgACA3QO6HYBWwseKAJ0LFNH6AoBXuhmAbAgzRCwCM0QTuhl +ATwIdAOIBK05NigCdPDoPgE8CnXgiHz+ieb/TBD/TBi/9AGBTRz/gMdFMACc +sBCxBUi0k4lEHLABiUQUmGaY0+BIZgMFZtPoaAAQB7+AACn4nHMCAccx21BW +6J4AXrkAgLSH/kQczRVYnXfcoRoCvxwCsQk4RBxyuJPNE+oAACCQsEYoyL7b +AejSAF3rI4D5E3IEOMF3a4D+AnIEOOZ3bGCB/QAGdCoGUlFTlrQCULEGtQTB +xQSwDyHoBJAnFEAn6IwA/s117LAgzRDitOiWAJjNE2FSUCjIdwKwAZg5+HIC +ifhQtALNE5VeWFpyoJVBjuGAxwJPdFFOdfSM4ZU4wXVFiMj+xrEBOOZ1O4j0 +/sW2AID9UHIwOi7wAXIqtQBgvt4B/kQMU+gxAFvoOAB1FlKYzRO4AQLNE1rQ +1Dpk/nXqRgjkdeVh64sWB7AxLAO0DrsHAM0QPA1088OwDejv/6wIwHX4w79s +BLFbZQINuA0BZToNdArNFnT0mM0Wju9Hw1g6AEluc2VydCBkaXNrIDEuBw0A +AA== +==== +EOT + + # Get setup + setupsz=$(getlong $SetupSzOfs $bs) + setupszb=$(( $setupsz & 255 )) + dd if=$KERNEL bs=512 skip=1 count=$setupszb 2> /dev/null >> $bs + + # Store cmdline after setup + if [ -n "$CMDLINE" ]; then + echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs + storelong ArgPtrOfs $(( $SetupBase + $stacktop )) $bs + fi + + # Compute initramfs size + initrdlen=0 + padding=0 + for i in $( echo $INITRD | sed 's/,/ /' ); do + [ -s "$i" ] || continue + initrdlen=$(( $initrdlen + $padding )) + padding=$(stat -c %s $i) + initrdlen=$(( $initrdlen + $padding )) + padding=$(( 4096 - ($padding & 4095) )) + [ $padding -eq 4096 ] && padding=0 + done + Ksize=$(( $(getlong $SyssizeOfs $bs)*16 )) + Kpad=$(( (($Ksize+4095)/4096)*4096 - Ksize )) + if [ $initrdlen -ne 0 ]; then + Kbase=$(getlong $CodeAdrOfs $bs) + storelong $RamfsAdrOfs \ + $(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs + storelong $RamfsLenOfs $initrdlen $bs + fi + + # Output boot sector + setup + cmdline + dd if=$bs 2> /dev/null + + # Output kernel code + dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null + + # Pad to next sector + Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) )) + [ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null + + # Output initramfs + padding=0 + for i in $( echo $INITRD | sed 's/,/ /' ); do + [ -s "$i" ] || continue + [ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding + dd if=$i 2> /dev/null + padding=$(( 4096 - ($(stat -c %s $i) & 4095) )) + [ $padding -eq 4096 ] && padding=0 + done + + # Cleanup + rm -f $bs +} + +# Create boot floppy set from kernel, initrd & cmdline +floppyset() +{ + floppysetcat "$@" | split -b 1440k /dev/stdin floppy$$ + i=1 + ls floppy$$* | while read file ; do + output=$(printf "fd%03d.img" $i) + cat $file /dev/zero | dd bs=1k count=1440 of=$output conv=sync 2> /dev/null + rm -f $file + i=$(( $i + 1 )) + done +} + +# Create boot floppy set from a SliTaz ISO image +floppysetfromiso() +{ + mkdir /tmp/iso$$ + mount -o loop,ro $1 /tmp/iso$$ + rootfs="$(ls /tmp/iso$$/boot/rootfs*z 2> /dev/null | tail -1)" + bzimage=/tmp/iso$$/boot/bzImage + if [ -z "$rootfs" -o ! -s $bzimage ]; then + umount -d /tmp/iso$$ + rm -rf /tmp/iso$$ + echo "Not a SliTaz ISO image !" + return 1 + fi + mkdir -p /tmp/rootfs$$/fs + n=1 + for i in $(ls /tmp/iso$$/boot/rootfs*z | sort -r); do + mkdir /tmp/rootfs$$/$n + ln -s $i /tmp/rootfs$$/$n + n=$(($n + 1)) + done + echo "Unpacking rootfs..." + ( zcat $rootfs 2> /dev/null | unlzma -c $rootfs ) | \ + ( cd /tmp/rootfs$$/fs ; cpio -idm > /dev/null ) + if [ $(unlzma -c $rootfs 2> /dev/null| wc -c) -gt $(stat -c %s $rootfs) ]; then + if [ $(du -ck $rootfs $bzimage | awk 'END { print $1 }') -gt 15296 ]; then + # The rootfs.gz file is too big, extract a minimum bootfs with busybox stuff + echo "Extracting bootfs..." + mv /tmp/rootfs$$/fs /tmp/rootfs$$/fs0 + for i in lib bin sbin usr/bin usr/sbin ; do + mkdir -p /tmp/rootfs$$/fs/$i + done + cd /tmp/rootfs$$/fs0 + dir=$(echo lib/modules/*/kernel/drivers/block) + [ -d $dir ] && mkdir -p ../fs/$dir + [ -f $dir/floppy.ko.gz ] && mv $dir/floppy.ko.gz ../fs/$dir + for i in dev init mnt proc sys tmp ; do + mv $i ../fs + done + mv lib/ld-* ../fs/lib + LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so bin/busybox | \ + awk '/\/lib\/lib/ { print $3 }' | while read lib ; do + while [ -L .$lib ]; do + local target + target="$(readlink ".$lib")" + case "$target" in + /*) ;; + *) target="$(dirname $lib)/$target" ;; + esac + mv ".$lib" ../fs/lib + lib="$target" + done + mv ".$lib" ../fs/lib + done + for i in $(bin/busybox | awk '{ if (s) printf "%s",$0 } + /Currently/ { s=1 }' | sed 's/,//g'); do + for j in bin sbin usr/bin usr/sbin ; do + [ -e $j/$i ] && mv $j/$i ../fs/$j/$i + done + done + mv bin/busybox ../fs/bin + [ -e ../fs/bin/cpio ] || mv bin/cpio ../fs/bin + rm -f ../1/* + find | cpio -o -H newc | lzma e ../1/rootfs.gz -si + cd - > /dev/null + rm -rf /tmp/rootfs$$/fs0 + else + # The rootfs.gz file fits in 15MB, no need to split it. + rm -rf /tmp/rootfs$$/1 + fi + else + # This is a loram rootfs.gz, extract loram bootstrap + echo "Splitting loram rootfs..." + offset=$(awk '/07070100/ { o+=index($0,"07070100"); print int(o/4) ; exit } { o+=1+length() }' < $rootfs) + dd if=$rootfs skip=$(($offset / 1024)) bs=4k count=1 2> /dev/null | \ + dd skip=$(($offset % 1024)) bs=4 of=/tmp/rootfs$$/1/root 2> /dev/null + dd if=$rootfs skip=$((1 + ($offset / 1024) )) bs=4k \ + >> /tmp/rootfs$$/1/root 2> /dev/null + rm -f /tmp/rootfs$$/1/rootfs* + fi + # Create extra rootfs floppies + for i in /tmp/rootfs$$/[1-9]*/root* ; do + [ -f $i ] || continue + echo "Creating floppies for rootfs $(basename $(dirname $i) )..." + case "$(dd if=$i bs=1 count=4 2> /dev/null)" in + 0707) cat $i ;; + *) zcat $i 2> /dev/null || unlzma -c $i ;; + esac | cpio -t > $(dirname $i)/files.list + sed -i '/ blocks$/d' $(dirname $i)/files.list + x=$(readlink $i) + [ -n "$x" ] || x=$i + pad=$(( $(stat -c %s $x ) % 1474560 )) + [ $pad -ne 0 ] && pad=$(( 1474560 - $pad )) + dd if=/dev/zero bs=1 count=$pad 2> /dev/null | cat $i - | \ + split -b 1440k /dev/stdin $(dirname $i)/floppy + done + selection="$(grep -s append /tmp/iso$$/boot/isolinux/common.cfg | sed 's/.*append //')" + [ -n "$selection" ] || selection="0 slitaz" + set -- $selection + selection="" + while [ -n "$2" ]; do + [ ! -d /tmp/rootfs$$/1 -a -z "$4" ] && break + case "$1" in + *G) selection="$2 $(( ${1%G} * 1024 * 1024 )) $selection" ;; + *M) selection="$2 $(( ${1%M} * 1024 )) $selection" ;; + *) selection="$2 $1 $selection" ;; + esac + shift 2 + done + echo "Creating /init ..." + base=100 + set -- $selection + for i in /tmp/rootfs$$/[1-9]* ; do + [ -d $i ] || continue + while read file; do + [ -e $i/../fs/$file ] && continue + [ $(grep -- "$file" $i/../*/files.list | wc -l) -eq 1 ] && + break + done < $i/files.list + printf "%s %s %03d %d %s %s\n" \ + $1 $2 $base $(ls $i/floppy* | wc -l) $file \ + $(cat $i/floppy* | md5sum - | awk '{print $1}') + base=$(($base + 100)) + shift 2 + done | buildinit /tmp/rootfs$$/fs + cmdline="$(grep 'append *initrd' /tmp/iso$$/boot/isolinux/isolinux.cfg | tail -n 1 | sed 's/.*gz //')" + ( cd /tmp/rootfs$$/fs ; find | cpio -o -H newc ) | lzma e /tmp/rootfs$$/rootfs -si + echo "Creating first stage boot floppies..." + floppyset $bzimage /tmp/rootfs$$/rootfs "$cmdline" + base=100 + for i in /tmp/rootfs$$/[1-9]* ; do + [ -d $i ] || continue + j=0 + for f in $i/floppy* ; do + mv $f $(printf "fd%03d.img" $(( $base + $j )) ) + j=$(($j + 1)) + done + base=$(($base + 100)) + done + rm -rf /tmp/rootfs$$ + umount -d /tmp/iso$$ + rm -rf /tmp/iso$$ +} + +# Show new boot floppy set +dialogwritefloppyset() +{ + if ! list_floppy check; then + du -h fd???.img + return + fi + while true; do + exec 3>&1 + IMAGE=`$DIALOG --title " Write floppy image " \ + --backtitle "Boot floppy set creation on $DEVICE" --clear \ + --colors --radiolist " + Insert a blank floppy in drive and +select the floppy image you want to write. +" 18 46 46 \ + $(on="on"; for i in fd???.img; do echo "$i $(du -h $i | cut -f1) $on "; on="off"; done) 2>&1 1>&3` + retval=$? + exec 3>&- + check_retval + dd if=$IMAGE of=$DEVICE + done +} + +dialognofloppyset() +{ + cat << EOT +The boot loader can't load the kernel and the initramfs in the first 16MB +of RAM. The total size exceeds 15MB. No floppy image is created. +EOT +} + +# Check for iso 9660 image +isiso() +{ + mkdir /tmp/iso$$ + mount -o loop,ro $1 /tmp/iso$$ 2> /dev/null + status=$? + umount -d /tmp/iso$$ 2> /dev/null + rm -rf /tmp/iso$$ + return $status +} + +dialogfloppyset() +{ + : ${DIALOG=dialog} + while true; do + exec 3>&1 + KERNEL=`$DIALOG --title " Select a Linux kernel or a SliTaz iso " \ + --backtitle "Boot floppy set creation on $DEVICE" --clear \ + --colors --fselect "$PWD" 10 70 \ + 2>&1 1>&3` + retval=$? + exec 3>&- + check_retval + [ -f $KERNEL ] && break + done + if isiso $KERNEL ; then + bootfloppybox call mkisofloppies $KERNEL + dialogwritefloppyset + return + fi + exec 3>&1 + INITRD=`$DIALOG --title " Select an Initramfs " \ + --backtitle "Boot floppy set creation on $DEVICE" --clear \ + --colors --fselect "$PWD" 10 70 \ + 2>&1 1>&3` + retval=$? + exec 3>&- + check_retval + [ -f "$INITRD" ] || INITRD="" + exec 3>&1 + CMDLINE=`$DIALOG --title " Enter boot command line " \ + --backtitle "Boot floppy set creation on $DEVICE" --clear \ + --colors --inputbox "Kernel command line" 10 70 "rw root=/dev/null autologin" \ + 2>&1 1>&3` + retval=$? + exec 3>&- + check_retval + bootfloppybox call mkfloppies "$KERNEL" "$INITRD" "$CMDLINE" && + dialogwritefloppyset || + dialognofloppyset +} + +# +# Create floppy image set +# +export IMAGE_SET=' + + + + + + + + + + + + + + + + + + ISO + + + + + + + + + + FILE_DIRECTORY + /tmp + + + + + + + + + + + + + + + + + + + + KERNEL + + + + + + + + + + INITRD + + + + + + + + + + CMDLINE + rw root=/dev/null autologin + + + + + + + + + OUTPUT_DIRECTORY + /tmp + + + + + + + + + + + + + + +' + +# +# Read/write floppy images +# +export FLOPPY_IMAGE=' + + + + + + + + + DEVICE' +FLOPPY_DEV="" +for i in $(list_floppy); do + FLOPPY_DEV="$FLOPPY_DEV + /dev/$i" +done + FLOPPY_IMAGE="$FLOPPY_IMAGE$FLOPPY_DEV + + + + + + + + + + + + IMAGE + + + + + + + + + + + + +" + +gtkdialogshowfloppyset() +{ +# +# Show floppy image set +# +IMAGE_SHOW=' + + + + + + + 50140 + + du -h fd???.img | sed "s/\t/|/" + + +' + [ 0$1 -gt $((15 * 1024 * 1024)) ] && IMAGE_SHOW="$IMAGE_SHOW + + + + + + + +" + list_floppy check && IMAGE_SHOW="$IMAGE_SHOW + +" + IMAGE_SHOW="$IMAGE_SHOW + + + + +" + export IMAGE_SHOW + gtkdialog --program=IMAGE_SHOW +} + +while true; do + +if [ "$1" == "call" ]; then + case "$2" in + mkmenu) mkmenu $3;; + mkisofloppiesxterm) + shift 2 + xterm -geometry 80x16 -title "Build boot floppies from ISO" \ + -e "$0 call mkisofloppies $@ ; echo -e \"----\nENTER to continue...\" && read close" + gtkdialogshowfloppyset + ;; + mkisofloppies) + shift 2 + floppysetfromiso $@ + ;; + mkfloppies) + shift 2 + floppyset "$@" + sz=$(cat fd???.img | wc -c) + if [ -n "$XAUTHORITY" ]; then + gtkdialogshowfloppyset $sz + else + if [ $sz -gt $((15 * 1024 * 1024)) ]; then + cat < \ + $DIR/boot/btmgr.gz \ + && unlzma -c /usr/share/boot/memdisk.lzma > \ + $DIR/boot/memdisk + [ -f /usr/share/boot/plpbt.bin ] \ + && cp /usr/share/boot/plpbt.bin $DIR/boot + [ -f /usr/share/boot/etherboot ] \ + && cp /usr/share/boot/etherboot $DIR/boot + [ -f /boot/gpxe ]\ + && cp /boot/gpxe $DIR/boot + [ -f /usr/share/boot/memtest.lzma -a \ + -f /usr/share/boot/memdisk.lzma ] \ + && unlzma -c /usr/share/boot/memtest.lzma | \ + cat - /dev/zero | dd bs=18k count=80 | \ + gzip -9 > $DIR/boot/memtest.gz \ + && unlzma -c /usr/share/boot/memdisk.lzma > \ + $DIR/boot/memdisk + install_grub $DIR $3 + ;; + *) + case "$file" in + *.lzma) action="unlzma -c";; + *.gz) action="zcat";; + *) action="cat";; + esac + case "$DEVICE" in + /dev/*) $action $file > $DEVICE;; + flopp*) $action $file | cat - /dev/zero | \ + dd bs=18k count=80 > boot.fd;; + cdrom*) + mkdir -p $DIR/boot/grub + case "$3" in + btmgr|memtest) + $action $file | cat - /dev/zero | \ + dd bs=18k count=80 | \ + gzip -9 > $DIR/boot/$3.gz + unlzma -c /usr/share/boot/memdisk.lzma \ + > $DIR/boot/memdisk + cat > /tmp/floppybox.grub.menu << EOT +# grub menu +timeout 0 +title $3 +kernel /boot/memdisk floppy c=80 h=2 s=18 +initrd /boot/$3.gz +EOT + ;; + *) $action $file > $DIR/boot/$3 + cat > /tmp/floppybox.grub.menu << EOT +# grub menu +timeout 0 +title $3 +kernel /boot/$3 +EOT + ;; + esac + install_grub $DIR grub + ;; + esac + ;; + esac + rm -rf $DIR + ;; + get-plop) + mkdir -p /tmp/get-plop$$ + PLOP_URL=http://mirror.slitaz.org/boot/plpbt.bin + wget -O - $PLOP_URL > /tmp/get-plop$$/plpbt.bin + VERSION="$(strings /tmp/get-plop$$/plpbt.bin \ + | grep 'Boot Manager v' | sed 's/.* v\([0-9\.]*\) .*/\1/')" + mkdir -p $(dirname /tmp/get-plop$$/plop-$VERSION/fs/$3) + mv /tmp/get-plop$$/plpbt.bin \ + /tmp/get-plop$$/plop-$VERSION/fs/$3 + if [ -s /tmp/get-plop$$/plop-$VERSION/fs/$3 ]; then + cat > /tmp/get-plop$$/plop-$VERSION/receipt <&2 + exit 1;; + esac + exit 0 +fi + +if [ -z "$XAUTHORITY" ]; then + + : ${DIALOG=dialog} + + DEVICE=/dev/fd0 + list_floppy check || DEVICE="floppy" + while true; do + exec 3>&1 + ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \ + --backtitle "Boot Floppy Creation on $DEVICE" --clear \ + --extra-button --extra-label "Change floppy" \ + --colors --radiolist " +Create a floppy or a cdrom to boot a LiveCD in a PXE network... +May need a floppy disk in drive. Erase the whole floppy disk. + " 18 70 50\ + FloppySet "Boot Slitaz with floppies only." on \ + SmartBtmgr "Boot any partition or ATAPI CD-ROM." off \ + Plop "Boot USB harddisk floppy or CD/DVD." off \ + Etherboot "Replacement for proprietary PXE ROMs." off \ + gPXE "Boot from http://boot.slitaz.org/" off \ + Memtest86+ "Memory failures detection tool." off \ + Grub4DOS "Enhanced grub version supporting NTFS." off \ + Grub "Boot loader with command shell." off \ + 2>&1 1>&3` + retval=$? + exec 3>&- + check_retval + if [ "$retval" = "3" ]; then + select_floppy + continue; + fi + while read key file pkg; do + [ "$key" = "$ID_SOURCE" ] || continue + if [ ! -f "$file" ]; then + $DIALOG --title " Install package " --colors \ + --backtitle "Boot Floppy Creation" --clear \ + --yes-label "Install" \ + --no-label "Quit" \ + --yesno "The package $pkg is not yet installed. Install it ?" 18 70 + retval=$? + if [ "$pkg" = "plop" ]; then + bootfloppybox call get-plop $file + else + tazpkg get-install $pkg + fi + fi + bootfloppybox call install "$pkg" "$DEVICE" "$file" + exit 0 + done < + + + + +" + if [ -f $file ]; then + if [ "$pkg" = "grub" -o "$pkg" = "grub4dos" ]; then + tmp="$tmp + +" + elif [ "$pkg" = "etherboot" ]; then + tmp="$tmp + +" + elif [ "$pkg" = "gpxe" ]; then + tmp="$tmp + + + + + $(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings) + URL + + + + + + +" + fi + receipt=/var/lib/tazpkg/installed/$pkg/receipt + if [ -f $receipt ]; then + . $receipt + tmp="$tmp + +" + fi + tmp="$tmp + + + +" + else + tmp2="tazpkg get-install $pkg --forced" + [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file" + tmp="$tmp + + + + + + +" + fi + BOOT_DIALOG="$BOOT_DIALOG$tmp" +done < +# Rohit Joshi +# +VERSION=20100315 +TMPDIR="/tmp/burn-cd" + +chk_install() +{ + for pkg in $@ + do + if [ ! -d /var/lib/tazpkg/installed/${pkg} ]; then + UNINSTALLED="$UNINSTALLED $pkg" + fi + done + if [ ! "$UNINSTALLED" = "" ] ; then + xterm -geometry 80x16 -title "INSTALL PACKAGE" \ + -e "echo -n \"This option depends on $UNINSTALLED. Please install and try again..\"; sleep 4;" + fi +} + +# Auto Install DEPENDS and/or SUGGESTED +install() +{ + #echo "pkgs to install: $1" + for pkg in $1 ; do + # Avoid reinstall + if [ ! -d /var/lib/tazpkg/installed/"$pkg" ]; then + xterm -geometry 80x16 -title "INSTALL PACKAGE" \ + -e " echo \"This option depends on $pkg. Installing $pkg as root: \" ; subox tazpkg get-install $pkg --forced; sleep 2; + echo -e \"----\nPress ENTER to close and PROCEED with decoding...\"; read i; exit 0; " + fi + done + +} + + +# Check read write permission for device. +chk_rw_permissions() +{ + xterm -geometry 80x16 -title "Check Permission" \ + -e ' + if [ ! -r "$DEVICE" -o ! -w "$DEVICE" ]; then + echo "You dont have read write permission for $DEVICE; " + echo "Add yourself to group cdrom: addgroup tux cdrom" + else + echo "You have read write permission for $DEVICE. You can proceed to burn." + fi + sleep 3; + ' +} + +# Display audio cd size. +audio_cd_stats() +{ + AUDIO_CD_SIZE=`du -m $TMPDIR | awk '{print $1}'` + TRACK_NB=`ls -1 $TMPDIR | wc -l` + echo -n "Total $TRACK_NB tracks: $AUDIO_CD_SIZE Mb" +} + + +decode_ogg() +{ + if ls $TMPDIR | grep -q .ogg; then + cd $TMPDIR + xterm -geometry 80x16 -title "Oggdec" \ + -e 'for i in *.ogg; do oggdec "$i" && rm "$i"; done; sleep 2' + fi +} + +decode_mp3() +{ + + if ls $TMPDIR | grep -q .mp3; then + cd $TMPDIR + install "mpg123" + + xterm -geometry 80x16 -title "mpg123" \ + -e 'for file in *.mp3; do + mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename "$file" .mp3`.wav "$file" && rm -f "$file"; + done; sleep 2' + fi +} + +decode_video() +{ + # convert videos into a VCD/SVCD/DVD compatible mpg video format + if ls $TMPDIR | grep -q ".avi\|.mov\|.wmv\|.flv" ; then + cd $TMPDIR + install "ffmpeg" + + xterm -geometry 80x16 -title "ffmpeg" \ + -e ' echo -n "Select target type (pal-vcd ntsc-vcd pal-svcd ntsc-svcd pal-dvd ntsc-dvd) "; read TARGET_OPTIONS + for file in *.avi *.wmv *.mov *.flv; do + ext=`echo "${file##*.}"` + output_file=`basename "$file" .$ext`.mpg + ffmpeg -i "$file" -target "$TARGET_OPTIONS" "$output_file" && rm "$file"; + done; sleep 2; + ' + fi + + +} + +# convert spaces in filename with _ and remove special characters "()'&" {}\! and translate uppercase to lowercase +fix_filename() +{ + ls /tmp/burn-cd/* | while read file + do + mv "$file" `echo $file | tr ' ' '_' | tr -d '[{}(),\!&]' | tr -d "\'" | tr '[A-Z]' '[a-z]' | sed 's/_-_/_/g' ` + done + +} + +# We must think about " space " between directory/track and +# filter directory copy to avoid copying other files than audio. +# Only burning non-compressed wav format is supported directly. + +copy_audio_file() +{ + if ls "$NEW_TRACK" | grep -q .ogg; then + cp "${NEW_TRACK%.ogg}.ogg" $TMPDIR + fix_filename + decode_ogg + elif ls "$NEW_TRACK" | grep -q ".[m\|M][p\|P]3"; then + # cp "${NEW_TRACK%.mp3}.mp3" $TMPDIR + cp "$NEW_TRACK" "$TMPDIR" + fix_filename + decode_mp3 + else + cp "${NEW_TRACK%.wav}.wav" $TMPDIR + fi +} + + +copy_audio_dir() +{ + + for i in .wav .ogg .mp3 + do + cp "$NEW_DIR"/*$i $TMPDIR 2>/dev/null + done + fix_filename + decode_ogg + decode_mp3 +} + +# Only burning mpg video format is supported directly. MPEG-1 video for vcd and MPEG-2 for svcd and dvd +copy_video_file() +{ + if ls "$NEW_TRACK" | grep -q ".mpg\|.mpeg"; then + cp "${NEW_TRACK%.mp*}.mpg" $TMPDIR + elif ls "$NEW_TRACK" | grep -q ".avi\|.mov\|.wmv\|.flv"; then + ext=`echo "${NEW_TRACK##*.}"` + cp "${NEW_TRACK%.$ext}.$ext" $TMPDIR + fix_filename + if "$CHECKBOX_DECODE" ; then decode_video ; fi + else + echo "mpg format supported" + fi +} + +copy_video_dir() +{ + for i in .mpg .avi .mov .wmv .mpeg .flv + do + cp "$NEW_DIR"/*$i $TMPDIR 2>/dev/null + done + fix_filename + if "$CHECKBOX_DECODE" ; then decode_video ; fi +} + +copy_file() +{ + case "$BURN_MODE" in + audio-cd) + copy_audio_file ;; + vcd|svcd|video-dvd) + copy_video_file ;; + *) + cp "$NEW_TRACK" $TMPDIR ; fix_filename ;; + esac + +} + +copy_dir() +{ + case "$BURN_MODE" in + audio-cd) + copy_audio_dir ;; + vcd|svcd|video-dvd) + copy_video_dir ;; + *) + cp "$NEW_DIR" $TMPDIR 2>/dev/null + fix_filename ;; + esac +} +# =====ISO===== +burn_iso() +{ + xterm -geometry 80x16 -title "Wodim" \ + -e "wodim -v speed=$SPEED dev=$DEVICE $OPTIONS '$ISO_IMAGE'; sleep 4 + " +} +# =====AUDIO===== +# Use -pad to avoid file size error. +burn_audio() +{ + + install "cdrkit" + xterm -geometry 80x16 -title "Wodim:AUDIO" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; + wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao -audio $TMPDIR/*.wav; sleep 4 + + " +} +# =====DATA===== +burn_cddata() +{ + + install "cdrkit" + + xterm -geometry 80x16 -title "Wodim:CD DATA" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; + wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao -data $TMPDIR/*; sleep 4 + + " + +} + +burn_dvddata() +{ + # For multisession support, remove --dvd-compat option + install "dvd+rw-tools" + + xterm -geometry 80x16 -title "growisofs:DVD DATA" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; + # no iso-file available + growisofs -dvd-compat -speed=$SPEED -pad -J -r -f -Z $DEVICE $TMPDIR/*; sleep 4 + " +} + +# ====VIDEO===== +burn_dvdvideo() +{ + + install "dvd+rw-tools" + + # current assumption: compatible dvd-video format + xterm -geometry 80x16 -title "growisofs:DVD VIDEO" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE\"; sleep 1; + growisofs -dvd-video -udf -pad -J -r -f -Z $DEVICE -speed=$SPEED $TMPDIR/*; sleep 2 + " + +} + +burn_vcd() +{ + + install "vcdimager" + + mkdir -p $TMPDIR/vcd + xterm -geometry 80x16 -title "vcdimager:VCD" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE $UNINSTALLED \"; sleep 1; + vcdimager -t vcd2 -l VCD -c $TMPDIR/vcd/vcd.cue -b $TMPDIR/vcd/vcd.bin $TMPDIR/*.mpg; sleep 2; + # cdrdao write --device $DEVICE $TMPDIR/vcd/vcd.cue; sleep 2 + wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao cuefile=$TMPDIR/vcd/vcd.cue ; sleep 2 + " + + +} + +burn_svcd() +{ + + install "vcdimager" + + mkdir -p $TMPDIR/svcd + xterm -geometry 80x16 -title "vcdimager:SVCD" \ + -e " echo \"BURN TYPE SELECTED = $BURN_MODE\" + vcdimager -t svcd -l SVCD -c $TMPDIR/svcd/svcd.cue -b $TMPDIR/svcd/svcd.bin $TMPDIR/*.mpg; sleep 2; + # cdrdao write --device $DEVICE $TMPDIR/svcd/svcd.cue; sleep 2; + wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao cuefile=$TMPDIR/svcd/svcd.cue ; sleep 2 + " + +} + +# =====CLONE===== + +rip_disc() +{ + SUGGESTED="cdrkit-isoinfo" + if ! "$CHECKBOX_FOLDER" ; then SAVE_DISC="/tmp/burn-cd" ; fi + if [ -d /var/lib/tazpkg/installed/${SUGGESTED} ]; then + xterm -geometry 80x16 -title "dd" \ + -e ' echo "RIPPING DISC $DEVICE AT $SAVE_DISC..." + COUNT=`isoinfo -d -i $DEVICE | grep "^Volume size is:" | cut -d " " -f 4` + BLOCK=`isoinfo -d -i $DEVICE | grep "^Logical block size is:" | cut -d " " -f 5` + dd if=$DEVICE of=$SAVE_DISC/image.iso bs=$BLOCK count=$COUNT; sleep 4 + sleep 2; + # eject ; + ' + else + xterm -geometry 80x16 -title "dd" \ + -e ' echo "Though you dont have the cdrkit-isoinfo package installed, \ + you can still rip but it may be slower." + echo -n "Would you like to continue (y/N)? : "; read ans + if [ "$ans" = "y" ]; then + echo "RIPPING DISC $DEVICE AT $SAVE_DISC...." + dd if=$DEVICE of=$SAVE_DISC/image.iso; + sleep 2; + #eject ; + fi + ' + fi + if ! "$CHECKBOX_FOLDER" ; then + ISO_IMAGE="/tmp/burn-cd/image.iso" + xterm -geometry 80x16 -title "dd" \ + -e ' echo -e " ---Please insert EMPTY DISC at $DEVICE ---\n ---press ENTER to continue..." && read close;' + burn_iso + fi +} + +blank_dvd() +{ + xterm -geometry 80x16 -title "growisofs:DVD ERASE" \ + -e "growisofs -Z $DEVICE=/dev/zero" +} + +burn_disc() +{ + case "$BURN_MODE" in + audio*) + burn_audio ;; + data-cd*) + burn_cddata ;; + data-dvd*) + burn_dvddata;; + video*) + burn_dvdvideo;; + vcd*) + burn_vcd;; + svcd*) + burn_svcd;; + esac + +} + +track_list() +{ + for file in `ls $TMPDIR` ; do + track_size=`du -m $TMPDIR/$file | awk '{print $1}'` + echo "$file | $track_size" + done +} + +export BIN=$0 +# Main GTK interface +MAIN_DIALOG=' + + + + + + + + 500200 + TRACKS_LIST + + $BIN track_list + rm "/tmp/burn-cd/$TRACKS_LIST" + refresh:TRACKS_LIST + refresh:TRACKS_SIZE + ' + +# Select burn audio-cd, data-cd, dvd-video or vcd/svcd +MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + ' + tmp2="${MAIN_DIALOG}" + for i in audio-cd data-cd data-dvd video-dvd vcd svcd; do + [ "$i" = "$BURN_MODE" ] || tmp2="$tmp2$i" + done + tmp3=' + BURN_MODE + + + + CHECKBOX_DECODE + true + + + ' +MAIN_DIALOG="$tmp2$tmp3" +# Select, add and burn audio buttons. +MAIN_DIALOG=${MAIN_DIALOG}" + + + + + + + NEW_TRACK + + + + + + + + + + + NEW_DIR + + + + " + +MAIN_DIALOG=${MAIN_DIALOG}" + + + TRACKS_SIZE + $0 audio_cd_stats + + + + + + " + +# Backup CD +MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + + + + + + + + CHECKBOX_FOLDER + true + if true enable:SAVE_DISC + if true enable:OPENBUTTON + if false disable:SAVE_DISC + if false disable:OPENBUTTON + + + + + + + + SAVE_DISC + + + +' +# Burn backup button. +MAIN_DIALOG=${MAIN_DIALOG}" + + + + + + + " +MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + + + + + + + + ' + +MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + + + + + + + + + ISO_IMAGE + + + + ' +# Burn iso button. +MAIN_DIALOG=${MAIN_DIALOG}" + + + + + " + + + +# +# +# tmp3= +MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + + + + + + + + + + + + + + + + + + + + /dev/cdrom + DEVICE + + + + + + + + cat /proc/sys/dev/cdrom/info | grep "drive speed" | cut -f 3 + SPEED + + + + + + + + -eject -multi + OPTIONS + + + ' + + MAIN_DIALOG=${MAIN_DIALOG}' + + + + + + + + BLANK_OPTS + fast + + + + + + ' +export MAIN_DIALOG=${MAIN_DIALOG}' + + ' + MAIN_DIALOG=${MAIN_DIALOG}" + + " + MAIN_DIALOG=${MAIN_DIALOG}' + + + + + +' + +# Script can be called with an arg to exec a function. +if [ -n "$1" ]; then + $1 +else + mkdir -p $TMPDIR + gtkdialog --center --program=MAIN_DIALOG >/dev/null + rm -rf $TMPDIR +fi + +exit 0 diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox-doc.desktop --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox-doc.desktop Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Burnbox manual +Name[pt]=Manual do Burnbox +Name[pt_BR]=Manual do Burnbox +Exec=browser file:///usr/share/doc/slitaz-tools/burnbox.html +Icon=text-html +Type=Application +Categories=Documentation; diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox.desktop --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox.desktop Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Burn CD/DVD +Name[fr]=Graver des CD ou DVD +Name[pt]=Gravador de CD/DVD +Name[pt_BR]=Gravador de CD/DVD +Comment=Burn ISO images or audio tracks to CD or DVD +Exec=burnbox +Icon=drive-optical +Type=Application +Categories=GTK;Utility; diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox.en.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox.en.html Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,119 @@ + + + + Burnbox Manual + + + + + + + + +
+ +

About

+

+Burnbox supports: +

+
    +
  • ISO burning
  • +
  • Backup of data and audio CDs
  • +
  • Data CD/DVD burning (DVD burning requires an optional package dvd+rw-tools)
  • +
  • Audio CD burning (MP3 requires an optional package mpg123)
  • +
  • Video CD (VCD/SVCD) burning (requires packages vcdimager and ffmpeg)
  • +
+ +

General Device Settings

+

+In the last tab, make sure the cdrom settings are correct (Device:/dev/cdrom; Speed (auto-detected): 48; Options: ). +Input is taken from the DEVICE settings. +

+ +

Blank CD/DVD-RW

+

+Use Blank disk to erase contents and prepare for burning. +

+ +

Iso Burning

+

+This is supported in the third tab. +

+
    +
  • Press button Browse to specify the iso file path
  • +
  • Press button Burn ISO
  • +
+

+You can also create or manipulate ISO images with the ISO Master utility. +

+ +

Backup of data and audio CD

+

+This is supported in the second tab. Optional package cdrkit-isoinfo may help to improve the burn speed. +

+
    +
  • Insert CD
  • +
  • Select backup option: "Save backup on Hard Disk Folder" (default) or "Backup on CD disc"
  • +
  • If backup option is "Save backup on Hard Disk Folder" (default), then specify the folder to do a "CD/DVD backup"
  • +
  • Press button Backup DataCD
  • +
+

+Audio CD ripping is supported using the asunder package. +

+ +

Data CD/DVD burning

+

+This is supported in the First tab. One can specify the burn type before adding files. +Depending upon the burn type, the files are decoded on the fly. +One can remove the added files by simply double-clicking on the file in the tree view. +Total track size shows the CD/DVD space occupied. +

+ +
    +
  • Select data-cd in Burn Type
  • +
  • Specify file/folder or Browse
  • +
  • Press button Add
  • +
  • Press button Burn Disc
  • +
+ +

Audio CD burning

+

+This is supported in the first tab. WAV, OGG, MP3 files are supported. +OGG and MP3 are automatically converted into an uncompressed WAV format for burning. +

+
    +
  • Select audio-cd in Burn Type
  • +
  • Specify file/folder or Browse
  • +
  • Press button Add to auto-decode to uncompressed WAV (OGG, MP3 are decoded)
  • +
  • Press button Burn Disc
  • +
+ +

Video CD (VCD/SVCD) burning

+

+This is supported in the first tab. Only burning mpg video format is supported directly: MPEG-1 video for vcd and MPEG-2 for svcd and dvd. +AVI, MOV, FLV, WMV videos are automatically converted into a VCD/SVCD/DVD compatible mpg video format. +

+
    +
  • Select video-dvd, vcd or svcd in Burn Type
  • +
  • Specify file/folder or Browse
  • +
  • Press button Add and select Enable decoding video for MPG files (AVI, FLV, MOV, WMV are decoded)
  • +
  • Press button Burn Disc
  • +
+ +

Common Problems

+
    +
  • Burnbox works as root but not for a user: This happens when the user is not added to the "cdrom" group
    addgroup tux cdrom
  • +
  • Cdrom not readable / writable: Make sure the user has proper permissions and is added to the "cdrom" group
  • +
  • MP3 audio burn does not work: Check if you have installed mpg123
  • +
  • VCD option does not work: Check if you have installed vcdimager
  • +
  • AVI, FLV, WMV files are not decoded to MPG: Check if you have installed ffmpeg
  • +
  • DVD burn does not work: Check if you have installed dvd+rw-tools
  • +
+ + +
+ + + diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox.fr.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox.fr.html Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,120 @@ + + + + Documentation de Burnbox + + + + + + + + +
+ +

A propos

+

+Possibilités de Burnbox: +

+
    +
  • Gravure d'image ISO
  • +
  • Sauvegarde de données et des CDs audio
  • +
  • Enregistrement de données sur CD/DVD (la gravure sur DVD burning nécessite un paquet suplémentaire dvd+rw-tools)
  • +
  • Enregistrement de CD Audio (pour les MP3 il faut installer mpg123)
  • +
  • Enregistrement de CD Video (VCD/SVCD) (paquets requis: vcdimager et ffmpeg)
  • +
+ +

Configuration générale des périphériques

+

+Dans le dernier onglet, assurez-vous que les paramètres sont correctes (Pilote:/dev/cdrom; Vitess (auto-detected): 48; Options: ). +Les informations sont récupérées depuis la variable DEVICE. +

+ +

Effacer CD/DVD-RW

+

+Utilisez Blank disk pour effacer un média. +

+ +

Graver une ISO

+

+Cliquez sur le troisième onglet. +

+
    +
  • Cliquez sur le bouton Browse pour rechercher l'image ISO'
  • +
  • Cliquez sur le bouton Burn ISO
  • +
+

+Vous pouvez créér ou modifier des images ISO avec l'outil ISO Master. +

+ +

Sauvegarde de données et de CD audio

+

+Ceci est pris en charge dans le deuxième onglet. Le paquet cdrkit-isoinfo (optionnel) peut vous aider à améliorer la vitesse d'enregistrement. +

+
    +
  • Insérez un CD
  • +
  • Choisisse l'option: "Save backup on Hard disk" (par défaut) où "Backup on CD disc"
  • +
  • Si l'option sélectionnée est "Save backup on Hard disk" (défaut), préciser le dossier à utiliser pour "CD/DVD backup"
  • +
  • Cliquez sur le bouton Backup DataCD
  • +
+

+ +l'extraction de CD audio est prise en charge en utilisant le paquet Asunder. +

+ +

Enregistrement des données sur CD/DVD

+

+Ceci est pris en charge dans le premier onglet. On peut spécifier le type de gravure avant d'ajouter des fichiers. +Selon le type de gravure, les fichiers sont déchiffrés à la volée. +On peut supprimer les fichiers ajoutés simplement en double-cliquant sur le fichier dans l'arborescence. +La taille de la piste Total indique l'espace occupé sur le CD / DVD. +

+ +
    +
  • Choisissez data-cd dans Burn Type
  • +
  • Indiquez le fichiers/dossier ou cliquez sur Browse
  • +
  • Cliquez sur le bouton Add
  • +
  • Cliquez sur le bouton Burn Disc
  • +
+ +

Enregistrement de CD audio

+

+Ceci est pris en charge dans le premier onglet. les formats WAV, OGG, MP3 sont supportés. +Les fichiers OGG et MP3 sont automatiquement convertis et décompressé au format WAV pour la gravure. +

+
    +
  • Choisissez audio-cd dans "Burn Type"
  • +
  • Indiquez le fichiers/dossier ou cliquez sur Browse
  • +
  • Cliquez sur Add to auto-decode to uncompressed WAV (les fichiers OGG, MP3 sont décodés)
  • +
  • Cliquez sur le bouton Burn Disc
  • +
+ +

Enregistrement de video sur CD (VCD/SVCD)

+

+Ceci est pris en charge dans le premier onglet. Seul le format MPG est directement pris en charge: vidéo MPEG-1 pour VCD et MPEG-2 pour SVCD et DVD. +Les formats AVI, MOV, FLV, WMV vidéos sont automatiquement converties en un VCD/SVCD/DVD compatible avec le format vidéo mpg. +

+
    +
  • Sélectionnez ideo-dvd, vcd ou svcd dans Burn Type
  • +
  • Indiquez le fichier/répertoire ou cliquez sur Browse
  • +
  • Cliquez sur le bouton Add et cochez "Enable decoding video" pour les fichiers MPG (AVI, FLV, MOV, WMV sont décodés)
  • +
  • Cliquez sur le bouton Burn Disc
  • +
+ +

Problèmes fréquents

+
    +
  • Burnbox fonctionne uniquement avec le compte root: Cela arrive si l'utilisateur ne fait pas parti du group "cdrom"
    addgroup tux cdrom
  • +
  • Le cdrom n'est pas accessible en lecture ou écriture: Assurez-vous nque l'utilisateur à les bonnes permissions et qu'il edt bien membre du groupe "cdrom"
  • +
  • La gravure des fichiers MP3 ne fonctionne pas: Vérifiez si mpg123 est installé
  • +
  • Les options VCD ne fonctionnes pas: Installez vcdimager
  • +
  • Les fichiers AVI, FLV, WMV ne sont pas transcodés au format MPG: Vérifiez l'installation de ffmpeg
  • +
  • La gravure de DVD ne fonctionne pas: Vérifiez si vous avez installé dvd+rw-tools
  • +
+ + +
+ + + diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox.html Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,1 @@ +burnbox.en.html \ No newline at end of file diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/burnbox.pt_BR.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/burnbox.pt_BR.html Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,133 @@ + + + + Manual do Burnbox + + + + + + + + +
+ +

Sobre

+

+ O Burnbox suporta: +

+
    +
  • Gravação de imagens ISO
  • +
  • Backup de dados e CDs de áudio
  • +
  • Gravação de dados em CD/DVD (A gravação em DVD requer o pacote opcional dvd+rw-tools)
  • +
  • Gravação de CD de áudio (Para áudio MP3 é necessário o pacote mpg123)
  • +
  • Gravação de Video CD (VCD/SVCD) (Requer os pacotes vcdimager e ffmpeg)
  • +
+ +

Configurações de Dispositivo

+

+Assegure-se de que o drive de cdrom está configurado corretamente +na primeira aba do programa (device: /dev/cdrom, speed (auto-detected): 48; +Options: ). A entrada é definida a partir da configuração do DEVICE (dispositivo). +

+ +

Apagar CD/DVD-RW

+

+Use a opção Blank disk para apagar o conteúdo de um cd ou +dvd regravável e prepará-lo para gravação.

+ +

Gravação de Imagens ISO

+

+Utilize a segunda aba para gravações de imagem ISO. +

+
    +
  • Clique no botão Browse para especificar a imagem iso
  • +
  • Clique no botão Burn ISO para iniciar a gravação
  • +
+

+Você pode criar ou manipular imagens ISO com o aplicativo ISO Master. +

+ +

Backup de dados e CD de áudio

+

+Utilize a segunda aba. O pacote opcional cdrkit-isoinfo +pode ajudar a aumentar as velocidades de gravação. +

+
    +
  • Coloque o CD no drive
  • +
  • Selecione a opção de backup: "Save backup on Hard disk" (default) ou "Backup on CD disc"
  • +
  • Se você selecionar a opção "Save backup on Hard disk" (default), selecione a pasta para gravar o "CD/DVD backup"
  • +
  • Clique no botão Backup DataCD
  • +
+

+A extração de faixas de áudio de CDs é possível com o aplicativo Asunder. +

+ +

Gravação de CD/DVD de dados

+

+Você encontra esta opção na terceira aba. Pode-se especificar o tipo de +gravação antes de adiciona os arquivos. Dependendo do tipo de gravação +escolhido, os arquivos são decodificados durante a execução do programa. +Pode-se remover arquivos simplesmente clicando no nome do arquivo na +visão de pastas em árvore. A informação "total track size" mostra o +quanto o CD/DVD está ocupado. +

+ +
    +
  • Selecione "data-cd" em "Burn Type"
  • +
  • Especifique "file/folder" ou Browse
  • +
  • Clique em Add
  • +
  • Clique em Burn Disc
  • +
+ +

Gravação de CDs de áudio

+

+Você encontra esta opção na terceira aba. São suportados arquivos WAV, OGG +e MP3. OGG e MP3 são convertidos automaticamente em arquivos WAV sem +compressão para a gravação. +

+
    +
  • Selecione "audio-cd" in "Burn Type"
  • +
  • Especifique "file/folder" ou Browse
  • +
  • Clique em Add para decodificar arquivos OGG e MP3 em WAV
  • +
  • Clique em Burn Disc
  • +
+ +

Gravação de Video CD (VCD/SVCD)

+

+Você encontra esta opção na terceira aba. Somente a gravação de vídeos +no formato mpg são suportados diretamente: MPEG-1 para VCD e MPEG-2 +para SVCD e DVD. Arquivos AVI, MOV, FLV e WMV são automaticamente +convertidos para mpg compatível com VCD/SVCD/DVD. +

+
    +
  • Selecione "data-cd" em "Burn Type"
  • +
  • Especifique "file/folder" ou Browse
  • +
  • Clique em Add para decodificar AVI, FLV, MOV, WVM em MPG
  • +
  • Clique em Burn Disc
  • +
+ +

Problemas comuns

+
    +
  • O Burnbox funciona com o usuário root mas não com um usuário comum: + isto ocorre quando o usuário não se encontra no grupo "cdrom". + Para resolver execute addgroup usuário cdrom
  • +
  • Mensagens "cdrom not readable / writable": Certifique-se de que + o usuário possui as permissões necessárias e está no grupo "cdrom"
  • +
  • Gravação de áudio MP3 não funciona: verifique se o pacote + mpg123 está instalado
  • +
  • Opção VCD não funciona: verifique se o pacote vcdimager + está instalado
  • +
  • Arquivos AVI, FLV, WMV não são convertidos para MPG: verifique se + o pacote ffmpeg está instalado
  • +
  • Gravação de DVD não funciona: Verifique se o pacote dvd+rw-tools + está instalado
  • +
+ + +
+ + + diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/libmountbox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/libmountbox Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,675 @@ +#!/bin/sh +# +# Libmountbox provides devices list in suitable format for GTK tree +# and various dialog boxes to mount, umount, etc. +# +# (C) 2009 - SliTaz GNU/Linux project. +# + +# Short usage. +usage() +{ + echo -e "\nUsage: $0 command\n +Output commands: + list-mounted List all mounted devices in a suitable GTK tree format. + list-umounted List all umounted in a suitable GTK tree format. + create-file Create an empty file with predefined size. + add-old-crypto Create loop-eas device. + remove-crypto Delete a crypto device. + +GTKdialog boxes + mounted-fs-infos Display mounted devices info with actions. + umounted-fs-infos Display umounted devices info with actions. + remove-loop Confirmation box. + new-file Parameter box for file creation. + cryptomgr Manage crypto device with devmapper. + add-crypto Pass phrase dialog.\n" +} + +# Format df -h output for GTK tree. +mounted_fs_data() +{ + SIZE=`echo $RES | cut -d " " -f 2` + USED=`echo $RES | cut -d " " -f 3` + AVAILABLE=`echo $RES | cut -d " " -f 4` + PCT=`echo $RES | cut -d " " -f 5` + MOUNTED_ON=`echo $RES | cut -d " " -f 6` +} + +# Update BLOCKS SIZE UUID TYPE LABEL variables +getdevinfo() +{ + local dev + dev=${1#/dev/} + BLOCKS=0 + if [ -f /sys/block/$dev/size ]; then + BLOCKS=`cat /sys/block/$dev/size` + elif [ -f /sys/block/*/$dev/size ]; then + BLOCKS=`cat /sys/block/*/$dev/size` + fi + if [ $BLOCKS -gt 2097152 ]; then + unit=G + n=$(($BLOCKS * 10 / 2097152)) + elif [ $BLOCKS -gt 2048 ]; then + unit=M + n=$(($BLOCKS * 10 / 2048)) + else + unit=K + n=$(($BLOCKS * 5)) + fi + SIZE=$(($n/10)).$(($n%10))$unit + UUID=`blkid | grep ^/dev/$dev: | grep UUID= | sed 's/.*UUID=\"\([^\"]*\)\".*/\1/'` + TYPE=`blkid | grep ^/dev/$dev: | grep TYPE= | sed 's/.*TYPE=\"\([^\"]*\)\".*/\1/'` + LABEL=`blkid | grep ^/dev/$dev: | grep LABEL= | sed 's/.*LABEL=\"\([^\"]*\)\".*/\1/'` +} + +# Generate label for device manager +dmlabel() +{ + echo crypto-$(basename $1) +} + +unwrap() +{ +awk '{ + if ($2 == "") last=$1; + else { + print last $0 + last="" + } +}' +} + +case $1 in + list-mounted) + # List all fs found by: df -h + # + for dev in `df -h | grep ^/dev/ | cut -d " " -f 1` + do + RO='read-only' + mount | grep $dev | grep -q '(rw' && RO='' + RES=`df -h $dev | unwrap | grep ^$dev` + mounted_fs_data + echo "$dev | $SIZE | $USED | $AVAILABLE | $PCT | $MOUNTED_ON | $RO" + done ;; + list-umounted) + # List all umounted fs found by: fdisk -l + # + for dev in `fdisk -l | grep ^/dev | cut -d " " -f 1` + do + RES=`fdisk -l | grep $dev | sed s/*//g` + START=`echo $RES | cut -d " " -f 2` + END=`echo $RES | cut -d " " -f 3` + BLOCKS=`echo $RES | cut -d " " -f 4` + ID=`echo $RES | cut -d " " -f 5` + SYSTEM=`echo $RES | cut -d " " -f 6-` + # Bootable... + if fdisk -l | grep $dev | grep -q "*"; then + BOOT="yes" + else + BOOT="-" + fi + # Skip swap, extended, and mounted partitions. + if echo $RES | grep -q "swap" || echo $RES | grep -q "Extended" ; then + continue + elif mount | grep -q "^$dev "; then + continue + else + getdevinfo $dev + echo "$dev | $SIZE | $SYSTEM | $TYPE | $LABEL | $BOOT | $START | $END | $BLOCKS | $ID | $UUID" + fi + done + for dev in /dev/mapper/* ; do + [ -b $dev ] || continue + mount | grep -q "^$dev " && continue + mdev=dm-$(ls -l $dev | awk '{ print $6 }') + mount | grep -q "^/dev/$mdev " && continue + getdevinfo /dev/$mdev + echo "$dev | $SIZE | - | $TYPE | $LABEL | - | - | - | $BLOCKS | - | $UUID" + done + for dev in $(losetup | cut -d: -f1); do + [ -b $dev ] || continue + mount | grep -q "^$dev " && continue + getdevinfo $dev + echo "$dev | $SIZE | - | $TYPE | $LABEL | - | - | - | $BLOCKS | - | $UUID" + done + [ -e /dev/cdrom ] && + echo "/dev/cdrom | - | CD/DVD | iso9660 | - | - | - | - | - | - | -" + for i in /sys/devices/platform/floppy.*/block:*; do + [ -e $i ] && echo "/dev/${i#*block:} | - | - | - | floppy | - | - | - | - | -" + done + ;; + mounted-fs-infos) + # Mounted fs info and actions, rootfs or other fs. + # + if [ "$MOUNTED" == "/dev/root" ]; then + export MOUNTED_DEVICE=" + + + + + + + df -h / | grep ^rootfs + + + + + + +" + gtkdialog --center --program=MOUNTED_DEVICE + else + getdevinfo $MOUNTED + RES=`df -h $MOUNTED | grep ^$MOUNTED` + mounted_fs_data + export MOUNTED_DEVICE=" + + + + + + + " +if mount | grep $MOUNTED_ON | grep -q '(rw'; then + MOUNTED_DEVICE="$MOUNTED_DEVICE + " +else + MOUNTED_DEVICE="$MOUNTED_DEVICE + " +fi +MOUNTED_DEVICE="$MOUNTED_DEVICE + + + + +" + gtkdialog --center --program=MOUNTED_DEVICE + fi ;; + umounted-fs-infos) + # Mounted fs info and actions, rootfs or other fs. + # + case "$DEVICE" in + /dev/mapper/*) mdev=/dev/dm-$(ls -l $DEVICE | awk '{ print $6 }');; + *) mdev=$DEVICE;; + esac + getdevinfo $mdev + export UMOUNTED_DEVICE=" + + + + + + + + + " +while read type fsck args; do + [ "$TYPE" == "$type" ] || continue + which $fsck > /dev/null || continue +UMOUNTED_DEVICE="$UMOUNTED_DEVICE + " +done < + UMOUNTED_DEVICE + + + +" + gtkdialog --center --program=UMOUNTED_DEVICE ;; + loopmgr) + export LOOP_MANAGER=" + + + + 420120 + LOOP_DEV + " + while read dev offset file; do + DEV=$(echo $dev | cut -d: -f1) + [ -b "$DEV" ] || continue + MOUNT=$(mount | grep ^$DEV | awk '{ print $3 }') + getdevinfo $DEV + LOOP_MANAGER="$LOOP_MANAGER + $DEV | $file | $SIZE | $TYPE | $LABEL | $MOUNT | $offset | $UUID +" + done <LOOP_MANAGER + + + + + + + FILE + + + + + + + + + 0 + OFFSET + + + + + + + +" + gtkdialog --center --program=LOOP_MANAGER ;; + remove-loop) + getdevinfo $LOOP_DEV + export REMOVE_DEVICE=" + + + + + + + + + + +" + gtkdialog --center --program=REMOVE_DEVICE ;; + create-file) + file=$2 + size=$3 + [ -n "$file" -a -n "$size" ] || exit + [ "$4" == "true" ] && bs="1K" + [ "$5" == "true" ] && bs="1M" + [ "$6" == "true" ] && bs="1024M" + [ "$8" == "true" ] && dev="/dev/zero count=$size" + [ "$9" == "true" ] && dev="/dev/urandom count=$size" + [ "$10" == "true" ] && dev="/dev/zero seek=$size count=0" + if [ "$7" != "true" -a -e "$file" ]; then + export FILE_EXIST=" + + + + + + + + + + + +" + gtkdialog --center --program=FILE_EXIST + exit + fi + dd if=$dev of=$file bs=$bs + ;; + new-file) + export CREATE_FILE=" + + + + + + + + FILE +$( [ -n "$FILE" ] && echo "$FILE" ) + + + + + + + + + NEW_SIZE + 0 + + + + KB + + + + MB + + + + GB + + + + + + + + + RANDOM + + + + ZERO + + + + SPARSE + + + + OVERRIDE + false + + + + + +" + gtkdialog --center --program=CREATE_FILE ;; + cryptomgr) + missing="" + for i in libdevmapper dmsetup linux-md hashalot cryptsetup ; do + [ -d /var/lib/tazpkg/installed/$i ] || missing="$missing $i" + done + if [ -n "$missing" ]; then + export CRYPTO_MANAGER=" + + + + + + + + + + + + +" + gtkdialog --center --program=CRYPTO_MANAGER + exit + fi + for i in dm-mod dm-crypt aes-i586 ; do + lsmod | grep -q $i || modprobe $i + done + export CRYPTO_MANAGER=" + + + + 420120 + CRYTO_DEV + " + while read name ; do + [ -b /dev/mapper/$name ] || continue + DEV=/dev/dm-$(ls -l /dev/mapper/$name | awk '{ print $6 }') + MOUNT=$(mount | egrep "^$DEV|/dev/mapper/$name" | awk '{ print $3 }') + getdevinfo $DEV + case "$name" in + *crypto*) item="item icon=\"passwd\"";; + *) item="item icon=\"drive-harddisk\"";; + esac + CRYPTO_MANAGER="$CRYPTO_MANAGER + <$item>$name|$DEV | $SIZE | $TYPE | $LABEL | $MOUNT | $UUID +" + done < /dev/null) +EOT + CRYPTO_MANAGER="$CRYPTO_MANAGER + + + + + + + +$( (losetup ; blkid | grep -v /dev/loop ) | cut -d: -f1 | awk '{ printf "%s\n",$1}') + DEVICE + + + + + + CRYPTO + aes-256 + aes-192 + aes-128 + + + + + + + + + +" + gtkdialog --center --program=CRYPTO_MANAGER ;; + add-old-crypto) + # Not luks format + # Try old loop-eas + case "$CRYPTO" in + *128) key="16 sha256";; + *192) key="24 sha384";; + *) key="32 sha512";; + esac + getdevinfo $DEVICE + key=$(echo $PASS_PHRASE | hashalot -x -n $key) + echo 0 $BLOCKS crypt aes-plain $key 0 $DEVICE 0 | \ + dmsetup create $(dmlabel $DEVICE) + ;; + add-crypto) + if cryptsetup isLuks $DEVICE 2> /dev/null; then + xterm -T "Open LUKS" -e \ + "cryptsetup luksOpen $DEVICE $(dmlabel $DEVICE)" + else + export GET_PASS_PHRASE=" + + + + + + + + PASS_PHRASE + + + + +" + gtkdialog --center --program=GET_PASS_PHRASE + fi + ;; + remove-crypto) + cryptsetup luksClose $CRYTO_DEV + [ -e /dev/mapper/$CRYTO_DEV ] && dmsetup remove $CRYTO_DEV + ;; + *) + usage ;; +esac + +exit 0 diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/mountbox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/mountbox Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,183 @@ +#!/bin/sh +# +# Gtkdialog box for the mount/umount commands. Part of SliTaz tools. +# libmountbox: /usr/lib/slitaz/libmountbox +# +# (C) 2009 - SliTaz GNU/Linux project. +# +VERSION=20090802 +# Mountbox is only for root. +if test $(id -u) != 0 ; then + exec subox mountbox + exit 0 +fi + +# Commom mount point in /mnt +mkdir -p /mnt/harddisk + +# Just basic help. +export HELP=' + + + + + + + + + + + + + + + + + + + + + +' + +# Mount and umount buttons with fields for device and mount points. +MAIN_DIALOG=' + + + + + 500130 + DEVICE + + /usr/lib/slitaz/libmountbox list-umounted + /usr/lib/slitaz/libmountbox umounted-fs-infos + refresh:MOUNTED + refresh:DEVICE + + + + + 500110 + MOUNTED + ' + +# /dev/root +RES=`df -h / | grep rootfs` +dev="/dev/root" +SIZE=`echo $RES | cut -d " " -f 2` +USED=`echo $RES | cut -d " " -f 3` +AVAILABLE=`echo $RES | cut -d " " -f 4` +PCT=`echo $RES | cut -d " " -f 5` +MOUNTED_ON=`echo $RES | cut -d " " -f 6` +if [ $SIZE != 0 ]; then + ROOT_ITEM=" + $dev | $SIZE | $USED | $AVAILABLE | $PCT | $MOUNTED_ON" +fi +MAIN_DIALOG=${MAIN_DIALOG}${ROOT_ITEM} + +# Now we have rootfs and icons, list all mounted fs. +DEVICE='/usr/lib/slitaz/libmountbox list-mounted + /usr/lib/slitaz/libmountbox mounted-fs-infos + refresh:MOUNTED + refresh:DEVICE + + + + + + + + + + /media/cdrom + MOUNT_POINT + + + + ' + +# Get the mount points list. +MAIN_DIALOG=${MAIN_DIALOG}${DEVICE} + +# Actions buttons (mount, umount, eject, etc). +ACTIONS=' + + + + + + + + + + + + + + +' + +export MAIN_DIALOG=${MAIN_DIALOG}${ACTIONS} +gtkdialog --center --program=MAIN_DIALOG >/dev/null + +exit 0 diff -r b4c3846a03c1 -r 0a831f1f1b51 oldstuff/gtkdialog/mountbox.desktop --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oldstuff/gtkdialog/mountbox.desktop Sat Apr 28 20:16:24 2012 +0200 @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Mount devices +Name[fr]=Monter un périphérique +Name[pt]=Montagem de Dispositivos +Name[pt_BR]=Montagem de Dispositivos +Comment=Mount devices on mount points +Exec=subox mountbox +Icon=media-flash +Type=Application +Categories=System;Application; diff -r b4c3846a03c1 -r 0a831f1f1b51 rootfs/usr/share/applications/bootfloppybox.desktop --- a/rootfs/usr/share/applications/bootfloppybox.desktop Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Boot floppy/cdrom creation tool -Name[pt]=Criação de disquete/cdrom de boot -Name[pt_BR]=Criação de disquete/cdrom de boot -Name[fr]=Disquette/cdrom de démarrage -Exec=subox bootfloppybox -Icon=gtk-floppy -Type=Application -Categories=System; diff -r b4c3846a03c1 -r 0a831f1f1b51 rootfs/usr/share/applications/burnbox-doc.desktop --- a/rootfs/usr/share/applications/burnbox-doc.desktop Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Burnbox manual -Name[pt]=Manual do Burnbox -Name[pt_BR]=Manual do Burnbox -Exec=browser file:///usr/share/doc/slitaz-tools/burnbox.html -Icon=text-html -Type=Application -Categories=Documentation; diff -r b4c3846a03c1 -r 0a831f1f1b51 rootfs/usr/share/applications/burnbox.desktop --- a/rootfs/usr/share/applications/burnbox.desktop Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Burn CD/DVD -Name[fr]=Graver des CD ou DVD -Name[pt]=Gravador de CD/DVD -Name[pt_BR]=Gravador de CD/DVD -Comment=Burn ISO images or audio tracks to CD or DVD -Exec=burnbox -Icon=drive-optical -Type=Application -Categories=GTK;Utility; diff -r b4c3846a03c1 -r 0a831f1f1b51 rootfs/usr/share/applications/mountbox.desktop --- a/rootfs/usr/share/applications/mountbox.desktop Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Mount devices -Name[fr]=Monter un périphérique -Name[pt]=Montagem de Dispositivos -Name[pt_BR]=Montagem de Dispositivos -Comment=Mount devices on mount points -Exec=subox mountbox -Icon=media-flash -Type=Application -Categories=System;Application; diff -r b4c3846a03c1 -r 0a831f1f1b51 tinyutils/bootfloppybox --- a/tinyutils/bootfloppybox Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1477 +0,0 @@ -#! /bin/sh -# -# Gtkdialog box for the mount command. Part of SliTaz tools. -# -VERSION=20120412 - -# Check if user is root. -check_root() -{ - if test $(id -u) != 0 ; then - echo -e " -You must be root to run `basename $0`. Please type 'su' and -root password to become super-user.\n" - exit 0 - fi -} - -# This function is used after each screen to continue or abort install. -check_retval() -{ - case $retval in - 1) - rm -f /tmp/floppybox.grub.menu - echo -e "\nVoluntary exit.\n" && exit 0 ;; - 255) - rm -f /tmp/floppybox.grub.menu - echo -e "ESC pressed.\n" && exit 0 ;; - esac -} - -# Trigger floppy driver to update /sys/devices/platform/ -dd if=/dev/fd0 bs=1k count=1 > /dev/null 2>&1 - -# check or list floppy devices. -list_floppy() -{ - local list - list="" - for i in /sys/devices/platform/floppy.*/block/*; do - [ -d $i ] || continue - list="$list $(basename $i)" - done - [ -n "$1" ] || echo $list - [ -n "$list" ] -} - -# dialog to select the floppy device -select_floppy() -{ - DEVICE="$DIALOG --title \" Floppy device \" --backtitle \"Boot Floppy Creation\" --clear --extra-button --extra-label \"Format\" --colors --radiolist \" -Select boot device -\" 18 70 50" - on=on - for i in $(list_floppy); do - DEVICE="$DEVICE /dev/$i 'Floppy in $i' $on" - on=off - done - DEVICE="$DEVICE floppy \"floppy image file boot.fd\" $on" - DEVICE="$DEVICE cdrom \"cdrom image file boot.iso\" off 2>&1 1>&3" - exec 3>&1 - DEVICE=`eval $DEVICE` - retval=$? - exec 3>&- - check_retval - if [ "$retval" = "3" ]; then - case "$DEVICE" in - /dev/*) fdformat -n $DEVICE;; - esac - fi -} - -# Build menu for grub or grub4dos -mkmenu() -{ -if [ "$1" = "grub4dos" ]; then - SAVEDEFAULT="save default" - cat > /tmp/floppybox.grub.menu < /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu </dev/null | strings) - -EOT -[ -f /usr/share/boot/btmgr -a -f /usr/share/boot/memdisk.lzma ] \ - && entry=$(($entry + 1)) && cat >> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu <> /tmp/floppybox.grub.menu < /media/floppy/grldr - cp $1/boot/* /media/floppy/boot 2> /dev/null - cp /tmp/floppybox.grub.menu /media/floppy/menu.lst - umount -d /media/floppy - bootlace --floppy --sectors-per-track=18 --heads=2 \ - --chs --ext2 $DEVICE - else - mkdir -p /media/floppy/boot/grub - cp /usr/lib/grub/i386-pc/stage? /media/floppy/boot/grub - cp -a $1/boot /media/floppy - cp /tmp/floppybox.grub.menu /media/floppy/boot/grub/menu.lst - grub-set-default --root-directory=/media/floppy 0 - echo "($GRUB_DEV) $(losetup | grep $DEVICE | cut -d: -f1)" > $1/device.map - [ -n "$LOOP" ] && LOOP="--device-map=$1/device.map" - grub $LOOP --batch < /dev/null - cp /tmp/floppybox.grub.menu $1/boot/grub/menu.lst - if [ "$2" = "grub4dos" ]; then - unlzma -c /usr/share/boot/grldr.lzma > $1/boot/grub/grldr - genisoimage -R -o boot.iso -b boot/grub/grldr \ - -c boot/boot.cat -no-emul-boot -boot-load-seg 0x1000 \ - -hide boot/boot.cat -input-charset iso8859-1 $1 - else - cp /usr/lib/grub/i386-pc/stage2_eltorito $1/boot/grub - genisoimage -R -o boot.iso -b boot/grub/stage2_eltorito \ - -c boot/boot.cat -no-emul-boot -boot-load-size 4 \ - -hide boot/boot.cat -input-charset iso8859-1 \ - -boot-info-table $1 - fi ;; - esac -} - -# Build /init for floppies from iso image -buildinit() -{ - mv $1/init $1/init.org - for i in /dev/tty0 /dev/[sh]d[ab]? ; do - [ -e $1$i ] || cp -a $i $1/dev - done - cat > $1/init < /tmp/bs.\$\$ 2> /dev/null - [ -s /tmp/bs.\$\$ ] || continue - [ "\$(md5sum < /tmp/bs.\$\$)" != "\$tmp" ] || continue - rm -f /tmp/bs.\$\$ - break - done - dd if=/dev/fd0 of=/tmp/rootfs.\$num 2> /dev/null || continue - cat /tmp/rootfs.\$num >> \$1 - rm -f /tmp/rootfs.\$num - num=\$((\$num+1)) -} - -mount -t proc proc /proc -total=\$(grep MemTotal /proc/meminfo | sed 's/[^0-9]//g') -# the floppy driver may not be included in kernel -insmod /lib/modules/*/kernel/drivers/block/floppy.ko.gz 2> /dev/null -# loram may put floppy.ko.gz module in /lib -insmod /lib/floppy.ko.gz 2> /dev/null -case "\$(/sbin/blkid 2>&1)" in -*not\ found*) - cat < /dev/null 2>&1 || - ( zcat /tmp/rootfs 2> /dev/null || unlzma -c /tmp/rootfs ) | cpio -idmu - if [ -d /mnt/slitaz ]; then - cp /tmp/rootfs /mnt/slitaz/rootfs.\$num || - mv -f /mnt/slitaz /mnt/slitaz-aborted - fi - rootfslist="\$rootfslist \$num" - rm -f /tmp/rootfs* - mkdir /sbin 2> /dev/null -done < /mnt/slitaz/install.sh < /dev/null 2>&1 || - ( zcat \\\$dir/rootfs.\\\$i 2> /dev/null || unlzma -c \\\$dir/rootfs.\\\$i ) | cpio -idmu -done -if ! mv -f init.org init 2> /dev/null; then - for i in \\\$(ls rootfs*gz | sed '1!G;h;\\\$!d'); do - mount -o loop,ro \\\$i /media/cdrom && rm -f \\\$i - cp -a /media/cdrom/. . - umount -d /media/cdrom - done -fi -mkdir boot && cp \\\$dir/bzImage boot -cp -a /usr/lib/grub/i386-pc boot/grub -cat > boot/grub/menu.lst< /dev/null 2>&1 - fullsize=1 - while [ \$(stat -c %s /mnt/slitaz/bzImage.fd) -lt \$fullsize ]; do - cat_floppy /mnt/slitaz/bzImage.fd - setup=\$(dd if=/mnt/slitaz/bzImage.fd skip=497 bs=1 count=1 2> /dev/null | hexdump -e '"" 1/1 "%d" "\n"') - syssize=\$(dd if=/mnt/slitaz/bzImage.fd skip=500 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') - cmdline=\$(dd if=/mnt/slitaz/bzImage.fd skip=552 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') - initrd=\$(dd if=/mnt/slitaz/bzImage.fd skip=540 bs=1 count=4 2> /dev/null | hexdump -e '"" 1/4 "%d" "\n"') - [ \$cmdline -eq 0 ] || cmdline=512 - size=\$((512 + \$setup * 512 + \$cmdline + \$syssize * 16)) - [ -s /etc/slitaz-release ] || initrd=0 - fullsize=\$((\$size + \$initrd + 512)) - [ \$(stat -c %s /mnt/slitaz/bzImage.fd) -lt \$size ] || - name="the first initramfs" - done - [ -s /etc/slitaz-release ] && - dd if=/mnt/slitaz/bzImage.fd bs=512 skip=\$((\$setup+1+\$cmdline/512+(31+\$syssize)/32)) > /mnt/slitaz/rootfs.0 && - dd bs=1 seek=\$initrd count=0 of=/mnt/slitaz/rootfs.0 - dd if=/dev/zero of=/mnt/slitaz/bzImage.fd conv=notrunc bs=1 count=4 seek=552 - dd if=/dev/zero of=/mnt/slitaz/bzImage.fd conv=notrunc bs=1 count=8 seek=536 - dd if=/mnt/slitaz/bzImage.fd bs=512 count=\$((\$setup+1)) > /mnt/slitaz/bzImage - dd if=/mnt/slitaz/bzImage.fd bs=512 skip=\$((\$setup+1+\$cmdline/512)) >> /mnt/slitaz/bzImage - rm -f /mnt/slitaz/bzImage.fd - size=\$((512 + \$setup * 512 + \$syssize * 16)) - dd bs=1 seek=\$size count=0 of=/mnt/slitaz/bzImage > /dev/null 2>&1 - [ \$(stat -c %s /mnt/slitaz/bzImage) -eq \$size ] || - mv -f /mnt/slitaz /mnt/slitaz-aborted -fi -[ -d /sbin ] && mv -f /init.org /init && exec /init -exec /bin/ash < /dev/tty0 > /dev/tty0 2>&1 -EOTEOT - chmod +x $1/init -} - -# write a 32 bits data -# usage: storelong offset data32 file -storelong() -{ - printf "00000 %02X %02X %02X %02X \n" \ - $(( $2 & 255 )) $(( ($2>>8) & 255 )) \ - $(( ($2>>16) & 255 )) $(( ($2>>24) & 255 )) | \ - hexdump -R | dd bs=1 conv=notrunc of=$3 seek=$(( $1 )) 2> /dev/null -} - -# read a 32 bits data -# usage: getlong offset file -getlong() -{ - dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \ - hexdump -e '"" 1/4 "%d" "\n"' -} - -# output floppy images set -floppysetcat() -{ - KERNEL="$1" - INITRD="$2" - shift 2 - CMDLINE="$@" - - # bzImage offsets - SetupSzOfs=497 - SyssizeOfs=500 - CodeAdrOfs=0x214 - RamfsAdrOfs=0x218 - RamfsLenOfs=0x21C - ArgPtrOfs=0x228 - - # boot+setup address - SetupBase=0x90000 - - stacktop=0x9E00 - - bs=/tmp/bs$$ - - # Get and patch boot sector - dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null - uudecode < /dev/null -begin-base64 644 - -/L+6nWgAkAcGF4n8McC5HQDzq1sfD6mg8X1ABlfFd3ixBvOlZWaPR3gGH8ZF -+D/6l1hB6DQBvgACA3QO6HYBWwseKAJ0LFNH6AoBXuhmAbAgzRCwCM0QTuhl -ATwIdAOIBK05NigCdPDoPgE8CnXgiHz+ieb/TBD/TBi/9AGBTRz/gMdFMACc -sBCxBUi0k4lEHLABiUQUmGaY0+BIZgMFZtPoaAAQB7+AACn4nHMCAccx21BW -6J4AXrkAgLSH/kQczRVYnXfcoRoCvxwCsQk4RBxyuJPNE+oAACCQsEYoyL7b -AejSAF3rI4D5E3IEOMF3a4D+AnIEOOZ3bGCB/QAGdCoGUlFTlrQCULEGtQTB -xQSwDyHoBJAnFEAn6IwA/s117LAgzRDitOiWAJjNE2FSUCjIdwKwAZg5+HIC -ifhQtALNE5VeWFpyoJVBjuGAxwJPdFFOdfSM4ZU4wXVFiMj+xrEBOOZ1O4j0 -/sW2AID9UHIwOi7wAXIqtQBgvt4B/kQMU+gxAFvoOAB1FlKYzRO4AQLNE1rQ -1Dpk/nXqRgjkdeVh64sWB7AxLAO0DrsHAM0QPA1088OwDejv/6wIwHX4w79s -BLFbZQINuA0BZToNdArNFnT0mM0Wju9Hw1g6AEluc2VydCBkaXNrIDEuBw0A -AA== -==== -EOT - - # Get setup - setupsz=$(getlong $SetupSzOfs $bs) - setupszb=$(( $setupsz & 255 )) - dd if=$KERNEL bs=512 skip=1 count=$setupszb 2> /dev/null >> $bs - - # Store cmdline after setup - if [ -n "$CMDLINE" ]; then - echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs - storelong ArgPtrOfs $(( $SetupBase + $stacktop )) $bs - fi - - # Compute initramfs size - initrdlen=0 - padding=0 - for i in $( echo $INITRD | sed 's/,/ /' ); do - [ -s "$i" ] || continue - initrdlen=$(( $initrdlen + $padding )) - padding=$(stat -c %s $i) - initrdlen=$(( $initrdlen + $padding )) - padding=$(( 4096 - ($padding & 4095) )) - [ $padding -eq 4096 ] && padding=0 - done - Ksize=$(( $(getlong $SyssizeOfs $bs)*16 )) - Kpad=$(( (($Ksize+4095)/4096)*4096 - Ksize )) - if [ $initrdlen -ne 0 ]; then - Kbase=$(getlong $CodeAdrOfs $bs) - storelong $RamfsAdrOfs \ - $(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs - storelong $RamfsLenOfs $initrdlen $bs - fi - - # Output boot sector + setup + cmdline - dd if=$bs 2> /dev/null - - # Output kernel code - dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null - - # Pad to next sector - Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) )) - [ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null - - # Output initramfs - padding=0 - for i in $( echo $INITRD | sed 's/,/ /' ); do - [ -s "$i" ] || continue - [ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding - dd if=$i 2> /dev/null - padding=$(( 4096 - ($(stat -c %s $i) & 4095) )) - [ $padding -eq 4096 ] && padding=0 - done - - # Cleanup - rm -f $bs -} - -# Create boot floppy set from kernel, initrd & cmdline -floppyset() -{ - floppysetcat "$@" | split -b 1440k /dev/stdin floppy$$ - i=1 - ls floppy$$* | while read file ; do - output=$(printf "fd%03d.img" $i) - cat $file /dev/zero | dd bs=1k count=1440 of=$output conv=sync 2> /dev/null - rm -f $file - i=$(( $i + 1 )) - done -} - -# Create boot floppy set from a SliTaz ISO image -floppysetfromiso() -{ - mkdir /tmp/iso$$ - mount -o loop,ro $1 /tmp/iso$$ - rootfs="$(ls /tmp/iso$$/boot/rootfs*z 2> /dev/null | tail -1)" - bzimage=/tmp/iso$$/boot/bzImage - if [ -z "$rootfs" -o ! -s $bzimage ]; then - umount -d /tmp/iso$$ - rm -rf /tmp/iso$$ - echo "Not a SliTaz ISO image !" - return 1 - fi - mkdir -p /tmp/rootfs$$/fs - n=1 - for i in $(ls /tmp/iso$$/boot/rootfs*z | sort -r); do - mkdir /tmp/rootfs$$/$n - ln -s $i /tmp/rootfs$$/$n - n=$(($n + 1)) - done - echo "Unpacking rootfs..." - ( zcat $rootfs 2> /dev/null | unlzma -c $rootfs ) | \ - ( cd /tmp/rootfs$$/fs ; cpio -idm > /dev/null ) - if [ $(unlzma -c $rootfs 2> /dev/null| wc -c) -gt $(stat -c %s $rootfs) ]; then - if [ $(du -ck $rootfs $bzimage | awk 'END { print $1 }') -gt 15296 ]; then - # The rootfs.gz file is too big, extract a minimum bootfs with busybox stuff - echo "Extracting bootfs..." - mv /tmp/rootfs$$/fs /tmp/rootfs$$/fs0 - for i in lib bin sbin usr/bin usr/sbin ; do - mkdir -p /tmp/rootfs$$/fs/$i - done - cd /tmp/rootfs$$/fs0 - dir=$(echo lib/modules/*/kernel/drivers/block) - [ -d $dir ] && mkdir -p ../fs/$dir - [ -f $dir/floppy.ko.gz ] && mv $dir/floppy.ko.gz ../fs/$dir - for i in dev init mnt proc sys tmp ; do - mv $i ../fs - done - mv lib/ld-* ../fs/lib - LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so bin/busybox | \ - awk '/\/lib\/lib/ { print $3 }' | while read lib ; do - while [ -L .$lib ]; do - local target - target="$(readlink ".$lib")" - case "$target" in - /*) ;; - *) target="$(dirname $lib)/$target" ;; - esac - mv ".$lib" ../fs/lib - lib="$target" - done - mv ".$lib" ../fs/lib - done - for i in $(bin/busybox | awk '{ if (s) printf "%s",$0 } - /Currently/ { s=1 }' | sed 's/,//g'); do - for j in bin sbin usr/bin usr/sbin ; do - [ -e $j/$i ] && mv $j/$i ../fs/$j/$i - done - done - mv bin/busybox ../fs/bin - [ -e ../fs/bin/cpio ] || mv bin/cpio ../fs/bin - rm -f ../1/* - find | cpio -o -H newc | lzma e ../1/rootfs.gz -si - cd - > /dev/null - rm -rf /tmp/rootfs$$/fs0 - else - # The rootfs.gz file fits in 15MB, no need to split it. - rm -rf /tmp/rootfs$$/1 - fi - else - # This is a loram rootfs.gz, extract loram bootstrap - echo "Splitting loram rootfs..." - offset=$(awk '/07070100/ { o+=index($0,"07070100"); print int(o/4) ; exit } { o+=1+length() }' < $rootfs) - dd if=$rootfs skip=$(($offset / 1024)) bs=4k count=1 2> /dev/null | \ - dd skip=$(($offset % 1024)) bs=4 of=/tmp/rootfs$$/1/root 2> /dev/null - dd if=$rootfs skip=$((1 + ($offset / 1024) )) bs=4k \ - >> /tmp/rootfs$$/1/root 2> /dev/null - rm -f /tmp/rootfs$$/1/rootfs* - fi - # Create extra rootfs floppies - for i in /tmp/rootfs$$/[1-9]*/root* ; do - [ -f $i ] || continue - echo "Creating floppies for rootfs $(basename $(dirname $i) )..." - case "$(dd if=$i bs=1 count=4 2> /dev/null)" in - 0707) cat $i ;; - *) zcat $i 2> /dev/null || unlzma -c $i ;; - esac | cpio -t > $(dirname $i)/files.list - sed -i '/ blocks$/d' $(dirname $i)/files.list - x=$(readlink $i) - [ -n "$x" ] || x=$i - pad=$(( $(stat -c %s $x ) % 1474560 )) - [ $pad -ne 0 ] && pad=$(( 1474560 - $pad )) - dd if=/dev/zero bs=1 count=$pad 2> /dev/null | cat $i - | \ - split -b 1440k /dev/stdin $(dirname $i)/floppy - done - selection="$(grep -s append /tmp/iso$$/boot/isolinux/common.cfg | sed 's/.*append //')" - [ -n "$selection" ] || selection="0 slitaz" - set -- $selection - selection="" - while [ -n "$2" ]; do - [ ! -d /tmp/rootfs$$/1 -a -z "$4" ] && break - case "$1" in - *G) selection="$2 $(( ${1%G} * 1024 * 1024 )) $selection" ;; - *M) selection="$2 $(( ${1%M} * 1024 )) $selection" ;; - *) selection="$2 $1 $selection" ;; - esac - shift 2 - done - echo "Creating /init ..." - base=100 - set -- $selection - for i in /tmp/rootfs$$/[1-9]* ; do - [ -d $i ] || continue - while read file; do - [ -e $i/../fs/$file ] && continue - [ $(grep -- "$file" $i/../*/files.list | wc -l) -eq 1 ] && - break - done < $i/files.list - printf "%s %s %03d %d %s %s\n" \ - $1 $2 $base $(ls $i/floppy* | wc -l) $file \ - $(cat $i/floppy* | md5sum - | awk '{print $1}') - base=$(($base + 100)) - shift 2 - done | buildinit /tmp/rootfs$$/fs - cmdline="$(grep 'append *initrd' /tmp/iso$$/boot/isolinux/isolinux.cfg | tail -n 1 | sed 's/.*gz //')" - ( cd /tmp/rootfs$$/fs ; find | cpio -o -H newc ) | lzma e /tmp/rootfs$$/rootfs -si - echo "Creating first stage boot floppies..." - floppyset $bzimage /tmp/rootfs$$/rootfs "$cmdline" - base=100 - for i in /tmp/rootfs$$/[1-9]* ; do - [ -d $i ] || continue - j=0 - for f in $i/floppy* ; do - mv $f $(printf "fd%03d.img" $(( $base + $j )) ) - j=$(($j + 1)) - done - base=$(($base + 100)) - done - rm -rf /tmp/rootfs$$ - umount -d /tmp/iso$$ - rm -rf /tmp/iso$$ -} - -# Show new boot floppy set -dialogwritefloppyset() -{ - if ! list_floppy check; then - du -h fd???.img - return - fi - while true; do - exec 3>&1 - IMAGE=`$DIALOG --title " Write floppy image " \ - --backtitle "Boot floppy set creation on $DEVICE" --clear \ - --colors --radiolist " - Insert a blank floppy in drive and -select the floppy image you want to write. -" 18 46 46 \ - $(on="on"; for i in fd???.img; do echo "$i $(du -h $i | cut -f1) $on "; on="off"; done) 2>&1 1>&3` - retval=$? - exec 3>&- - check_retval - dd if=$IMAGE of=$DEVICE - done -} - -dialognofloppyset() -{ - cat << EOT -The boot loader can't load the kernel and the initramfs in the first 16MB -of RAM. The total size exceeds 15MB. No floppy image is created. -EOT -} - -# Check for iso 9660 image -isiso() -{ - mkdir /tmp/iso$$ - mount -o loop,ro $1 /tmp/iso$$ 2> /dev/null - status=$? - umount -d /tmp/iso$$ 2> /dev/null - rm -rf /tmp/iso$$ - return $status -} - -dialogfloppyset() -{ - : ${DIALOG=dialog} - while true; do - exec 3>&1 - KERNEL=`$DIALOG --title " Select a Linux kernel or a SliTaz iso " \ - --backtitle "Boot floppy set creation on $DEVICE" --clear \ - --colors --fselect "$PWD" 10 70 \ - 2>&1 1>&3` - retval=$? - exec 3>&- - check_retval - [ -f $KERNEL ] && break - done - if isiso $KERNEL ; then - bootfloppybox call mkisofloppies $KERNEL - dialogwritefloppyset - return - fi - exec 3>&1 - INITRD=`$DIALOG --title " Select an Initramfs " \ - --backtitle "Boot floppy set creation on $DEVICE" --clear \ - --colors --fselect "$PWD" 10 70 \ - 2>&1 1>&3` - retval=$? - exec 3>&- - check_retval - [ -f "$INITRD" ] || INITRD="" - exec 3>&1 - CMDLINE=`$DIALOG --title " Enter boot command line " \ - --backtitle "Boot floppy set creation on $DEVICE" --clear \ - --colors --inputbox "Kernel command line" 10 70 "rw root=/dev/null autologin" \ - 2>&1 1>&3` - retval=$? - exec 3>&- - check_retval - bootfloppybox call mkfloppies "$KERNEL" "$INITRD" "$CMDLINE" && - dialogwritefloppyset || - dialognofloppyset -} - -# -# Create floppy image set -# -export IMAGE_SET=' - - - - - - - - - - - - - - - - - - ISO - - - - - - - - - - FILE_DIRECTORY - /tmp - - - - - - - - - - - - - - - - - - - - KERNEL - - - - - - - - - - INITRD - - - - - - - - - - CMDLINE - rw root=/dev/null autologin - - - - - - - - - OUTPUT_DIRECTORY - /tmp - - - - - - - - - - - - - - -' - -# -# Read/write floppy images -# -export FLOPPY_IMAGE=' - - - - - - - - - DEVICE' -FLOPPY_DEV="" -for i in $(list_floppy); do - FLOPPY_DEV="$FLOPPY_DEV - /dev/$i" -done - FLOPPY_IMAGE="$FLOPPY_IMAGE$FLOPPY_DEV - - - - - - - - - - - - IMAGE - - - - - - - - - - - - -" - -gtkdialogshowfloppyset() -{ -# -# Show floppy image set -# -IMAGE_SHOW=' - - - - - - - 50140 - - du -h fd???.img | sed "s/\t/|/" - - -' - [ 0$1 -gt $((15 * 1024 * 1024)) ] && IMAGE_SHOW="$IMAGE_SHOW - - - - - - - -" - list_floppy check && IMAGE_SHOW="$IMAGE_SHOW - -" - IMAGE_SHOW="$IMAGE_SHOW - - - - -" - export IMAGE_SHOW - gtkdialog --program=IMAGE_SHOW -} - -while true; do - -if [ "$1" == "call" ]; then - case "$2" in - mkmenu) mkmenu $3;; - mkisofloppiesxterm) - shift 2 - xterm -geometry 80x16 -title "Build boot floppies from ISO" \ - -e "$0 call mkisofloppies $@ ; echo -e \"----\nENTER to continue...\" && read close" - gtkdialogshowfloppyset - ;; - mkisofloppies) - shift 2 - floppysetfromiso $@ - ;; - mkfloppies) - shift 2 - floppyset "$@" - sz=$(cat fd???.img | wc -c) - if [ -n "$XAUTHORITY" ]; then - gtkdialogshowfloppyset $sz - else - if [ $sz -gt $((15 * 1024 * 1024)) ]; then - cat < \ - $DIR/boot/btmgr.gz \ - && unlzma -c /usr/share/boot/memdisk.lzma > \ - $DIR/boot/memdisk - [ -f /usr/share/boot/plpbt.bin ] \ - && cp /usr/share/boot/plpbt.bin $DIR/boot - [ -f /usr/share/boot/etherboot ] \ - && cp /usr/share/boot/etherboot $DIR/boot - [ -f /boot/gpxe ]\ - && cp /boot/gpxe $DIR/boot - [ -f /usr/share/boot/memtest.lzma -a \ - -f /usr/share/boot/memdisk.lzma ] \ - && unlzma -c /usr/share/boot/memtest.lzma | \ - cat - /dev/zero | dd bs=18k count=80 | \ - gzip -9 > $DIR/boot/memtest.gz \ - && unlzma -c /usr/share/boot/memdisk.lzma > \ - $DIR/boot/memdisk - install_grub $DIR $3 - ;; - *) - case "$file" in - *.lzma) action="unlzma -c";; - *.gz) action="zcat";; - *) action="cat";; - esac - case "$DEVICE" in - /dev/*) $action $file > $DEVICE;; - flopp*) $action $file | cat - /dev/zero | \ - dd bs=18k count=80 > boot.fd;; - cdrom*) - mkdir -p $DIR/boot/grub - case "$3" in - btmgr|memtest) - $action $file | cat - /dev/zero | \ - dd bs=18k count=80 | \ - gzip -9 > $DIR/boot/$3.gz - unlzma -c /usr/share/boot/memdisk.lzma \ - > $DIR/boot/memdisk - cat > /tmp/floppybox.grub.menu << EOT -# grub menu -timeout 0 -title $3 -kernel /boot/memdisk floppy c=80 h=2 s=18 -initrd /boot/$3.gz -EOT - ;; - *) $action $file > $DIR/boot/$3 - cat > /tmp/floppybox.grub.menu << EOT -# grub menu -timeout 0 -title $3 -kernel /boot/$3 -EOT - ;; - esac - install_grub $DIR grub - ;; - esac - ;; - esac - rm -rf $DIR - ;; - get-plop) - mkdir -p /tmp/get-plop$$ - PLOP_URL=http://mirror.slitaz.org/boot/plpbt.bin - wget -O - $PLOP_URL > /tmp/get-plop$$/plpbt.bin - VERSION="$(strings /tmp/get-plop$$/plpbt.bin \ - | grep 'Boot Manager v' | sed 's/.* v\([0-9\.]*\) .*/\1/')" - mkdir -p $(dirname /tmp/get-plop$$/plop-$VERSION/fs/$3) - mv /tmp/get-plop$$/plpbt.bin \ - /tmp/get-plop$$/plop-$VERSION/fs/$3 - if [ -s /tmp/get-plop$$/plop-$VERSION/fs/$3 ]; then - cat > /tmp/get-plop$$/plop-$VERSION/receipt <&2 - exit 1;; - esac - exit 0 -fi - -if [ -z "$XAUTHORITY" ]; then - - : ${DIALOG=dialog} - - DEVICE=/dev/fd0 - list_floppy check || DEVICE="floppy" - while true; do - exec 3>&1 - ID_SOURCE=`$DIALOG --title " Choose a boot floppy " \ - --backtitle "Boot Floppy Creation on $DEVICE" --clear \ - --extra-button --extra-label "Change floppy" \ - --colors --radiolist " -Create a floppy or a cdrom to boot a LiveCD in a PXE network... -May need a floppy disk in drive. Erase the whole floppy disk. - " 18 70 50\ - FloppySet "Boot Slitaz with floppies only." on \ - SmartBtmgr "Boot any partition or ATAPI CD-ROM." off \ - Plop "Boot USB harddisk floppy or CD/DVD." off \ - Etherboot "Replacement for proprietary PXE ROMs." off \ - gPXE "Boot from http://boot.slitaz.org/" off \ - Memtest86+ "Memory failures detection tool." off \ - Grub4DOS "Enhanced grub version supporting NTFS." off \ - Grub "Boot loader with command shell." off \ - 2>&1 1>&3` - retval=$? - exec 3>&- - check_retval - if [ "$retval" = "3" ]; then - select_floppy - continue; - fi - while read key file pkg; do - [ "$key" = "$ID_SOURCE" ] || continue - if [ ! -f "$file" ]; then - $DIALOG --title " Install package " --colors \ - --backtitle "Boot Floppy Creation" --clear \ - --yes-label "Install" \ - --no-label "Quit" \ - --yesno "The package $pkg is not yet installed. Install it ?" 18 70 - retval=$? - if [ "$pkg" = "plop" ]; then - bootfloppybox call get-plop $file - else - tazpkg get-install $pkg - fi - fi - bootfloppybox call install "$pkg" "$DEVICE" "$file" - exit 0 - done < - - - - -" - if [ -f $file ]; then - if [ "$pkg" = "grub" -o "$pkg" = "grub4dos" ]; then - tmp="$tmp - -" - elif [ "$pkg" = "etherboot" ]; then - tmp="$tmp - -" - elif [ "$pkg" = "gpxe" ]; then - tmp="$tmp - - - - - $(dd if=$file bs=1 skip=519 count=255 2>/dev/null | strings) - URL - - - - - - -" - fi - receipt=/var/lib/tazpkg/installed/$pkg/receipt - if [ -f $receipt ]; then - . $receipt - tmp="$tmp - -" - fi - tmp="$tmp - - - -" - else - tmp2="tazpkg get-install $pkg --forced" - [ "$pkg" = "plop" ] && tmp2="bootfloppybox call get-plop $file" - tmp="$tmp - - - - - - -" - fi - BOOT_DIALOG="$BOOT_DIALOG$tmp" -done < -# Rohit Joshi -# -VERSION=20100315 -TMPDIR="/tmp/burn-cd" - -chk_install() -{ - for pkg in $@ - do - if [ ! -d /var/lib/tazpkg/installed/${pkg} ]; then - UNINSTALLED="$UNINSTALLED $pkg" - fi - done - if [ ! "$UNINSTALLED" = "" ] ; then - xterm -geometry 80x16 -title "INSTALL PACKAGE" \ - -e "echo -n \"This option depends on $UNINSTALLED. Please install and try again..\"; sleep 4;" - fi -} - -# Auto Install DEPENDS and/or SUGGESTED -install() -{ - #echo "pkgs to install: $1" - for pkg in $1 ; do - # Avoid reinstall - if [ ! -d /var/lib/tazpkg/installed/"$pkg" ]; then - xterm -geometry 80x16 -title "INSTALL PACKAGE" \ - -e " echo \"This option depends on $pkg. Installing $pkg as root: \" ; subox tazpkg get-install $pkg --forced; sleep 2; - echo -e \"----\nPress ENTER to close and PROCEED with decoding...\"; read i; exit 0; " - fi - done - -} - - -# Check read write permission for device. -chk_rw_permissions() -{ - xterm -geometry 80x16 -title "Check Permission" \ - -e ' - if [ ! -r "$DEVICE" -o ! -w "$DEVICE" ]; then - echo "You dont have read write permission for $DEVICE; " - echo "Add yourself to group cdrom: addgroup tux cdrom" - else - echo "You have read write permission for $DEVICE. You can proceed to burn." - fi - sleep 3; - ' -} - -# Display audio cd size. -audio_cd_stats() -{ - AUDIO_CD_SIZE=`du -m $TMPDIR | awk '{print $1}'` - TRACK_NB=`ls -1 $TMPDIR | wc -l` - echo -n "Total $TRACK_NB tracks: $AUDIO_CD_SIZE Mb" -} - - -decode_ogg() -{ - if ls $TMPDIR | grep -q .ogg; then - cd $TMPDIR - xterm -geometry 80x16 -title "Oggdec" \ - -e 'for i in *.ogg; do oggdec "$i" && rm "$i"; done; sleep 2' - fi -} - -decode_mp3() -{ - - if ls $TMPDIR | grep -q .mp3; then - cd $TMPDIR - install "mpg123" - - xterm -geometry 80x16 -title "mpg123" \ - -e 'for file in *.mp3; do - mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename "$file" .mp3`.wav "$file" && rm -f "$file"; - done; sleep 2' - fi -} - -decode_video() -{ - # convert videos into a VCD/SVCD/DVD compatible mpg video format - if ls $TMPDIR | grep -q ".avi\|.mov\|.wmv\|.flv" ; then - cd $TMPDIR - install "ffmpeg" - - xterm -geometry 80x16 -title "ffmpeg" \ - -e ' echo -n "Select target type (pal-vcd ntsc-vcd pal-svcd ntsc-svcd pal-dvd ntsc-dvd) "; read TARGET_OPTIONS - for file in *.avi *.wmv *.mov *.flv; do - ext=`echo "${file##*.}"` - output_file=`basename "$file" .$ext`.mpg - ffmpeg -i "$file" -target "$TARGET_OPTIONS" "$output_file" && rm "$file"; - done; sleep 2; - ' - fi - - -} - -# convert spaces in filename with _ and remove special characters "()'&" {}\! and translate uppercase to lowercase -fix_filename() -{ - ls /tmp/burn-cd/* | while read file - do - mv "$file" `echo $file | tr ' ' '_' | tr -d '[{}(),\!&]' | tr -d "\'" | tr '[A-Z]' '[a-z]' | sed 's/_-_/_/g' ` - done - -} - -# We must think about " space " between directory/track and -# filter directory copy to avoid copying other files than audio. -# Only burning non-compressed wav format is supported directly. - -copy_audio_file() -{ - if ls "$NEW_TRACK" | grep -q .ogg; then - cp "${NEW_TRACK%.ogg}.ogg" $TMPDIR - fix_filename - decode_ogg - elif ls "$NEW_TRACK" | grep -q ".[m\|M][p\|P]3"; then - # cp "${NEW_TRACK%.mp3}.mp3" $TMPDIR - cp "$NEW_TRACK" "$TMPDIR" - fix_filename - decode_mp3 - else - cp "${NEW_TRACK%.wav}.wav" $TMPDIR - fi -} - - -copy_audio_dir() -{ - - for i in .wav .ogg .mp3 - do - cp "$NEW_DIR"/*$i $TMPDIR 2>/dev/null - done - fix_filename - decode_ogg - decode_mp3 -} - -# Only burning mpg video format is supported directly. MPEG-1 video for vcd and MPEG-2 for svcd and dvd -copy_video_file() -{ - if ls "$NEW_TRACK" | grep -q ".mpg\|.mpeg"; then - cp "${NEW_TRACK%.mp*}.mpg" $TMPDIR - elif ls "$NEW_TRACK" | grep -q ".avi\|.mov\|.wmv\|.flv"; then - ext=`echo "${NEW_TRACK##*.}"` - cp "${NEW_TRACK%.$ext}.$ext" $TMPDIR - fix_filename - if "$CHECKBOX_DECODE" ; then decode_video ; fi - else - echo "mpg format supported" - fi -} - -copy_video_dir() -{ - for i in .mpg .avi .mov .wmv .mpeg .flv - do - cp "$NEW_DIR"/*$i $TMPDIR 2>/dev/null - done - fix_filename - if "$CHECKBOX_DECODE" ; then decode_video ; fi -} - -copy_file() -{ - case "$BURN_MODE" in - audio-cd) - copy_audio_file ;; - vcd|svcd|video-dvd) - copy_video_file ;; - *) - cp "$NEW_TRACK" $TMPDIR ; fix_filename ;; - esac - -} - -copy_dir() -{ - case "$BURN_MODE" in - audio-cd) - copy_audio_dir ;; - vcd|svcd|video-dvd) - copy_video_dir ;; - *) - cp "$NEW_DIR" $TMPDIR 2>/dev/null - fix_filename ;; - esac -} -# =====ISO===== -burn_iso() -{ - xterm -geometry 80x16 -title "Wodim" \ - -e "wodim -v speed=$SPEED dev=$DEVICE $OPTIONS '$ISO_IMAGE'; sleep 4 - " -} -# =====AUDIO===== -# Use -pad to avoid file size error. -burn_audio() -{ - - install "cdrkit" - xterm -geometry 80x16 -title "Wodim:AUDIO" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; - wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao -audio $TMPDIR/*.wav; sleep 4 - - " -} -# =====DATA===== -burn_cddata() -{ - - install "cdrkit" - - xterm -geometry 80x16 -title "Wodim:CD DATA" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; - wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao -data $TMPDIR/*; sleep 4 - - " - -} - -burn_dvddata() -{ - # For multisession support, remove --dvd-compat option - install "dvd+rw-tools" - - xterm -geometry 80x16 -title "growisofs:DVD DATA" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE \"; sleep 1; - # no iso-file available - growisofs -dvd-compat -speed=$SPEED -pad -J -r -f -Z $DEVICE $TMPDIR/*; sleep 4 - " -} - -# ====VIDEO===== -burn_dvdvideo() -{ - - install "dvd+rw-tools" - - # current assumption: compatible dvd-video format - xterm -geometry 80x16 -title "growisofs:DVD VIDEO" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE\"; sleep 1; - growisofs -dvd-video -udf -pad -J -r -f -Z $DEVICE -speed=$SPEED $TMPDIR/*; sleep 2 - " - -} - -burn_vcd() -{ - - install "vcdimager" - - mkdir -p $TMPDIR/vcd - xterm -geometry 80x16 -title "vcdimager:VCD" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE $UNINSTALLED \"; sleep 1; - vcdimager -t vcd2 -l VCD -c $TMPDIR/vcd/vcd.cue -b $TMPDIR/vcd/vcd.bin $TMPDIR/*.mpg; sleep 2; - # cdrdao write --device $DEVICE $TMPDIR/vcd/vcd.cue; sleep 2 - wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao cuefile=$TMPDIR/vcd/vcd.cue ; sleep 2 - " - - -} - -burn_svcd() -{ - - install "vcdimager" - - mkdir -p $TMPDIR/svcd - xterm -geometry 80x16 -title "vcdimager:SVCD" \ - -e " echo \"BURN TYPE SELECTED = $BURN_MODE\" - vcdimager -t svcd -l SVCD -c $TMPDIR/svcd/svcd.cue -b $TMPDIR/svcd/svcd.bin $TMPDIR/*.mpg; sleep 2; - # cdrdao write --device $DEVICE $TMPDIR/svcd/svcd.cue; sleep 2; - wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao cuefile=$TMPDIR/svcd/svcd.cue ; sleep 2 - " - -} - -# =====CLONE===== - -rip_disc() -{ - SUGGESTED="cdrkit-isoinfo" - if ! "$CHECKBOX_FOLDER" ; then SAVE_DISC="/tmp/burn-cd" ; fi - if [ -d /var/lib/tazpkg/installed/${SUGGESTED} ]; then - xterm -geometry 80x16 -title "dd" \ - -e ' echo "RIPPING DISC $DEVICE AT $SAVE_DISC..." - COUNT=`isoinfo -d -i $DEVICE | grep "^Volume size is:" | cut -d " " -f 4` - BLOCK=`isoinfo -d -i $DEVICE | grep "^Logical block size is:" | cut -d " " -f 5` - dd if=$DEVICE of=$SAVE_DISC/image.iso bs=$BLOCK count=$COUNT; sleep 4 - sleep 2; - # eject ; - ' - else - xterm -geometry 80x16 -title "dd" \ - -e ' echo "Though you dont have the cdrkit-isoinfo package installed, \ - you can still rip but it may be slower." - echo -n "Would you like to continue (y/N)? : "; read ans - if [ "$ans" = "y" ]; then - echo "RIPPING DISC $DEVICE AT $SAVE_DISC...." - dd if=$DEVICE of=$SAVE_DISC/image.iso; - sleep 2; - #eject ; - fi - ' - fi - if ! "$CHECKBOX_FOLDER" ; then - ISO_IMAGE="/tmp/burn-cd/image.iso" - xterm -geometry 80x16 -title "dd" \ - -e ' echo -e " ---Please insert EMPTY DISC at $DEVICE ---\n ---press ENTER to continue..." && read close;' - burn_iso - fi -} - -blank_dvd() -{ - xterm -geometry 80x16 -title "growisofs:DVD ERASE" \ - -e "growisofs -Z $DEVICE=/dev/zero" -} - -burn_disc() -{ - case "$BURN_MODE" in - audio*) - burn_audio ;; - data-cd*) - burn_cddata ;; - data-dvd*) - burn_dvddata;; - video*) - burn_dvdvideo;; - vcd*) - burn_vcd;; - svcd*) - burn_svcd;; - esac - -} - -track_list() -{ - for file in `ls $TMPDIR` ; do - track_size=`du -m $TMPDIR/$file | awk '{print $1}'` - echo "$file | $track_size" - done -} - -export BIN=$0 -# Main GTK interface -MAIN_DIALOG=' - - - - - - - - 500200 - TRACKS_LIST - - $BIN track_list - rm "/tmp/burn-cd/$TRACKS_LIST" - refresh:TRACKS_LIST - refresh:TRACKS_SIZE - ' - -# Select burn audio-cd, data-cd, dvd-video or vcd/svcd -MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - ' - tmp2="${MAIN_DIALOG}" - for i in audio-cd data-cd data-dvd video-dvd vcd svcd; do - [ "$i" = "$BURN_MODE" ] || tmp2="$tmp2$i" - done - tmp3=' - BURN_MODE - - - - CHECKBOX_DECODE - true - - - ' -MAIN_DIALOG="$tmp2$tmp3" -# Select, add and burn audio buttons. -MAIN_DIALOG=${MAIN_DIALOG}" - - - - - - - NEW_TRACK - - - - - - - - - - - NEW_DIR - - - - " - -MAIN_DIALOG=${MAIN_DIALOG}" - - - TRACKS_SIZE - $0 audio_cd_stats - - - - - - " - -# Backup CD -MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - - - - - - - - CHECKBOX_FOLDER - true - if true enable:SAVE_DISC - if true enable:OPENBUTTON - if false disable:SAVE_DISC - if false disable:OPENBUTTON - - - - - - - - SAVE_DISC - - - -' -# Burn backup button. -MAIN_DIALOG=${MAIN_DIALOG}" - - - - - - - " -MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - - - - - - - - ' - -MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - - - - - - - - - ISO_IMAGE - - - - ' -# Burn iso button. -MAIN_DIALOG=${MAIN_DIALOG}" - - - - - " - - - -# -# -# tmp3= -MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - - - - - - - - - - - - - - - - - - - - /dev/cdrom - DEVICE - - - - - - - - cat /proc/sys/dev/cdrom/info | grep "drive speed" | cut -f 3 - SPEED - - - - - - - - -eject -multi - OPTIONS - - - ' - - MAIN_DIALOG=${MAIN_DIALOG}' - - - - - - - - BLANK_OPTS - fast - - - - - - ' -export MAIN_DIALOG=${MAIN_DIALOG}' - - ' - MAIN_DIALOG=${MAIN_DIALOG}" - - " - MAIN_DIALOG=${MAIN_DIALOG}' - - - - - -' - -# Script can be called with an arg to exec a function. -if [ -n "$1" ]; then - $1 -else - mkdir -p $TMPDIR - gtkdialog --center --program=MAIN_DIALOG >/dev/null - rm -rf $TMPDIR -fi - -exit 0 diff -r b4c3846a03c1 -r 0a831f1f1b51 tinyutils/mountbox --- a/tinyutils/mountbox Sat Apr 28 20:13:13 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -#!/bin/sh -# -# Gtkdialog box for the mount/umount commands. Part of SliTaz tools. -# libmountbox: /usr/lib/slitaz/libmountbox -# -# (C) 2009 - SliTaz GNU/Linux project. -# -VERSION=20090802 -# Mountbox is only for root. -if test $(id -u) != 0 ; then - exec subox mountbox - exit 0 -fi - -# Commom mount point in /mnt -mkdir -p /mnt/harddisk - -# Just basic help. -export HELP=' - - - - - - - - - - - - - - - - - - - - - -' - -# Mount and umount buttons with fields for device and mount points. -MAIN_DIALOG=' - - - - - 500130 - DEVICE - - /usr/lib/slitaz/libmountbox list-umounted - /usr/lib/slitaz/libmountbox umounted-fs-infos - refresh:MOUNTED - refresh:DEVICE - - - - - 500110 - MOUNTED - ' - -# /dev/root -RES=`df -h / | grep rootfs` -dev="/dev/root" -SIZE=`echo $RES | cut -d " " -f 2` -USED=`echo $RES | cut -d " " -f 3` -AVAILABLE=`echo $RES | cut -d " " -f 4` -PCT=`echo $RES | cut -d " " -f 5` -MOUNTED_ON=`echo $RES | cut -d " " -f 6` -if [ $SIZE != 0 ]; then - ROOT_ITEM=" - $dev | $SIZE | $USED | $AVAILABLE | $PCT | $MOUNTED_ON" -fi -MAIN_DIALOG=${MAIN_DIALOG}${ROOT_ITEM} - -# Now we have rootfs and icons, list all mounted fs. -DEVICE='/usr/lib/slitaz/libmountbox list-mounted - /usr/lib/slitaz/libmountbox mounted-fs-infos - refresh:MOUNTED - refresh:DEVICE - - - - - - - - - - /media/cdrom - MOUNT_POINT - - - - ' - -# Get the mount points list. -MAIN_DIALOG=${MAIN_DIALOG}${DEVICE} - -# Actions buttons (mount, umount, eject, etc). -ACTIONS=' - - - - - - - - - - - - - - -' - -export MAIN_DIALOG=${MAIN_DIALOG}${ACTIONS} -gtkdialog --center --program=MAIN_DIALOG >/dev/null - -exit 0