
Ubuntu日本語フォーラム

ログインしていません。
. :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)
オフライン