Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Localized Live CD/USB hack

By: Lekensteyn on Jun 8th, 2011  |  syntax: None  |  size: 2.00 KB  |  views: 383  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2. # http://askubuntu.com/q/47522/6969
  3. remove_other_lang=true
  4. cd "$(dirname "$(readlink -f "$0")")"
  5. bootcfg=
  6. [ -d isolinux ] && bootcfg=isolinux/isolinux.cfg
  7. [ -d syslinux ] && bootcfg=syslinux/syslinux.cfg
  8. if [ $(id -u) = 0 ]; then
  9.     echo "** WARNING: you're running this script as root **"
  10.     echo "The newly created file localized-init and directory locale-hack will be owned by root"
  11. fi
  12. if [ ! -s "$bootcfg" -o ! -s casper/filesystem.squashfs ]; then
  13.     echo "Please copy this file $0 to the root directory of the Live USB / CD"
  14.     exit 1
  15. fi
  16. read -p "Locale: " lang
  17. if ! apt-cache search 'language-pack-gnome-*' | grep -q "language-pack-gnome-$lang-base"; then
  18.     echo "The language package could not be found"
  19.     exit 1
  20. fi
  21. if [ ! -d locale-hack ]; then
  22.     chmod u+w .
  23.     mkdir locale-hack
  24.     chmod u+w locale-hack
  25. fi
  26. echo "Root permissions are required to mount the squashfs"
  27. mountpoint=$(sudo mktemp -d)
  28. sudo mount -o loop casper/filesystem.squashfs $mountpoint
  29. names=$(grep -E "Filename: pool/main/l/[^/]+/(language-pack-gnome-$lang|language-pack-gnome-${lang}-base|language-pack-$lang|language-pack-${lang})" \
  30.     $mountpoint/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-amd64_Packages \
  31.     | cut -d' ' -f2)
  32. sudo umount $mountpoint
  33. sudo rmdir $mountpoint
  34. if [ -n "$names" ]; then
  35.         remove_other_lang && rm -f locale-hack/*.deb
  36.     mirror=archive.ubuntu.com
  37.     host $lang.$mirror >/dev/null && mirror=$lang.$mirror
  38.     for item in $names; do
  39.         wget http://$mirror/ubuntu/$item -O locale-hack/$(basename $item)
  40.     done
  41.         printf "#!/bin/sh\ncp /cdrom/locale-hack/*.deb /var/cache/apt/archives && apt-get -y install language-pack-gnome-%s\nexec init\n" $lang > localized-init
  42.     chmod u+w $bootcfg
  43.     if grep -q 'init=/cdrom/localized-init' $bootcfg; then
  44.         sed "s,locale=\S*,locale=$lang," -i $bootcfg
  45.     else
  46.         sed "s,--,locale=$lang init=/cdrom/localized-init --," -i $bootcfg
  47.     fi
  48. else
  49.     echo "Language packs not found!"
  50. fi