
Ubuntu日本語フォーラム

ログインしていません。
. :D :D :D :D
Ubuntu Tips / USBデバイスへのインストール / の
USB-HDD上のUbuntuを複数のPCで使うには ( 工夫と応用 )
に移転しました。
:D :D :D :D
--------------------------------------------------------------
ここでは、「 Ubuntu on USB HDD 」を使う上で必要な 「 工夫と応用 」 について説明します。
1. 「 kernel update 」時の対応
2. 「 xorg.conf 」 を直接編集する方法
3. パーティション分割の工夫
4. 「 multiboot USB HDD 」 の作成法 ( 準備中 )
≪ 1. 「 kernel update 」 時の対応 ≫
kernel update した場合は、数分しか掛からない以下の対応を後にして、そのまま以前のkernelを使い続けても構いません。
kernel update して、異なる version の kernel が3つになったら、以下の処理を行う前に不用な1番古い kernel 及びその関連
packagesを必ず削除しておきます。 下記の 「 シェルスクリプト update.sh 」 は kernel が2つの場合にしか対応していません。
また、 「 update-grub コマンド 」 は使いません。
1. /home/ubuntu に シェルスクリプト update.sh を作成し、以下の67行を書き込んで ( C&P ) 保存する。
$ gedit update.sh
#!/bin/sh
vn1=`ls /boot | grep vmlinuz | tail -1 | cut -d- -f2,3`
vn2=`ls /boot | grep vmlinuz | head -1 | cut -d- -f2,3`
ird=`ls /boot | grep modif`
cp -f /boot/grub/menu.org ./
sed -n '130,140p' menu.org > ff0
sed -e s/2.6.24-16/$vn1/ ff0 > ff1
sed -e s/2.6.24-16/$vn2/ ff0 > ff2
cat ff2 >> ff1
sed -i -e '130,140d' menu.org
cat ff1 >> menu.org
sudo cp -f menu.org /boot/grub/menu.lst
mkdir init && cd init
gzip -dc /boot/initrd.img-"$vn1-generic" | cpio -i
sed -i -e 's|mount \${roflag}|mount -w|' scripts/local
sed -i -e '/^xres/d' -e '/^yres/d' etc/usplash.conf
cat > scripts/local-bottom/02xconfig <<EOF
#!/bin/sh
case \$1 in
prereqs)
exit 0
;;
esac
chroot /root /usr/bin/lshw -C system > /root/etc/X11/xorg/pcid
sleep 1
num=0
for file in \`chroot /root /bin/ls /etc/X11/xorg | chroot /root /bin/grep pcid-\`; do
dpc=\`chroot /root /usr/bin/diff -q /etc/X11/xorg/\$file /etc/X11/xorg/pcid\`
if [ -z "\$dpc" ]; then
num=\`echo "\$file" | cut -c 6-\`
fi
done
if [ \$num -gt 0 ]; then
chroot /root /bin/cp -f /etc/X11/xorg/xoc-\$num /etc/X11/xorg.conf
else [ -x /root/usr/sbin/dpkg-reconfigure ]
chroot /root /usr/sbin/dpkg-reconfigure -fnoninteractive --no-reload xserver-xorg
fi
chroot /root sed -i -e 's/pc105/jp106/' -e 's/"us"/"jp"\n\tOption\t\t"XkbOptions"\t"lv3:ralt_switch"/' /etc/X11/xorg.conf
exit
exit 0
EOF
sudo chmod +x scripts/local-bottom/02xconfig
mv scripts/local-bottom/ntfs_3g scripts/local-bottom/01ntfs_3g
find . | cpio -o -H newc | gzip > ../initrd.img-"$vn1"-modif
cd ..
sudo cp -f initrd.img* /boot/
mkdir -p bootcd/boot/grub
cp /boot/vmlinuz* bootcd/boot/
cp /boot/"$ird" bootcd/boot/
cp initrd.img* bootcd/boot/
cp /boot/grub/* /usr/lib/grub/i386-pc/stage2_eltorito bootcd/boot/grub/
sed -i -e 's/hd0,[0-9]/cd/' -e 's|/boot|\(cd\)/boot|' bootcd/boot/grub/menu.lst
sudo genisoimage -R -U -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o update.iso bootcd
sudo rm -rf bootcd init f* menu.org initrd.img*
exit 0
2. シェルスクリプト update.sh を実行する。
$ sh ./update.sh
3. /home/ubuntuにできている 「 ブートCD 」 イメージ update.iso をCD-R(W)に焼く。
4. 「 シェルスクリプト update.sh 」 を保存して、次の kernel update に備えておく。
また、ファイル /boot/grub/menu.org は決して編集・削除しない。
≪ 2. 「xorg.conf」 を編集・保存する方法 ≫
各種driversや関連パッケージが追加インストールされ、適当な設定がなされれば、対応するhardwaresが原則的に自動認識されますが、
「xorg.conf」の編集が必要となる場合があります。
1. Graphics Cards に対応していない場合、起動途中で「Low Graphics Modeで起動しますか?」という問いが
画面に現れるので、それを選択し起動する。「Synaptic パッケージ・マネージャ」などでdriversとその関連packagesを
インストールし、必要な設定を行う。これだけで、次回起動時から正常起動できることが多いが、必要なら「xorg.conf」を
編集する。
display の解像度に対応できない場合は、始めから「xorg.conf」を編集する。
2. ファイル/usr/loca/bin/xorg-edit.sh をダブルクリックし、「端末内で実行する」をクリック。
ファイルxorg.conf が開かれるので、編集・保存した後 gedit を閉じる。
3. 次に、ファイル/usr/local/bin/xorg-save.sh をダブルクリックし、「実行する」をクリック。
何の反応もないが、xoc-* のファイル名でxorg.confが、pcid-* の名でpcidが、フォルダ/etc/X11/xorg の中に保存
される。 無反応が心配なら、ディレクトリ /etc/X11/xorg の中に対応するファイルが出来ているか確認する。
4. 以上で、「Ubuntu on USB HDD」の起動時に、接続PCに対応するファイルxorg.confが自動的に読み込まれる。
5. display の解像度に対応できない場合、「 Section "Screen" 」 に 「 SubSection "Display" 」 を書き加えて、
追加したい解像度をModesの一番目に追加する。1例を示す。
Section "Screen"
・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・
SubSection "Display"
Depth 24
Modes "1680x1050" "1280x1024" "1024x768" "800x600"
EndSubSection
EndSection
≪ 3. パーティション分割の工夫 ≫
1. windowsで起動したPCに接続してもデータ保存用として使える 「 fat16 (fat32)の先頭パーティション」 を作る。
次のコマンドでフォーマットし名前を付ける。
$ sudo /sbin/mkfs.msdos -F 16 -n storage /dev/sd*1
2. 「 拡張領域 」 に複数のパーティションを作成して、multiboot USB HDD とする。
この場合、Kubuntu・Xubuntu も使用可能、詳しくは 「 multiboot USB HDD の作成法 」 を閲覧する。
以下に1例を示すが、先頭パーティションの位置以外は容量も位置も全く自由。当面は3つのパーティションだけとし、
後でパーティションを追加するのも一案。
接続デバイス パーティション名 サイズ ファイルシステム
/dev/sd*1 storage (データ保存) 10Gb fat16 (fat32)
/dev/sd*2 root (Ubuntu日本語) 20Gb ext3
/dev/sd*3 swap 1Gb swap
/dev/sd*4 extended 120Gb 拡張領域
/dev/sd*5 root (Kubuntu日本語) 20Gb ext3
/dev/sd*6 root (Ubuntu英語) 20Gb ext3
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
≪ 4. 「 multiboot USB HDD 」 の作成法 ( 準備中 ) ≫
.
最後の編集者: moz (2008-10-02 10:12:11)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-03 00:24:41)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-10 22:42:48)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyoshiさん、正解です!
「Ubuntu on USB HDD : 複数のPCで使う方法」の2つのtopicsでは、「Ubuntu-ja-8.04-desktop-i386.iso」でインストール
した場合にだけ対応しています。
これでは、「Ubuntu 8.10」のlive-CDでインストールする場合は起動できなくなります。
だからこそ、Ubuntu on USB HDD : 複数のPCで使う方法 ( 決定版 ) の#2で提示したように、kernel のversionを「zzz」で
置換した menu.org というtemplateを作成するのです。 その際、initrd.img のgenericはmodifで置換しておきます。
次の「Ubuntu 8.10」までにシェルスクリプトを書き換えれば良いだろうと高を括っていたら、何と「Ubuntu 8.04.1」という伏兵が
居たというわけです。
* *
是非お知恵を拝借したい悩ましい未解決の問題があるのです。
OSのversion、例えば 8.04.1 とか 8.10 ですが、これを自動的に変更するのが難しいのです。
releaseしたてのOSをインストールする場合はそのmenu.lstを参照すればよいのですが、upgradeする場合は厄介なのです。
勿論、シェルスクリプトの2番目の引数として読み込ませれば良いのですが、初心者の方には混乱の元かなと考えています。
.
最後の編集者: moz (2008-09-10 21:32:28)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-10 22:50:13)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-12 12:47:34)
オフライン
いつも御報告頂きありがとうございます。
apt-get upgrade コマンドなどで正常起動できたということは、次の2つが考えられます。
1) インストールが不完全であったこと。 USB-HDDはやはり接続が内臓HDDほど確かではないので、どうしても起動に関わる
packagesにも問題が起こりやすいのかもしれません。
2) 起動に関わるpackagesにbugがあって、USB-HDDからの起動で顕現する場合。
いずれも upgrade で解消されるのかもしれません。
私の古い 「Dell gx260」 の場合は、大分USB端子が傷んできたようで、時に再インストールが必要となります。
頻繁に脱着を繰り返すUSBは便利であると同時に障害も起こりやすいのでしょう。
* *
「Ubuntu 7.10」 で同じ方法が可能かどうか試して見ましたが、「Ubuntu 8.04」 とはinitrdの中のファイルの記述が異なり
なかなか上手くいきません。
余り時間を掛けたくないので、早々に撤退です。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-12 21:37:12)
オフライン
「 職場で主にUSBーHDD中のUbuntuを使おうかと考えていましたが、やはり内蔵HDDの方が安全そうですね。 」 と言われます
が、インストールさえ問題なくできていれば、USB-HDDはUSBメモリ程電磁気学的に脆弱ではありませんから、「主にUSBーHDD
中のUbuntuを使われて」よいと思います。
データなど持ち運びせずにいつも同じ状態で、連続的に仕事ができる点では laptop 並だと言えます。
fat16のstorageパーティションを先頭に作成しておけば、Ubuntuが万が一起動できなくなっても全く無関係で、どのOSで起動
したPCに接続してもデータを取り出せます。
先頭に巨大なstorageパーティションを作るのが嫌なら、Ubuntuパーティションの後方に巨大なものを複数作ればいいのです。
適当な大きさのstorageパーティションを沢山作成し、それぞれに適当な名前を付けてフォーマットしておけば、デスクトップに
それらのアイコンが分類名付きで縦に並びますから、非常に使い易いですね。 1クリックで必要なデータにアクセスできます。
Ubuntuが起動できなくなっても、linuxで起動したPCに接続すればいつでもそのデータは取り出せます。 :P
こうすれば、実験室などでは laptop より利用価値があるかもしれません。
.
最後の編集者: moz (2008-09-12 22:39:28)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-09-12 23:49:56)
オフライン
#8 で触れたように、「Ubuntu 7.10」 で同じ方法が可能かどうか試してみました。
「Ubuntu 8.04」 とはinitrdの中のファイル、特にファイル scripts/casper-bottom/20xconfig の記述内容がかなり異なって
いるのですが、ファイル scripts/init-bottom/02xconfig の対応部分を次のように書き換えることで起動出来るようになりました。
else [ -x /root/usr/sbin/dpkg-reconfigure ]
chroot /root /usr/sbin/dpkg-reconfigure -fnoninteractive --no-reload xserver-xorg
fi
↓
else [ -x /root/usr/sbin/dpkg-reconfigure ]
chroot /root <<'EOF'
( touch /tmp/.xconfig.lock; \
cp -a /var/cache/debconf/config.dat /var/cache/debconf/config.dat.xconfig; \
DEBCONF_DB_REPLACE='File{/var/cache/debconf/config.dat.xconfig}' DEBUG_XORG_PACKAGE=1
DEBUG_XORG_DEBCONF=1 \
/usr/sbin/dpkg-reconfigure -fnoninteractive --no-reload xserver-xorg ;
rm -f /tmp/.xconfig.lock ) &
EOF
fi
このように、kernelのversion-upと共に、OSのhardware-detectionに関わる部分はどんどん改良されていることが分かります。
従って、次の 「ubuntu 8.10」 では、ファイル scripts/init-bottom/02xconfig の対応部分を書き換える必要がありそうで、
OSのversion-upに機械的に対応するのは無理のようです。
.
最後の編集者: moz (2008-09-14 11:36:14)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
Wiki の Ubuntu Tips、USBデバイスへのインストールに、 「 USB-HDD上のUbuntuを複数のPCで使うには (工夫と応用) 」 として移転しました。
移転に当たり、以下の箇所を変更しました。
1. 簡単のため、kernel-update 後にインストールされている kernel が複数となっても、grubの選択画面に最新のkernel だけ
を出すようにしました。
2. kernel-update と OS-upgrade を分けて対応するようにしました。 後者の場合は、initrd.img の記述にかなりの変化が
ありうるので、シェルスクリプトの書き換えが必要になる可能性があるからです。
オフライン
ログイン後、オレンジ一色画面から進まない問題が発生しました。
発生状況ですが、
1 購入したUSBで、購入したままの状態で、Ubuntuをインストールした時は特に問題なく動作しました。
2 その後、別な事情で再度USBにインストールを行なった所、この問題が発生。PCを変えたり、作業場所(ネットワーク環境)を変え数回インストールをしなおしても同じでした。
インストール不完全という問題があるとしたら、私の情報は何かの役に立つかも知れません。
オフライン
Wiki の Ubuntu Tips、USBデバイスへのインストールへの移転に当たり変更した箇所のうち次の項目を忘れていました。
echoコマンドの「-e」オプションのbugの件で、スクリプトファイル boot-hdd.shの64行目で
echo -e '\nrm -f /etc/X11/xorg.conf.20*' >> rc.local
↓
echo ' ' >> rc.local
echo 'rm -f /etc/X11/xorg.conf.20*' >> rc.local
のように変更しました。
最後の編集者: moz (2008-10-01 20:21:52)
オフライン
kiyoshiさん御指摘の起動時の不具合(#7)を経験するために、中古のPC 「NEC MATE MA24V」 を購入して実験してみましたが
やはり問題なくすんなり起動できてしまいます。
周囲の協力でさらに5台のPCで実験しましたが、不具合は現れません。
もうすぐ 「 Ubuntu 8.10 」 がreleaseされますので、それまでこの問題は保留とします。
また、同じく周囲の協力による実験で 「 突入電流 」 の問題も今まで起こっていないので、稀にしか起こらないとして注意書きは一旦
削除します。 将来そのような例が報告されたら再度掲載します。
.
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-10-19 23:24:16)
オフライン