お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2008-11-09 12:16:39

moz
メンバ
登録日: 2007-01-25

Xubuntu 8.10 on USB Memory : 全自動インストール

.           :D    :D    :D    :D



   Ubuntu Tips / USBデバイスへのインストール / の

      XubuntuをUSBメモリに全自動インストールするには に移転しました。

      不具合への対策が書かれており、見易いので、そちらを御覧下さい。




            :D    :D    :D    :D




「ライブCDの部屋」 から 「Xubuntu 8.10」 の日本語版が早速releaseされたので、比較的低スペックのPCに接続しても軽快に動く
と評判の、「Xubuntu 8.10 on USB Memory」 を全自動で作成します。

以下の4つの作業が1つのシェルスクリプトを実行するだけで自動的に行われます。

      1.  USBメモリのパーティション分割
      2.  必要なパッケージのインストール
      3.  Xubuntuのインストール
      4.  「ブートCD」イメージの作成

        ( なお、Xubuntuではcompizに関わる問題がないので、従来通り起動できます。 )


  1.  USBメモリ上に作成されるパーティション

USBメモリの容量が大きくなり、便利なfat16の 「 storageパーティション 」 を先頭に作れるようになったので、そのパーティションの
有無で分割が2通りになります。

    (1)  「 storageパーティション 」 の無い場合 : ( USBメモリ容量が2Gb以下:推奨 )

           デバイスファイル          名   称                 サイズ         ファイルシステム  
             /dev/sd*1          起動パーティション            700Mb             fat16
             /dev/sd*2          データパーティション          残り全部             ext2

    (2)  「 storageパーティション 」 の有る場合 : ( USBメモリ容量が4Gb以上:推奨 )

           デバイスファイル          名   称                 サイズ         ファイルシステム  
             /dev/sd*1        storageパーティション           任意                fat16
             /dev/sd*2          起動パーティション            700Mb              fat16
             /dev/sd*3          データパーティション          残り全部              ext2

下のシェルスクリプトでは、「 storageパーティション 」 の容量をその引数として加えた場合に 「 storageパーティション 」 が自動的
に作成されます。


  2.  パーティション分割・インストール・「ブートCD」イメージの作成

1.  「ライブCDの部屋」から xubuntu-8.10-desktop-i386-jp.iso をダウンロードし、CDに焼き、それでPCを起動する。
           ( 「 02dd1225d56a648e8df02bdfcadfaf12  xubuntu-8.10-desktop-i386-jp.iso 」
             をC&Pし、md5sumでイメージファイルを検証しておく。)

2.  上のパネルの 「 Applications 」 ---> 「 設定 」 ---> 「 設定マネージャー 」 ---> 「 Removable Drivers and
     Media 」 ---> 「 Storage 」 に入り、「 Removable Storage 」 の上の3つのチェックを外す。
               □ Mount ............. hot-plugged
               □ Mount ............. inserted
               □ Browse ............. inserted

3.  USBメモリをPCに接続する。(必ず、以下の作業の直前に接続する。PC起動の前に接続してはならない。)

4.  /home/ubuntu に スクリプトファイル install_usb.sh を作成し、以下の187行 ( 「exit 0」まで ) を書き込んで保存する。

        $ mousepad install_usb.sh

#!/bin/sh
#
#  Ubuntu Desktop CD USB Drive Installer
#  (C) 2006-2007 Jun Kobayashi  2008 modified by moz

[ -n "$DEBUG" ] && set -x

DEVICE_FILE=
PARTITION=
PARTITION2=
MOUNT_POINT="mnt"

yesno() {
  [ -n "$1" ] && echo -n "$1"
  while read ANS; do
    if [ x"$ANS" = xyes ] || [ x"$ANS" = xy ]; then
      return 0
    elif [ x"$ANS" = xno ] || [ x"$ANS" = xn ]; then
      return 1
    else
      echo -n "Answer 'yes' or 'no': "
    fi
  done
  return 1
}

abort() {
  [ -n "$1" ] && echo "$1"
  [ -n $MOUNT_POINT ] && umount $MOUNT_POINT > /dev/null 2>&1
  exit 1
}

#
# Main Routine
#

if [ `whoami` != "root" ]; then
  sudo $0 $@
  exit
fi

cd `dirname $0`

for device in $(hal-find-by-capability --capability storage); do
    VENDOR=$(hal-get-property --udi $device --key storage.vendor)
    NAME=$(hal-get-property --udi $device --key storage.model)
    PLUGGABLE=$(hal-get-property --udi $device --key storage.removable)
    TYPE=$(hal-get-property --udi $device --key storage.drive_type)
    DEVICE_FILE=$(hal-get-property --udi $device --key block.device)

    if [ "${PLUGGABLE}" = true ] && [ "${TYPE}" = "disk" ]; then
        break
    fi
done

echo "!!!注意!!!"
echo "間違ったデバイスを指定した場合、ハードディスクの内容を壊してしまう\n可能性があります。"
echo "内容を消去して良いUSBメモリが指定されていることを確認してください。\n"
echo "[使用するUSBメモリの情報]"
echo "\tデバイスファイル: $DEVICE_FILE\n\t\tベンダ: $VENDOR\n\t\tモデル: $NAME\n"
yesno "このUSBメモリにインストールしてよろしいですか?(yes/no) " || abort

echo "パーティション分割を開始します。"
echo "既存のパーティションは全て削除され、その上のデータは全て失われます。"
echo "先頭に 「storageパーティション」 を作成するかどうか確認してください。"
yesno "処理を続行してよろしいですか?(yes/no) " || abort
echo ""

num=`parted ${DEVICE_FILE} print | grep -c '^ [1-9]'`
a=1
while [ $a -le $num ]; do
  parted ${DEVICE_FILE} rm $a
  a=`expr $a + 1`
done
sync;  sleep 2

echo "既存のパーティションは削除されました。 新たに分割が行われます。\n"

unit=`sfdisk -l ${DEVICE_FILE} | grep ユニット | cut -f3 -d" "`

if [ -z "$1" ]; then
  pcy=`expr 700 \* 1000000 / $unit`
  sfdisk -q ${DEVICE_FILE} << EOF
,$pcy,6
,,83
EOF
  sync;  sleep 3
  PARTITION=${DEVICE_FILE}1;  PARTITION2=${DEVICE_FILE}2;  INDEX=1
fi
if [ -n "$1" ]; then
  pcy1=`expr $1 \* 1000000 / $unit`
  pcy2=`expr 700 \* 1000000 / $unit`
  sfdisk -q ${DEVICE_FILE} << EOF
,$pcy1,6
,$pcy2,6
,,83
EOF
  sync;  sleep 3
  PARTITION=${DEVICE_FILE}2;  PARTITION2=${DEVICE_FILE}3;  INDEX=2
  mkdosfs -F 16 -n storage ${DEVICE_FILE}1
  sync;  sleep 2
fi
echo "パーティション分割が完了しました。\n"

echo "${PARTITION}にブートフラグを設定します。"
sfdisk $DEVICE_FILE -A$INDEX || abort "失敗しました。"
echo "完了しました。\n"

echo "${PARTITION}にファイルシステムを作成します。"
mkdosfs $PARTITION || abort "失敗しました。"
sync;  sleep 2
echo "完了しました。\n"

if [ -n "$PARTITION2" ]; then
  echo "\n${PARTITION2}にファイルシステムを作成します。"
  mkfs.ext2 -b 4096 -L casper-rw ${PARTITION2} || abort "失敗しました。"
  sync;  sleep 2
  echo "完了しました。\n"
fi

if [ ! -f /usr/bin/mtools ] || [ ! -f /usr/bin/ms-sys ] || [ ! -f /usr/bin/syslinux ]; then
  echo "必要なパッケージをダウンロードします..."
  ur1="http://ubuntu.secs.oakland.edu/pool"
  ur2="http://lug.mtu.edu/ubuntu/pool"
  mtl="main/m/mtools/mtools_3.9.11-0ubuntu1_i386.deb"
  sys="main/s/syslinux/syslinux_3.63+dfsg-2ubuntu3_i386.deb"
  wget $ur1/$mtl || wget $ur2/$mtl || abort "失敗しました。インターネット接続を有効にしてから再実行してください。"
  wget $ur1/$sys || wget $ur2/$sys || abort "失敗しました。インターネット接続を有効にしてから再実行してください。"
fi

if [ -f syslinux*.deb ] && [ -f mtools*.deb ]; then
  echo "必要なパッケージをインストールします。\n"
  sudo dpkg -i *.deb || abort "インストールに失敗しました。"
fi
echo "\nパッケージのインストールが完了しました。\n"

echo "syslinux をインストールします。"
syslinux $PARTITION
sleep 1
echo "完了しました。\n"

mkdir mnt || abort "失敗しました。"
echo "$PARTITION を `pwd`/${MOUNT_POINT} にマウントしています。"
mount -t vfat $PARTITION $MOUNT_POINT || abort "失敗しました。"
sync
sleep 1
echo "完了しました。\n"

echo "ファイルをコピーしています。(時間がかかります)"

cp -rf /cdrom/.disk /cdrom/isolinux $MOUNT_POINT/ || abort "失敗しました。"
mv -f $MOUNT_POINT/isolinux $MOUNT_POINT/syslinux || abort "失敗しました。"
sync

mkdir $MOUNT_POINT/casper/ || abort "失敗しました。"
cp -f /cdrom/casper/filesystem.* /cdrom/casper/vmlinuz /cdrom/casper/initrd.gz $MOUNT_POINT/casper/ || abort "失敗しました。"
sync

cp -f /cdrom/isolinux/isolinux.cfg $MOUNT_POINT/syslinux.cfg || abort "失敗しました。"
cp -f /cdrom/isolinux/isolinux.cfg $MOUNT_POINT/syslinux/syslinux.cfg || abort "失敗しました。"
sync

if [ -n "$PARTITION2" ]; then
  sudo sed -i -e '6,19d' -e 's/Try Xubuntu without any change to your computer/Start Xubuntu on USB Memory/' -e 's/splash --/splash persistent --/' $MOUNT_POINT/syslinux/text.cfg
  sync
fi
echo "ja" > $MOUNT_POINT/syslinux/lang
echo "完了しました。\n"

echo "「ブートCD」のイメージを作成します。"
mkdir -p bootcd/casper || abort "失敗しました。"
cp -rf /cdrom/.disk /cdrom/isolinux bootcd/ || abort "失敗しました。"
cp -r /cdrom/casper/vmlinuz /cdrom/casper/initrd.gz bootcd/casper/ || abort "失敗しました。"
cp -f $MOUNT_POINT/syslinux/text.cfg bootcd/isolinux/ || abort "失敗しました。"
echo "ja" > bootcd/isolinux/lang
genisoimage -R -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o bootcd.iso bootcd || abort "失敗しました。"
sync
echo "\n「ブートCD」のイメージができました。"

echo "`pwd`/${MOUNT_POINT} をアンマウントしています。"
umount $MOUNT_POINT || abort "失敗しました。"
rm -rf mnt bootcd *.deb || abort "失敗しました。"
echo "完了しました。"

echo "\nすべての処理が正常に終了しました。\n"

exit 0


5.  次のコマンドでインストールし、「ブートCD」イメージを作成する。

     (1)  先頭に 「storageパーティション」 を作成しない場合:

                   $ sudo sh ./install_usb.sh

     (2)  先頭に 「storageパーティション」 を作成する場合は、そのパーティション容量 (Mb) を半角数字 xxxx で、引数として
            付け加える。

                  $ sudo sh ./install_usb.sh xxxx

6.   /home/ubuntu に出来ている bootcd.iso を、CD-R(W) に焼く。


                              **                                                                             **

  ≪ ファイアウォールを有効にする ≫

「 Xubuntu 8.10 」 に入っている 「ufw (Uncomplicated Firewall)」 を起動することで、簡単な Firewall を有効にします。
次のコマンドを実行して2行目の応答があれば起動され、次回からXubuntu起動時に自動的に有効になります。  

      $ sudo ufw enable
      Firewall started and enabled on system startup

( 「データパーティション」へのデータ保存機能に関して、セキュリティに未解決の問題があります。ご注意下さい。)


  ≪ 参考 と お願い ≫

1.  USBメモリ上のXubuntuを使うのに、「USBメモリ上のUbuntuを快適に使うには」 を参考にして下さい。 幾つかの項目が加えら
     れましたので、初めての方に限らず是非御覧下さい。

2.  不具合がありましたら、是非お知らせ下さい。
.

最後の編集者: moz (2008-11-21 11:41:51)

オフライン

 

Board footer

Powered by FluxBB