お知らせ

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

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

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

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

.           :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)

オフライン

 

#2 2008-11-12 21:57:54

Sekko
メンバ
登録日: 2007-12-10

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

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」が実現できた、という事例報告が欲しいところです。

オフライン

 

#3 2008-11-13 23:50:50

sd
新しいメンバ
登録日: 2008-11-05

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

この全自動インストールと
http://forum.ubuntulinux.jp/viewtopic.php?id=3203
にあるMake USB Startup Diskでの作成方法とで、
完成したUSBはパーティションが分割されている事以外に
何か違いがでるものなのでしょうか?

オフライン

 

#4 2008-11-15 11:34:57

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

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

「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)

オフライン

 

#5 2008-11-15 12:54:19

sd
新しいメンバ
登録日: 2008-11-05

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

どちらもファイルの中身が見れたので
何が違うのか疑問に思っておりましたが、納得しました。

起動不能→再インストールは確かに手間がかかるので
「casper-rw」パーティションのほうがよさそうですね。

mozさん、回答ありがとうございました。

オフライン

 

#6 2008-11-21 14:16:04

Sekko
メンバ
登録日: 2007-12-10

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

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時間遅れになり、これはまことに困ります。回避策がございましたらご教示ください。

オフライン

 

#7 2008-11-21 16:56:50

trucknumber
新しいメンバ
登録日: 2008-11-10

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

Sekkoさん
http://forum.ubuntulinux.jp/viewtopic.php?id=3323
Ubuntu 8.10 の時刻表示が+9時間になる。
を読んでみてはどうでしょうか。

Sekko による投稿:

時刻が9時間遅れで表示され、地域をASIA/Tokyoに設定してインターネット上のサーバーと時刻同期がとれません。

最後の編集者: trucknumber (2008-11-21 16:59:25)

オフライン

 

#8 2008-11-23 11:25:19

Sekko
メンバ
登録日: 2007-12-10

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

trucknumberさん、ご助言ありがとうございます。
ご紹介いただいた投稿は一通り読んでいます。
/etc/default/rcSを編集し、UTC=noに書き換えて保存しました上で、「システム管理→時刻と日付の設定」で時刻あわせを行いました。
Ubuntuを終了し、ふたたび起動すると時刻は、「マイナス9時間」に戻ってしまいます。/etc/default/rcSのUTCは「no」のままです。
NTPサポートのインストールを失敗しているのが原因かと推測していますが、答えが見付かりません。

オフライン

 

#9 2009-01-22 20:11:20

Sekko
メンバ
登録日: 2007-12-10

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

#2に関連した報告です。
USBメモリから起動することができる中古のPCを探していますが、Pentium、IBM Thinkpadなどの条件を付けるとなかなか見付かりません。

最近、デスクトップ機を改造、マザーボードをGA-MA78GPM-DS2Hに換装しました。
このMBはUSBから起動でき、Ubuntu on USBの起動を確認しました。起動に要する時間は1分程度です。予備のHDDにインストールしてあったUbuntu8.04.1を削除し、Ubuntu on USBを使ってUbuntu体験をすすめようと思います。

オフライン

 

Board footer

Powered by FluxBB