
Ubuntu日本語フォーラム

ログインしていません。
. :D :D :D :D
「 Ubuntu 9.04 」 がリリースされました。
Ubuntu Tips / USBデバイスへのインストール / の
UbuntuをUSBメモリに自動インストールするには ( 9.04 版 GUI )
を御覧下さい。
:D :D :D :D
--------------------------------------------------------------
「 Ubuntu 8.10 」 をC&P法でUSBメモリにインストールし、それを起動する「ブートCD」の自動的作成法です。
以下の3つの作業が1つのシェルスクリプトを実行するだけで自動的に行われます。
1. USBメモリのパーティション分割
2. Ubuntuのインストール
3. 「ブートCD」イメージの作成
1. USBメモリ上に作成されるパーティション
USBメモリの容量が大きくなり、便利なfat16の 「 storageパーティション 」 を先頭に作れるようになったので、そのパーティションの
有無で分割が2通りになります。
(1) 「 storageパーティション 」 の無い場合 : ( USBメモリ容量が2Gb以下:推奨 )
接続デバイス 名 称 サイズ ファイルシステム
/dev/sd*1 起動パーティション 720Mb fat16
/dev/sd*2 データパーティション 残り全部 ext2
(2) 「 storageパーティション 」 の有る場合 : ( USBメモリ容量が4Gb以上:推奨 )
接続デバイス 名 称 サイズ ファイルシステム
/dev/sd*1 storageパーティション 任意 fat16
/dev/sd*2 起動パーティション 720Mb fat16
/dev/sd*3 データパーティション 残り全部 ext2
下のシェルスクリプトでは、「 storageパーティション 」 の容量をその引数として加えた場合に 「 storageパーティション 」 が自動的
に作成されます。
2. パーティション分割・インストール・「ブートCD」イメージの作成
1. 「 Ubuntu 8.10 日本語ローカライズ版 」 ( 日本語 Remix CD ) をCDに焼き、それでPCを起動する。
2. USBメモリをPCに接続し(必ず、以下の作業の直前に接続する。PC起動の前に接続してはならない。)、その上に現存する
パーティションがファイル・ブラウザで開かれたら、全て閉じる。アンマウントする必要はない。
3. /home/ubuntu に スクリプトファイル install_usb.sh を作成し、以下の181行 ( 「exit 0」まで ) を書き込んで保存する。
$ gedit 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メモリにインストールしてよろしいですか? [Y/n] " || abort
echo "\nUSBメモリ上にある全てのパーティションをアンマウントします。\n"
i=1
while [ $i -le 9 ]; do
umount ${DEVICE_FILE}$i 2>/dev/null
i=`expr $i + 1`
done
echo "パーティション分割を開始します。"
echo "既存のパーティションは全て削除され、その上のデータは全て失われます。"
echo "先頭に 「storageパーティション」 を作成するかどうか確認してください。"
yesno "処理を続行してよろしいですか? [Y/n] " || 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
unit=`sfdisk -l ${DEVICE_FILE} | grep ユニット | cut -f3 -d" "`
if [ -z "$1" ]; then
pcy=`expr 720 \* 1000000 / $unit`
sfdisk -q ${DEVICE_FILE} << EOF
,$pcy,6
,,83
EOF
sync; sleep 5
PARTITION=${DEVICE_FILE}1; PARTITION2=${DEVICE_FILE}2; INDEX=1
umount ${PARTITION} 2>/dev/null; umount ${PARTITION2} 2>/dev/null
sleep 2
fi
if [ -n "$1" ]; then
pcy1=`expr $1 \* 1000000 / $unit`
pcy2=`expr 720 \* 1000000 / $unit`
sfdisk -q ${DEVICE_FILE} << EOF
,$pcy1,6
,$pcy2,6
,,83
EOF
sync; sleep 5
PARTITION=${DEVICE_FILE}2; PARTITION2=${DEVICE_FILE}3; INDEX=2
umount ${DEVICE_FILE}1 2>/dev/null; umount ${PARTITION} 2>/dev/null; umount ${PARTITION2} 2>/dev/null
sleep 2
mkdosfs -F 16 -n storage ${DEVICE_FILE}1
sync; sleep 2
fi
echo "パーティション分割が完了しました。\n"
yesno "新たに開かれたファイル・ブラウザを閉じて、「Y」と入力して下さい。 [Y] " || abort
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
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 Ubuntu without any change to your computer/Start Ubuntu on USB Memory/' -e 's/utc=no --/utc=no persistent --/' $MOUNT_POINT/syslinux/text.cfg
sync
fi
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 "失敗しました。"
sync
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 || abort "失敗しました。"
echo "完了しました。"
echo "\nすべての処理が正常に終了しました。\n"
exit 0
4. 次のコマンドでインストールし、「ブートCD」イメージを作成する。
(1) 先頭に 「storageパーティション」 を作成しない場合:
$ sudo sh ./install_usb.sh
(2) 先頭に 「storageパーティション」 を作成する場合は、そのパーティション容量 (Mb) を半角数字 xxxx で、引数として
付け加える。
$ sudo sh ./install_usb.sh xxxx
5. /home/ubuntu に出来ている bootcd.iso を、CD-R(W) に焼く。
3. 起動後の処置 重要!
1. 「compiz」 に関わる起動時の不具合に対して、次のコマンドを実行する。 ( 時間の掛かることがある。)
$ sudo apt-get remove compiz-core
2. 時刻を日本標準時に設定するために、geditでファイル /etc/init.d/rc.local を開き、最下段に下の1行を書き加えて
保存する。 再起動時から日本標準時になる。
$ sudo gedit /etc/init.d/rc.local
cp -f /usr/share/zoneinfo/Japan /etc/localtime
3. 「 Ubuntu 8.10 」 に入っている 「 ufw 」 を起動することで、簡単な Firewall を有効にする。
次のコマンドを実行して2行目の応答があれば起動され、次回からUbuntu起動時に自動的に有効になる。
$ sudo ufw enable
Firewall started and enabled on system startup
( 「データパーティション」へのデータ保存機能に関して、セキュリティに未解決の問題があります。ご注意下さい。)
≪ 参考 と お願い ≫
1. USBメモリ上のUbuntuを使うのに、「USBメモリ上のUbuntuを快適に使うには」 を参考にして下さい。 幾つかの項目が加えら
れましたので、初めての方に限らず是非御覧下さい。
2. 不具合がありましたら、是非お知らせ下さい。
.
最後の編集者: moz (2009-04-27 10:06:51)
オフライン
mozさん、お示しいただいた手順を踏み、Storageパーティション付きの「Ubuntu on USB Memory」の作成に成功しました。「$ sudo ufw enable」も確認。
このUSBメモリをWindowsXP機とMacOS Xで試しましたが、いずれも「Storage」という名前で認識されます。それぞれ、双方向の読み書きを試しすべてOK。素晴らしい。
この後、Ubuntu8.10のアップデートを行いました。「USBメモリ上のUbuntuを快適に使うには」を参照し、アップデートはカーネル関係を外して行いました。これで良いですね。
「Ubuntu on USB Memory」を起動して、FirefoxやThunderbirdの設定、デスクトップ背景を変更しました。これらの設定が保存されて次回起動時にも有効なことを確認し、嬉しくなりました。私のPC環境ではBoot CDが必要ですが、USBメモリから起動できるPCがあれば、「Portable Ubuntu」が実現できます。こんなノートPCが欲しい。
このUSBメモリと、このPCで、「Portable Ubuntu」が実現できた、という事例報告が欲しいところです。
オフライン
この全自動インストールと
http://forum.ubuntulinux.jp/viewtopic.php?id=3203
にあるMake USB Startup Diskでの作成方法とで、
完成したUSBはパーティションが分割されている事以外に
何か違いがでるものなのでしょうか?
「Make USB Startup Disk」 のデータ保存ファイル 「 casper-rw 」 はループバックファイルであり、従来の 「 Ubuntu on USB
Memory 」 における 「 casper-rw 」 パーティションと全く同等の機能を持っています。
しかし、USBメモリ上のUbuntuを快適に使うには の 「 8. 起動できなくなったUUMをできるだけ復旧する 」 で 保存したい
データを取り出す場合、後者、即ち「 casper-rw 」 パーティションの方は、内蔵HDDにインストールしたUbuntuを起動してUSB
メモリをPCに接続すれば、すぐそのパーティションのファイルシステムを見ることができますが、前者、即ちファイル 「 casper-rw 」
の方はそのままでは見ることができません。
接続したUSBメモリのデバイスファイルを /media/disk ( または、/media/disk-1 ・・・・・ ) とし、コマンド
$ sudo mount -o loop /media/disk/casper-rw /mnt
を実行すれば、/mnt にマウントされたファイルシステムを見ることができます。
「 単に初期状態に戻して起動可能にする 」 場合、後者では次のコマンドを実行すれば可能ですが、前者ではできません。
$ sudo mkfs.ext2 -b 4096 -L casper-rw /dev/sd**
USBメモリは電磁気学的には極めて脆弱ですから、些細な手違いから起動不能に陥ります。
前者ではその度に再インストールとなりますが、後者は上のコマンドの実行だけで済みます。
.
最後の編集者: moz (2008-11-15 13:54:11)
オフライン
どちらもファイルの中身が見れたので
何が違うのか疑問に思っておりましたが、納得しました。
起動不能→再インストールは確かに手間がかかるので
「casper-rw」パーティションのほうがよさそうですね。
mozさん、回答ありがとうございました。
mozさんのご指南で作成した「Make USB Startup Disk」はうまく機能しており満足しています。
一点だけ改善できれば幸せです。
時刻が9時間遅れで表示され、地域をASIA/Tokyoに設定してインターネット上のサーバーと時刻同期がとれません。
NTPサポートをインストールすると下記のエラーとなります。
「E: /var/cache/apt/archives/ntp_1%3a4.2.4p4+dfsg-6ubuntu2_i386.deb: (今インストールしようとしている) `./etc/ntp.conf' のステータスを得られません」
この事象は我慢で切るのですが、Ubuntu 8.10を正規に終了してからWindowsを起動すると、Windowsの時刻も9時間遅れになり、これはまことに困ります。回避策がございましたらご教示ください。
オフライン
Sekkoさん
http://forum.ubuntulinux.jp/viewtopic.php?id=3323
Ubuntu 8.10 の時刻表示が+9時間になる。
を読んでみてはどうでしょうか。
Sekko による投稿:
時刻が9時間遅れで表示され、地域をASIA/Tokyoに設定してインターネット上のサーバーと時刻同期がとれません。
最後の編集者: trucknumber (2008-11-21 16:59:25)
オフライン
trucknumberさん、ご助言ありがとうございます。
ご紹介いただいた投稿は一通り読んでいます。
/etc/default/rcSを編集し、UTC=noに書き換えて保存しました上で、「システム管理→時刻と日付の設定」で時刻あわせを行いました。
Ubuntuを終了し、ふたたび起動すると時刻は、「マイナス9時間」に戻ってしまいます。/etc/default/rcSのUTCは「no」のままです。
NTPサポートのインストールを失敗しているのが原因かと推測していますが、答えが見付かりません。
オフライン
#2に関連した報告です。
USBメモリから起動することができる中古のPCを探していますが、Pentium、IBM Thinkpadなどの条件を付けるとなかなか見付かりません。
最近、デスクトップ機を改造、マザーボードをGA-MA78GPM-DS2Hに換装しました。
このMBはUSBから起動でき、Ubuntu on USBの起動を確認しました。起動に要する時間は1分程度です。予備のHDDにインストールしてあったUbuntu8.04.1を削除し、Ubuntu on USBを使ってUbuntu体験をすすめようと思います。
オフライン