#!/bin/bash

#
# Knoppix Installation for HardDisk Drive
#     Development by ya-knoppix-jp Members,
#            daicki,hanawa,kinneko,kwonderboy,max,nogajun
#     First Released on 16/Nov./'02 by K.Wonderboy
#     Special Thanks  Christian Perle, perle@itm.tu-clausthal.de
#           
# TODO:
# Fremde Partitionen (vfat, ntfs) in /etc/fstab eintragen
# weitere Filesysteme f? $TR (ext3, reiserfs) initrd.gz
# bei DHCP: "iface eth0 inet dhcp" eintragen
# Auswahl: Automounter oder nicht
# "no cloop"-Install (extract_compressed_fs, doppelter Plattenplatz n?ig)
# lo-Device nach Booten von Platte nicht immer "up" gesetzt
# LILO im MBR nur auf der ersten Platte installieren (BIOS-Reihenfolge)
#
# 日本語版ChangeLog
#
#2002/12/25      0.9.8  K.Wonderboy  add "LILO non-write" option
#                                    USB2.0 enabled when auto-config
#
#2002/12/16      0.9.7  Max       Fixed XIM problem
#
#                       K.Wonderboy  make "apt-get" directory
#                                    Templates include only necessary
#                                    Fixed Some Japanese Language Problem
#                                    Fixed Display Font Point
#                                    Changed X Server Start Sequence
#                                    Enable auto-config when New VGA Card
#                                    runlevel 4 start single user "knoppix"
#
#2002/12/12      0.9.6  daicki    Filesystem include EXT3 & more
#                                 Selected Filesystems
#
#                       K.Wonderboy  Fixed auto-mounter
#                                    runlevel "2" chenged to "5" 
#
#2003/12/08      0.9.5  K.Wonderboy  Make HDD icons automatic
#                                    INITRD implement 
#                                    merged from "0.30",any
#
#    ?           0.9.4  kinneko & SUZAKI  Search Templates-files 
#
#    ?           0.9.3  K.Wonderboy  Fixed Boot-Floppy
#                                   
#2002/12/03      0.9.2  Maxさんによる修正
#                          ・デスクトップ上の不要アイコン除去
#                (/cdrom内のサンプルファイルへのショートカット)
#                          ・OpenOffice.org初回起動時挙動修正
#                (インストール状態を判断し初回時はセットアップ)
#
#2002/12/01      0.9.1   塙さんによるパッチ
#                         ・Title の日本語化
#                         ・テンプレートアーカイブの置き場所の変更
#                           (/temp -> スクリプトカレント)
#                         ・ファイル名の変更 (knx-hdinstall-jp)
#                        Maxさんによるパッチ
#                         ・kickerrc の改良
#                           (Mozilla-Navigator と KMail アイコン表示)
#
#2002/11/27      0.9     Naturezaさんにより knx-hdinstalljp 初公開



SVERSION="0.98jp"

rotdash()
{
  p=$1
  while [ -d /proc/$p ]
  do
    echo -n '/' ; usleep 100000
    echo -n '-' ; usleep 100000
    echo -n '\' ; usleep 100000
    echo -n '|' ; usleep 100000
  done
}

# X oder Textkonsole
case "`tty`" in
  /dev/tty[1-8])
    MODE=text
    DIA=dialog
    ;;
#  /dev/pts/*|/dev/ttyp*)
#    MODE=x
#    XDIALOG_HIGH_DIALOG_COMPAT=1
#    export XDIALOG_HIGH_DIALOG_COMPAT
#    DIA=Xdialog
#    ;;
  *)
    MODE=text
    DIA=dialog
    ;;
esac
# Textmode wenn DISPLAY nicht gesetzt ist
if [ -z "$DISPLAY" ] ; then
  MODE=text
  DIA=dialog
fi

# Mountpoint f? das Rootfilesystem
TR="/mnt/target"
# Mountpoints f? Loop-Mounts
TL1="/mnt/l1"
TL2="/mnt/l2"
# Name des Template-Archivs
INSTDATA="./knx-templates-$SVERSION.tgz"
# Hierhin werden die Templates entpackt
TM="$TR/templates"
# Default Hostname
DEFHNAME="localhost"

if [ $UID != 0 ] ; then
  echo "このスクリプトはroot権限で実行して下さい"
  exit 0
fi

TMP="/tmp/hdinst.tmp.$$"
ORIG_LANG="ja_JP.eucJP"
ORIG_LANGUAGE="ja"
ORIG_LC_ALL="ja_JP.eucJP"
# ...weg mit den locales
export LANG=C
export LANGUAGE=C
export LC_ALL=C
umask 022
killall dhcpcd >/dev/null 2>&1
killall -9 pump >/dev/null 2>&1
killall automount >/dev/null 2>&1
swapoff -a >/dev/null 2>&1

$DIA --backtitle "Knoppix Installation" --title "knx-hdinstall $SVERSION" \
  --msgbox "このスクリプトは、KNOPPIX  を  \n
ハードディスクにインストールします  \n
\n
   knx-hdinstalljp by K.Wonderboy " 15 40

# Check f? die Templates
# [jp] kinneko & SUZAKI: 0.94
#tar tzf "$INSTDATA" >/dev/null 2>&1
#if [ $? != 0 ] ; then
#  $DIA --backtitle "Knoppix Installation" --title "ファイルがありません" \
#    --msgbox " $INSTDATA  がありません。中止します  " 15 60
#  rm -f $TMP
#  exit 0
#fi
BASEDATA=${INSTDATA##*/}
for topdir in / ./ /usr/local/share/ 
do
  for base in $INSTDATA $BASEDATA
  do
    tar tzf "$topdir$base" >/dev/null 2>&1
    status=$?
    if [ $status = 0 ] ; then
      realinstdata=$topdir$base
      break;
    fi
  done
  if [ ! -z $realinstdata ];then
    break;
  fi
done
if [ $status != 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルがありません" \
    --msgbox " $INSTDATA  がありません。中止します  " 15 60
  rm -f $TMP
  exit 0
fi
INSTDATA=$realinstdata
# [jp] kinneko & SUZAKI: 0.94

# G?tige Partitionierung: mind. 2.2 GB Filesystem, mind. 128 MB Swap.
FSMIN=2200
SWAPMIN=128
# F? "no cloop"-Methode wird mehr Platz gebraucht
NCLOOPFSMIN=4400

# Gr?e der initrd: 2.5 MB
INSIZE=2500

# Auswahl der Platte zum Partitionieren
> $TMP
NUMHD=0
if [ -f /proc/partitions ] ; then
  while read x x x p x
  do
    case "$p" in
      hd?)
        if [ "`cat /proc/ide/$p/media`" = "disk" ] ; then
          echo "$p `tr ' ' _ </proc/ide/$p/model`" >> $TMP
          NUMHD=$[NUMHD+1]
        fi
        ;;
      sd?)
        x="`scsi_info /dev/$p | grep MODEL | tr ' ' _`"
        x=${x#*\"}
        x=${x%\"*}
        echo "$p $x" >> $TMP
        NUMHD=$[NUMHD+1]
        ;;
      *) ;;
    esac
  done < /proc/partitions
fi
HARDDISKS="`cat $TMP`"
$DIA --backtitle "Knoppix Installation" --title "パーティション作成" \
  --radiolist "ハードディスクを選択して下さい" 16 60 $NUMHD \
  $(echo "$HARDDISKS" | while read p model ; do echo "$p" "$model" off ; done) \
  2> $TMP
HDCHOICE="`cat $TMP`"
if [ -z "$HDCHOICE" ] ; then
  $DIA --backtitle "Knoppix Installation" --title "パーティション作成" \
    --msgbox "選択されてません。中止します" 15 40
  rm -f $TMP
  exit 0
fi
x=$(fdisk -l /dev/$HDCHOICE 2>/dev/null | grep "^Disk.*cylinders")
HDS=${x%% heads*}
HDS=${HDS##* }
SECT=${x%% sectors*}
SECT=${SECT##* }
CYLS=${x% cylinders}
CYLS=${CYLS##* }
$DIA --backtitle "Knoppix Installation" --title パーティション作成 \
  --msgbox " /dev/$HDCHOICE  が選択されました。

ディスク容量は $[CYLS*HDS*SECT/2048] MBです。
パーティション作成プログラム cfdisk  を起動します" 15 40
if [ $MODE = text ] ; then
  (
  LANG="$ORIG_LANG"
  LANGUAGE="$ORIG_LANGUAGE"
  LC_ALL="$ORIG_LC_ALL"
  cfdisk /dev/$HDCHOICE
  )
else
  (
  LANG="$ORIG_LANG"
  LANGUAGE="$ORIG_LANGUAGE"
  LC_ALL="$ORIG_LC_ALL"
  xterm -e cfdisk /dev/$HDCHOICE
  )
fi

# Auswahl: Swap oder nicht
$DIA --backtitle "Knoppix Installation" --title "仮想メモリ (スワップ)" \
  --yesno "スワップ領域を選択しますか" 15 60
x=$?
if [ $x = 0 ] ; then
  # Auswahl der Swap-Partition (Swap einrichten)
  > $TMP
  fdisk -l /dev/$HDCHOICE | grep "^/dev.*Linux swap$" |
  while read dev x x size x
  do
    size=${size%+}
    echo $dev $[size/1024]_MB off >> $TMP
  done
  NUMSWAP="`wc -l <$TMP`"
  SWAPART="`cat $TMP`"
  if [ $NUMSWAP = 0 ] ; then
    $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
      --msgbox "領域が有りません。処理を中止します" 15 40
    rm -f $TMP
    exit 0
  fi
  $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
    --radiolist "スワップ領域を選択して下さい" 16 60 $NUMSWAP \
    $SWAPART 2> $TMP
  SWCHOICE="`cat $TMP`"
  if [ -z "$SWCHOICE" ] ; then
    $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
      --msgbox "処理を中止します" 15 40
    rm -f $TMP
    exit 0
  fi
  size=$(echo "$SWAPART" | grep "$SWCHOICE")
  size=${size%%_*}
  size=${size##* }
  if [ $size -lt $SWAPMIN ] ; then
    $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
      --msgbox " 領域が足りません" 15 40
    rm -f $TMP
    exit 0
  fi
  $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
    --yesno " $SWCHOICE  をスワップ領域として初期化します" 15 60
  x=$?
  if [ $x != 0 ] ; then
    $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
      --msgbox "処理を中止します" 15 40
    rm -f $TMP
    exit 0
  fi
  echo "パーティション $SWCHOICE  を作成中  ..."
  sleep 2
  dd if=/dev/zero of=$SWCHOICE bs=1k count=16 >/dev/null 2>&1
  sync
  mkswap $SWCHOICE 2> $TMP
  if [ $? != 0 ] ; then
    $DIA --backtitle "Knoppix Installation" --title "スワップ領域の作成" \
      --msgbox "作成できませんでした  :`tail -8 $TMP` " 15 60
    rm -f $TMP
    exit 0
  fi
  swapon $SWCHOICE >/dev/null 2>&1
else
  SWCHOICE=none
fi

# Auswahl der Rootpartition (Filesystem anlegen)
> $TMP
fdisk -l /dev/$HDCHOICE | grep "^/dev.*Linux$" | tr -d '*' |
while read dev x x size x
do
  size=${size%+}
  echo $dev $[size/1024]_MB off >> $TMP
done
# [jp] daicki :0.96
#NUMEXT2="`wc -l <$TMP`"
#EXT2PART="`cat $TMP`"
#if [ $NUMEXT2 = 0 ] ; then
NUMLINUXFS="`wc -l <$TMP`"
LINUXFSPART="`cat $TMP`"
if [ $NUMLINUXFS = 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
    --msgbox "領域が有りません。処理を中止します" 15 40
  rm -f $TMP
  exit 0
fi

# [jp] daicki :0.96
#$DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
#  --radiolist "システム領域を選択して下さい" 16 60 $NUMEXT2 \
#  $EXT2PART 2> $TMP
$DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
  --radiolist "システム領域を選択して下さい" 16 60 $NUMLINUXFS \
  $LINUXFSPART 2> $TMP
# [jp] daicki :0.96
FSCHOICE="`cat $TMP`"
if [ -z "$FSCHOICE" ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
    --msgbox "処理を中止します" 15 40
  rm -f $TMP
  exit 0
fi
# [jp] daicki :0.96
#size=$(echo "$EXT2PART" | grep "$FSCHOICE")
size=$(echo "$LINUXFSPART" | grep "$FSCHOICE")
# [jp] daicki :0.96
size=${size%%_*}
size=${size##* }
if [ $size -lt $FSMIN ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
    --msgbox "領域不足です。処理を中止します" 15 40
  rm -f $TMP
  exit 0
fi
#FIXME: FSTYPE ausw?len
# [jp] daicki :0.96
NUMFSTYPE="4"
FSTYPE="ext2 EXT2ファイルシステム on 
ext3 EXT3ファイルシステム off 
reiserfs ReiserFSファイルシステム off 
xfs XFSファイルシステム off"
$DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
  --radiolist "ファイルシステムのタイプを選択して下さい" 16 60 $NUMFSTYPE \
  $FSTYPE 2> $TMP
FSTYPECHOICE="`cat $TMP`"
# [jp] daicki :0.96
$DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
  --yesno " $FSCHOICE をファイルシステムとして初期化します" 15 60
x=$?
if [ $x != 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
    --msgbox "処理を中止します" 15 40
  rm -f $TMP
  exit 0
fi
# [jp] daicki :0.96
#echo "Filesystem $FSCHOICE を作成中  ..."
echo "Filesystem $FSCHOICE  (Type : $FSTYPECHOICE) を作成中  ..."
# [jp] daicki :0.96
sleep 2
dd if=/dev/zero of=$FSCHOICE bs=1k count=16 >/dev/null 2>&1
sync
# [jp] daicki :0.96
#mke2fs $FSCHOICE 2> $TMP
case "$FSTYPECHOICE" in
  ext2|ext3)
    mkfs -t $FSTYPECHOICE $FSCHOICE 2> $TMP
    ;;
  reiserfs|xfs)
    mkfs -t $FSTYPECHOICE -f $FSCHOICE > $TMP 2>&1
    ;;
esac
# [jp] daicki :0.96
#mkfs -t ext3 $FSCHOICE 2> $TMP
if [ $? != 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルシステムの設定" \
    --msgbox "作成できませんでした  :`tail -8 $TMP` " 15 60
  rm -f $TMP
  exit 0
fi

$DIA --backtitle "Knoppix Installation" --title "ファイルのコピー" \
  --msgbox "これから  Knoppix-CD  をハードデイスクにコピーします  \
  10-40分くらいかかります" 15 60
mkdir -p $TR >/dev/null 2>&1
# [jp] daicki :0.96
#mount -t ext2 $FSCHOICE $TR 2> $TMP
mount -t $FSTYPECHOICE $FSCHOICE $TR 2> $TMP
# [jp] daicki :0.96
if [ $? != 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ファイルのコピー" \
    --msgbox "コピーできません  :`tail -8 $TMP` " 15 60
  rm -f $TMP
  exit 0
fi
# Jetzt beginnt die eigentliche Datenschaufelei
echo -n "コピー中..."
(cd /KNOPPIX ; cp -a * $TR ; sync) &
rotdash $!
# Zwei Beeps
echo -ne "\007" >/dev/tty1 ; usleep 500000
echo -ne "\007" >/dev/tty1 ; usleep 500000
$DIA --backtitle "Knoppix Installation" --title "ファイルのコピー" \
  --msgbox "コピーは完了しました" 15 40

# Entpacken der Templates
mkdir -p $TM
tar xpzf $INSTDATA -C $TM >/dev/null 2>&1

# "Normalisieren" der Runlevel-Verzeichnisse
# [jp] K.Wonderboy :0.96 , rc4=0.97
#rm -f $TR/etc/rc[026S].d/*
#for x in 0 2 6 S
rm -f $TR/etc/rc[02456S].d/*
for x in 0 2 4 5 6 S
# [jp] K.Wonderboy :0.96 , 0.97
do
  cp -a $TM/etc/rc$x.d/* $TR/etc/rc$x.d/
done

# Nicht alle Dienste m?sen gestartet werden
$DIA --backtitle "Knoppix Installation" --title "メールサーバ" \
  --yesno " メールサーバ (smail)  を起動しますか?" 15 60
x=$?
if [ $x != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??smail
  rm -f $TR/etc/rc5.d/S??smail
# [jp] K.Wonderboy :0.96
fi
$DIA --backtitle "Knoppix Installation" --title "Secure Shell サーバ" \
  --yesno "\
  Secure Shell サーバ (sshd)  を起動しますか?" 15 60
x=$?
if [ $x != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??ssh
  rm -f $TR/etc/rc5.d/S??ssh
# [jp] K.Wonderboy :0.96
fi
$DIA --backtitle "Knoppix Installation" --title "Samba サーバ" \
  --yesno "\
  Samba サーバ (smbd/nmbd)  を起動しますか?" 15 60
x=$?
if [ $x != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??samba
  rm -f $TR/etc/rc5.d/S??samba
# [jp] K.Wonderboy :0.96
fi
$DIA --backtitle "Knoppix Installation" --title "K ディスプレイマネージャ" \
  --yesno "\
  グラフィカルログインを提供する \
  Kディスプレイマネージャを使いますか?" 15 60
x=$?
if [ $x != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??kdm
  rm -f $TR/etc/rc5.d/S??kdm
# [jp] K.Wonderboy :0.96
fi
# hotplug entfernen, wenn kein USB-Modul geladen ist
grep -E "usb|uhci|ohci" /proc/modules >/dev/null 2>&1
if [ $? != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??hotplug
  rm -f $TR/etc/rc5.d/S??hotplug
# [jp] K.Wonderboy :0.96
fi
# cardmgr entfernen, wenn kein PCMCIA-Modul geladen ist
grep "pcmcia_core" /proc/modules >/dev/null 2>&1
if [ $? != 0 ] ; then
# [jp] K.Wonderboy :0.96
#  rm -f $TR/etc/rc2.d/S??pcmcia
  rm -f $TR/etc/rc5.d/S??pcmcia
# [jp] K.Wonderboy :0.96
fi

# Keymap auf de-latin1-nodeadkeys setzen
#cp -af $TM/etc/init.d/keymap.sh $TR/etc/init.d/keymap.sh ###UPD??!!
cp -af $TM/etc/init.d/* $TR/etc/init.d/

# Anlegen der Symlinks /dev/cdrom und /dev/mouse
if [ -f /etc/sysconfig/mouse ] ; then
  x="`grep DEVICE= /etc/sysconfig/mouse`"
  x=${x#*/dev/}
  MOUSEDEV=${x%\"*}
fi
[ -z "$MOUSEDEV" ] && MOUSEDEV="psaux"
(cd $TR/dev ; ln -sf $MOUSEDEV mouse ; ln -sf sr0 cdrom)

# Prompt ?dern und "." aus PATH entfernen in /etc/profile ###UPD
# [jp] K.Wonderboy :0.97
#cp -af $TM/etc/profile $TR/etc/profile
# [jp] K.Wonderboy :0.97

# "Normaliseren" von /etc/inittab
cp -af $TM/etc/inittab $TR/etc/inittab

# Update von /etc/motd
echo -e "Welcome to Knoppix (Kernel `uname -r`)\n" > $TR/etc/motd

# Erzeugen von /etc/modules aus den aktuell geladenen Kernelmodulen
cat <<\EOF >$TMP
# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line.  Comments begin with
# a `#', and everything on the line after them are ignored.
EOF
# [jp] K.Wonderboy :0.97 
#tail +1 /proc/modules | grep -v '\[.*\]' | grep -v cloop |
#while read mod x
#do
#  echo $mod >>$TMP
#done
# [jp] K.Wonderboy :0.97 
cp -f $TMP $TR/etc/modules


# Anpassen von /etc/inputrc (8-bit clean)       ###UPD
# [jp] K.Wonderboy :0.97
#cp -af $TM/etc/inputrc $TR/etc/inputrc
# [jp] K.Wonderboy :0.97

# Erzeugen von /etc/fstab                       ###UPD
#none       /dev/pts    devpts mode=0622           0 0
# [jp] daicki :0.96
#$FSCHOICE  /  ext2  defaults  0  0
# [jp] daicki :0.96
cat <<EOF >$TR/etc/fstab
# /etc/fstab: Tabelle einzubindender Dateisysteme.
#
# Dateisystem  Mountpunkt  Typ  Optionen  dump  pass
none       /proc       proc   defaults            0 0
$FSCHOICE  /  $FSTYPECHOICE  defaults  0  0
EOF
if [ $SWCHOICE != none ] ; then
  echo "$SWCHOICE  swap  swap  defaults  0  0" >>$TR/etc/fstab
fi
cat <<EOF >>$TR/etc/fstab
/dev/fd0   /mnt/auto/floppy auto  user,noauto,exec,umask=000    0 0
/dev/cdrom /mnt/auto/cdrom  auto  user,noauto,exec,ro 0 0
EOF
# [jp] K.Wonderboy :0.95
#cat $TM/etc/fstab >> $TR/etc/fstab
cp -af $TR/etc/fstab $TR/etc/fstab.kwb
cp -af $TM/etc/auto.mnt $TR/etc/
cp -af $TM/etc/auto.mnt $TR/etc/auto.mnt.kwb
# [jp] K.Wonderboy :0.95

# ?ertragen der Knoppix-generierten XF86Config
cp -af /etc/X11/XF86Config $TR/etc/X11/XF86Config
cp -af /etc/X11/XF86Config-4 $TR/etc/X11/XF86Config-4
# [jp] K.Wonderboy :0.97 
cp -af $TM/etc/usr-sbin/mkxf86config $TR/usr/sbin/
# [jp] K.Wonderboy :0.97

# X-Session nicht auf KDE festlegen
#mv $TR/etc/X11/Xsession.d/45xsession $TR/root
mv $TR/etc/X11/Xsession.d/45xsession $TR/root/backup-45xsession

# Display-Permissions f? xdm/kdm (Bug in Woody?)
sed -e 's,DisplayManager\*authorize:.*true,DisplayManager*authorize: false,g' /etc/X11/xdm/xdm-config >$TR/etc/X11/xdm/xdm-config
for x in /etc/kde[23]/kdm/kdmrc
do
  sed -e 's,#Authorize=false,Authorize=false,g' $x >$TR/$x
done

# Hostname setzen
$DIA --backtitle "Knoppix Installation" --title "ホスト名の設定" \
  --inputbox "ホスト名を設定します  :" 15 60 $DEFHNAME 2>$TMP
HNAME="`cat $TMP`"
[ -z "$HNAME" ] && HNAME=$DEFHNAME
cat <<EOF >$TR/etc/hosts
127.0.0.1	$HNAME localhost

# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
EOF
echo "$HNAME" > $TR/etc/hostname
echo "$HNAME" > $TR/etc/mailname

# Netzwerkkarte einrichten, wenn vorhanden
grep eth0 /proc/net/dev >/dev/null 2>&1
if [ $? = 0 ] ; then
  (
  LANG="$ORIG_LANG"
  LANGUAGE="$ORIG_LANGUAGE"
  LC_ALL="$ORIG_LC_ALL"
  rm -f /etc/resolv.conf
  touch /etc/resolv.conf
  netcardconfig
  )
  cp -af /etc/network/interfaces $TR/etc/network/interfaces
  rm -f $TR/etc/resolv.conf
  cat /etc/resolv.conf >$TR/etc/resolv.conf
fi

# Alle Dienste in /etc/inetd.conf deaktivieren  ###UPD
# [jp] K.Wonderboy :0.97
#cp -af $TM/etc/inetd.conf $TR/etc/inetd.conf
# [jp] K.Wonderboy :0.97

# Knoppix-Eintrag aus /etc/sudoers entfernen    ###UPD 
#cp -af $TM/etc/sudoers $TR/etc/sudoers
cp -af /etc/sudoers $TR/etc/sudoers
# [jp] K.Wonderboy :0.97
#cp -af $TM/etc/sysconfig/* $TR/etc/sysconfig/
cp -af /etc/sysconfig/* $TR/etc/sysconfig/
cp -af /etc/sysconfig/xserver $TR/etc/sysconfig/xserver.kwb
# [jp] K.Wonderboy :0.97 
# [jp] K.Wonderboy :0.96, ##=0.97
##( cp -af $TM/etc/.xsession $TR/etc/kde3/kdm/ )
( cp -af $TM/etc/.xsession $TR/root/ )
( cp -af $TM/etc/.xsession $TR/etc/skel/ )
cp -af $TM/etc/Xsession $TR/etc/kde3/kdm/
#[jp] K.Wonderboy :0.97
cp -af $TM/etc/X11/xinitrc $TR/etc/X11/xinit/
cp -af $TM/etc/X11/Xsession $TR/etc/X11/
mkdir $TR/var/cache/apt/archives
mkdir $TR/var/cache/apt/archives/partial
# [jp] K.Wonderboy :0.97
##cp -af $TM/etc/kdmrc $TR/etc/kde3/kdm/
# [jp] K.Wonderboy :0.96, ##=0.97
mkdir $TR/proc

# /etc/hosts.allow weniger restriktiv
# [jp] K.Wonderboy :0.97
#cp -af $TM/etc/hosts.allow $TR/etc/hosts.allow
# [jp] K.Wonderboy :0.97

# "Echtes" /tmp mit Modus 1777 erzeugen
rm -rf $TR/tmp
mkdir $TR/tmp
chmod 1777 $TR/tmp

# /etc/mtab als normale Datei erzeugen
rm -f $TR/etc/mtab
touch $TR/etc/mtab

# ?dern des Homeverzeichnisses f? root auf /root
sed -e 's,/home/root,/root,g' /etc/passwd > $TR/etc/passwd

# [jp] Max: replace OpenOffice related shortcuts and add scripts for it.
cp -af $TM/applnk/openoffice.desktop $TR/usr/share/applnk/Office/
cp -af $TM/applnk/openoffice.desktop $TR/etc/skel/Desktop/
chown root.root $TR/usr/share/applnk/Office/openoffice.desktop
chown root.root $TR/etc/skel/Desktop/openoffice.desktop
cp -af $TM/bin/OpenOffice_org $TR/usr/local/bin/
rm -rf "$TR/usr/share/applnk/OpenOffice.org 1.0"
# [jp] Max

# Erzeugen des Homeverzeichnisses f? User knoppix    ###UPD 
cp -af $TM/etc/filemanagement $TR/etc/skel/.kde/share/apps/konqueror/profiles/
cp -af $TM/etc/kde-share-config/* $TR/etc/skel/.kde/share/config/
cp -af $TM/etc/Desktop/* $TR/etc/skel/Desktop/
mkdir $TR/root/Desktop
cp -af $TM/etc/Desktop/* $TR/root/Desktop/
cp -af $TM/etc/root-Desktop/* $TR/root/Desktop/
cp -af $TM/etc/.kderc $TR/etc/skel/
# [jp] K.Wonderboy :0.97
cp -af $TM/etc/.kderc $TR/root/
cp -af $TM/etc/ramdisk-home/.bashrc $TR/etc/skel/
cp -af $TM/etc/ramdisk-home/.bash_profile $TR/etc/skel/
# [jp] K.Wonderboy :0.97
cp -af $TM/etc/qtrc $TR/etc/skel/.qt/
rm -rf $TR/etc/skel/office
rm -rf $TR/home/knoppix
# [jp] Max: Remove invalid desktop shortcuts here.
rm -f $TR/etc/skel/Desktop/Music
rm -f "$TR/etc/skel/Desktop/パワーポイントサンプル.ppt"
rm -f "$TR/etc/skel/Desktop/エクセルサンプル.xls"
rm -f "$TR/etc/skel/Desktop/ワードサンプル.doc"
# [jp] Max
cp -a $TR/etc/skel $TR/home
mv $TR/home/skel $TR/home/knoppix
chown -R knoppix.knoppix $TR/home/knoppix



# Setzen g?tiger Passw?ter f? die User root und knoppix mittels
# chroot-Umgebung
echo "システム管理用ユーザ(root)のパスワードを設定して下さい"
chroot $TR passwd root
echo "一般ユーザ(knoppixのパスワードを設定して下さい"
chroot $TR passwd knoppix

# Bei SCSI-System: Erzeugen einer initrd mit ash.static und SCSI-Modul
#FIXME: auch bei FSTYPE ext3 und reiserfs
INITRD=""
SCSIMODS=""
 mkdir -p $TL1 $TL2 >/dev/null 2>&1
# [jp] K.Wonderboy :0.95
#case "$FSCHOICE" in
#  /dev/sd*)
# [jp] K.Wonderboy :0.95
    mount -t vfat -o loop,ro /cdrom/KNOPPIX/boot.img $TL1
     gzip -cd $TL1/miniroot.gz > $TR/miniroot
     umount $TL1
     dd if=/dev/zero of=$TR/ird bs=1k count=$INSIZE
     mke2fs -F -m 0 -i 1024 -q $TR/ird
     mount -t ext2 -o loop,ro $TR/miniroot $TL1
     mount -t ext2 -o loop,rw $TR/ird $TL2
     cp -a $TL1/dev $TL1/etc $TL1/static $TL2
     cp -a $TL1/proc  $TL2
     cp -a $TL1/modules  $TL2
     cp -a $TM/etc/linuxrc $TL2
# [jp] daicki :0.96
     case "$FSTYPECHOICE" in
       ext3|reiserfs|xfs)
	RELKERNEL="`uname -r`"
	cp -a /lib/modules/$RELKERNEL/kernel/fs/$FSTYPECHOICE/$FSTYPECHOICE.o $TL2/modules
	chmod 755 $TL2/modules/$FSTYPECHOICE.o
	sed s/^ROOT_FSTYPE.*/ROOT_FSTYPE=\"$FSTYPECHOICE\"/ < $TL2/linuxrc > $TL2/linuxrc.tmp
	mv -f $TL2/linuxrc.tmp $TL2/linuxrc
	;;
     esac
# [jp] daicki :0.96
# [jp] K.Wonderboy :0.95
#    mkdir -p $TL2/proc $TL2/modules
#    for i in `ls $TL1/mod
#    do
#      i=${i%.o}
#     if [ -n "`grep $i /proc/modules`" ] ; then
#       SCSIMODS="$SCSIMODS $i"
#      fi
#    done
#    echo "#!/static/sh" >$TL2/linuxrc
#    for i in $SCSIMODS
#    do
#      cp $TL1/modules/scsi/$i.o $TL2/modules
#      echo "insmod /modules/$i.o" >>$TL2/linuxrc
#    done
#
# [jp] K.Wonderboy :0.95
     chmod 755 $TL2/linuxrc
     umount $TL1
     umount $TL2
     rm -rf $TR/miniroot
     gzip -9 $TR/ird
     mv $TR/ird.gz $TR/boot/initrd.gz
     INITRD="	initrd=/boot/initrd.gz"
# [jp] K.Wonderboy :0.95
#    ;;
#  *)
#    ;;
#esac
# [jp] K.Wonderboy :0.95

# Einrichten von LILO mittels chroot-Umgebung
# [jp] K.Wonderboy :0.98
##  --yesno "ブートローダ (LILO) をマスタブートレコード (MBR) に書き出しますか?" 15 60
#$DIA --backtitle "Knoppix Installation" --title "ブートローダの設定" \
#  --yesno "  ブートローダ (LILO) の書き込み先指定  \n
# \n
#    マスターブートレコード (MBR)  = < はい >   \n
#  ブートパーティション("$FSCHOICE") = <いいえ>  " 15 50
#x=$?
#if [ $x = 0 ] ; then
NUMLILO="3"
TYPELILO="mbr マスターブートレコード(MBR) on 
boot ブートパーティション("$FSCHOICE") off 
no LILOを書き込まない off" 
$DIA --backtitle "Knoppix Installation" --title "ブートローダの設定" \
  --radiolist "ブートローダ (LILO) の書き込み先指定" 16 60 $NUMLILO \
  $TYPELILO 2> $TMP
CHOICELILO="`cat $TMP`"
if [ $CHOICELILO != "boot" ] ; then
# [jp] K.Wonderboy :0.98
  LBOOT=${FSCHOICE%%[1-9]*}
else
  LBOOT=$FSCHOICE
fi
BKERNEL="/boot/vmlinuz-`uname -r`"
cat <<EOF >$TR/etc/lilo.conf
boot=$LBOOT
vga=791
prompt
timeout=50
append = "hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi apm=power-off noapic"

image=/boot/vmlinuz
	label=knoppix
	root=$FSCHOICE
	read-only
$INITRD

#other=/dev/hda1
#	label=freedos
#	table=/dev/hda
EOF
# [jp] K.Wonderboy :0.98
if [ $CHOICELILO != "no" ] ; then
# [jp] K.Wonderboy :0.98
echo "ブートローダ (LILO)  書き込み中..."
lilo -r $TR
# LILO-Bootsektor in Datei schreiben (f? boot.ini von NT/2k)
if [ $LBOOT = $FSCHOICE ] ; then
  dd if=$LBOOT of=$TR/linboot.img bs=512 count=1
fi
# [jp] K.Wonderboy :0.98
fi
if [ $CHOICELILO = "no" ] ; then
  $DIA --backtitle "Knoppix Installation" --title "ブートローダ非選択 " \
    --msgbox "  \n
 「ブートローダを書き込まない」が選択されました  \n
      ハードデイスクからは起動できません。\n
  \n
  次のステップで 起動用フロッピーを \n
         作成することをおすすめします。" 15 52
fi
# [jp] K.Wonderboy :0.98

# Bootdiskette erzeugen
$DIA --backtitle "Knoppix Installation" --title "起動用フロッピーの作成" \
  --yesno "起動用フロッピー を作成しますか?" 15 60
x=$?
if [ $x = 0 ] ; then
  $DIA --backtitle "Knoppix Installation" --title "  起動用フロッピーの作成  " \
    --msgbox "フロッピーは初期化されますが  よろしいですね?" 15 40
  echo "起動用フロッピー作成中..."
  mformat -t 80 -h 2 -s 18 a:
  syslinux /dev/fd0
  mount -t vfat /dev/fd0 $TL1
  cp $BKERNEL $TL1/vmlinuz
  [ -n "$INITRD" ] && cp $TR/boot/initrd.gz $TL1
cat <<EOF >$TL1/syslinux.cfg
default knoppix
prompt 1
timeout 50
label knoppix
  kernel vmlinuz
EOF
  echo -n "  append root=$FSCHOICE ro vga=791 apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi noapic" >>$TL1/syslinux.cfg
  if [ -n "$INITRD" ] ; then
    echo " initrd=initrd.gz" >>$TL1/syslinux.cfg
  else
    echo "" >>$TL1/syslinux.cfg
  fi
# [jp] K.Wonderboy :0.98
#  [ $LBOOT = $FSCHOICE ] && cp $TR/linboot.img $TL1
  if [ $CHOICELILO = "no" ] ; then
     dd if=$LBOOT of=$TL1/linboot.img bs=512 count=1
  else
  [ $LBOOT = $FSCHOICE ] && cp $TR/linboot.img $TL1
  fi
# [jp] K.Wonderboy :0.98
  umount $TL1
fi

#echo -n "debug delay... "
#read x

# Templates entfernen
rm -rf $TM
# Loopdevices explizit l?en (sonst ist $FSCHOICE busy)
for i in 7 6 5 4 3 2 1 0
do
  losetup -d /dev/loop$i >/dev/null 2>&1
done
# Rootpartition unmounten
umount $TR >/dev/null 2>&1

$DIA --backtitle "Knoppix Installation" --title "終了" \
  --msgbox "インストール完了" 15 40
rm -f $TMP
exit 0