PDA

View Full Version : Persistent image creation prompt



brodbd
06-29-2010, 08:02 PM
I'd like to change the text at the persistent image creation prompt, because some of the users of my live CD find it confusing. (It gives sizes with a suffix, e.g. "400MB", but if you type the size with a suffix, image creation fails silently. I want to change the prompt to make it clear that you have to type in a pure number.) The problem is I'm having trouble finding the script responsible for doing persistent image creation. I've looked at the knoppix init scripts in /etc/init.d, and tried grepping phrases from the prompt, but haven't had any success. Can someone point me in the right direction?

brodbd
06-30-2010, 12:27 AM
Oh, should have mentioned this is Knoppix v6.2.1.

klaus2008
06-30-2010, 01:02 AM
You can find the init script inside the initial ramdisk minirt.gz. If you need help to extract minirt.gz and recreate it then you should read http://www.knoppix.net/wiki/Knoppix_Remastering_Howto#Changing_the_startup_scr ipt_text

brodbd
06-30-2010, 01:08 AM
Ah, thank you. I think that was the clue I needed.

kl522
06-30-2010, 02:10 AM
I'd like to change the text at the persistent image creation prompt, because some of the users of my live CD find it confusing. (It gives sizes with a suffix, e.g. "400MB", but if you type the size with a suffix, image creation fails silently. I want to change the prompt to make it clear that you have to type in a pure number.)

Why don't you change it to accept both 400 ***AND*** 400MB ?

You can consider using sed to accomplish the job :-



$ echo 400MB | sed "s/[^0-9]//g"
400


$ echo 400MB | sed "s/[0-9]//g"
MB
By using sed, you can extract the number portion of the user input. If the user input something else other than 400MB and 400, you might want to prompt for error.

krishna.murphy
06-30-2010, 02:45 AM
You can find the init script inside the initial ramdisk minirt.gz. If you need help to extract minirt.gz and recreate it then you should read http://www.knoppix.net/wiki/Knoppix_Remastering_Howto#Changing_the_startup_scr ipt_text

Note: FWIW, the path has changed from
cd /mnt/hda1/knx/master/boot/isolinux to
cd /mnt-system/boot/syslinux/

Cheers!
Krishna :mrgreen:

krishna.murphy
06-30-2010, 03:09 AM
Why don't you change it to accept both 400 ***AND*** 400MB ?

You can consider using sed to accomplish the job :-



$ echo 400MB | sed "s/[^0-9]//g"
400


$ echo 400MB | sed "s/[0-9]//g"
MB
By using sed, you can extract the number portion of the user input. If the user input something else other than 400MB and 400, you might want to prompt for error.

This seems like a good addition, esp. for newbies; the prompt could say "Enter size (MB):"

Cheers!
Krishna :mrgreen:

brodbd
06-30-2010, 06:27 PM
Thanks for the suggestion. I may just do that. It would have the added benefit of working for any localization, too.

brodbd
07-07-2010, 07:39 PM
Here's my attempt at a patch. It now accepts "MB" and "GB" as units (non-case-sensitive) and will loop until it gets valid input, is canceled, or times out. I didn't attempt to add error messages because I only speak English, so I wouldn't be able to properly localize them.


--- /mnt/sda1/knx/master/boot/isolinux/minirtdir/init 2010-07-02 12:59:57.000000000 +0000
+++ ./init 2010-07-02 12:48:10.000000000 +0000
@@ -531,12 +531,23 @@
}

createdata(){
- local rc size avail
+ local rc size sizein sizeunits avail
avail="$(df -m /mnt-system | awk '{size=$4}END{print size - 1}')"
[ "$avail" -ge 200 ] 2>/dev/null || return 2
- runknoppixchroot /usr/bin/dialog --timeout 10 --inputbox "\n${CREATEIMG1}${avail}${CREATEIMG2}\n" 16 75 2>/tmp/knoppix.size; rc="$?"
- read size </tmp/knoppix.size; rm -f /tmp/knoppix.size
- [ "$rc" = "0" -a "$size" -ge 200 -a "$size" -le "$avail" ] 2>/dev/null || return 3
+ until [ "$size" -ge 200 -a "$size" -le "$avail" ] ; do
+ runknoppixchroot /usr/bin/dialog --timeout 10 --inputbox "\n${CREATEIMG1}${avail}${CREATEIMG2}\n" 16 75 2>/tmp/knoppix.size; rc="$?"
+ read sizein </tmp/knoppix.size; rm -f /tmp/knoppix.size
+ [ "x$sizein" = "x" -o "$rc" != "0" ] && return 3
+ size="$(echo $sizein | sed 's/[^0-9]//g')"
+ sizeunits="$(echo $sizein | sed 's/[^A-Za-z]//g' | awk '{print toupper($1)}')"
+ if [ "x$sizeunits" != "x" ] ; then
+ if [ $sizeunits = "GB" ] ; then
+ size=$(($size*1024))
+ elif [ $sizeunits != "MB" ]; then
+ size=0
+ fi
+ fi
+ done
runknoppixchroot /usr/bin/dialog --yes-label "${ENCRYPT}" --no-label "${NO_ENCRYPT}" --defaultno --yesno "${QUESTION_ENCRYPT}" 16 75 2>/dev/null; rc="$?"
[ -b /dev/loop0 ] || mknod -m 755 /dev/loop0 b 7 0
[ -d /KNOPPIX-DATA ] || mkdir -m 755 /KNOPPIX-DATA