ブラウザの JavaScript がオフ(ブロックまたは許可しない)に設定されているため、このページは正常に機能しません。
disklessfun’s Wiki*
[
ホーム
]
一覧
最終更新
バックアップ
ヘルプ
Top
>
usbboot
>
複製
?
ms
usbboot をテンプレートにして作成
これらのキーワードがハイライトされています:
開始行:
(2010-01-11)かなり希なニーズしかないと思いますが、[[%%%掲示板%%%>board#b1a30ab5]]に、USBブートに対応していないPCでUSBハードディスク(USBメモリ)上に置いたカーネルをブートさせる手法を掲載しています。←iSCSIブートに対応していないPCでiSCSIストレ
----
TITLE: Linux各ディストリビューションのUSBブート・対応状況
RIGHT:初出 2006-12-5
RIGHT:最終更新 2009-9-9
LEFT:
マルチブートするなら[[2段階ブートに統一して、>multipleboot]][[MBM>mbm]]を使用しましょう。[[MBM>mbm]]は、WindowsがインストールするMicrosoft謹製のMBR用ブートローダやgrubのchainloader機能の上位互換となる高機能なブートローダです。[[このページ>
#br
CFブートがメインのページは[[''こっち''>cfide]]です。
#br
(2008-1-3) Linux各ディストリビューションで(USB接続DVDドライブなどを使わずに)[[%%%''インストーラをUSBメモリなどからUSBブートさせたり''%%%>singledriveinstall]]、内蔵ハードディスクからインストーラを起動する方法なら→ [[''Linuxを、インストーラ
(2007-8-18) USB接続ハードディスク(USBメモリ)への直接インストールに関する情報を追加しました。&size(10){(fc6のUSBブート化手順は削除しました。)};
#br
(2007-8-2) [[''Debian Linux の OneCD(ライブDVD)化手順''>onecddebian]]のページを追加しました。
書き込み回数に制限のあるUSBメモリやCF等を使用してLinuxを運用する用途(USBブート,CFブート)にも使用できる手順です。
#br
本ページは通常のディストリビューションのUSBブートに関する情報を扱っています。OneCD LinuxのUSBブートに関しては、[[''ここ''>recv-dvd#usbboot]]にOneCD LinuxをUSBブートLinuxに改造するページへのポインタがあります。←(2008-1-9)''Fedora 8 Live CD''
----
#contents
* 各ディストリビューションのUSB接続ハードディスク(USBメモリ)への直接インストール・対応状況(USBブート対応状況) [#md5222e9]
&size(16){表に示すように、多くのLinuxディストリはWindowsと異なり、USB接続のハードディスクやUSBメモリに直接インストールすることが可能です。Linuxの世界では''USBブートは当たり前''です。};&size(12){それに対してWindowsが標準で(ブート革命などを使
#br
(2009-9-9現在)
(検証基準とした環境: i845GのPC)
|CENTER:ディストリ|CENTER:対応状況|CENTER:詳細|h
|CENTER:Fedora 7|CENTER:△|基準PCではインストーラがUSB接続ハードディスクを認識しなかった。手持ちのi855のPCではインストールでき、そのUSB接続ハードディスクを基準PCに接続すると正常にブートできた。Vine4.1とは異なり、基本的には対応しており、更新
|CENTER:Fedora 8|CENTER:○|特に問題なし。|
|CENTER:Fedora 9|CENTER:○|もうわざわざここに書く必要ないでしょう。|
|CENTER:RedHat EL 5(互換のCentOS 5等も含む)|CENTER:未検証|基本的にFC6のフィーチャーを継承しているので多分一応は対応しているでしょう。検証するとFedora7と同様の結果となるのでは?|
|CENTER:Debian 4(etch)|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 7.04ja|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 7.10ja|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 8.04ja|CENTER:○|もうわざわざここに書く必要ないでしょう。|
|CENTER:Vine 4.1|CENTER:×△|インストーラはUSB接続ハードディスクを認識し、インストールプロセスは一見正常におこなわれたように見えるが、実は未対応の部分があり、インストール後に再起動をおこなった際に正常にブートしない。&color(Red){(2008-1-4)Vine
|CENTER:Vine 4.2|CENTER:×△|惜しい! 開発者がUSBブートに対応しようとしたことはわかるが、まだ駄目。開発時のカーネルとリリース時のカーネルの構成が異なる為だろう。[[下記>#fix-vine]]の修正を加えるとブートできる。但し運用には[[下記>#ope-vine]]の
|CENTER:Vine 5.0|CENTER:○△|一応のUSBブート対応を果たした。が他ディストリと比べるとまだ何歩か遅れ気味。環境によってはVine 4.2以前と同様にイニシャルラムディスクの修正が必要となる場合がある。|
|CENTER:openSUSE 10.2|CENTER:○|特に問題なし。|
|CENTER:openSUSE 10.3|CENTER:○|特に問題なし。|
&size(18){Vineだけ置いてけぼりをくらっているという印象です。};
#br
※: 書き方でわかると思いますが念を押しておきます。Vine4.1の状況は環境の違いによって出現するバグといった類のものではなく、Vine4.1がCOLOR(RED):未対応COLOR(NORMAL):であることは明白です&color(Red){。(2008-1-4追記) Vine4.2もまだ対応途中の段階のよ
&aname(fix-vine);
* Vine Linux 4(4.2) をUSB接続のハードディスク(USBメモリ)にインストールした際に必要な修正作業(USBブートの為の追加修正作業) [#ce3ff83b]
上に記したようにインストール後に再起動してもそのままでは正常にブートしません。
COLOR(RED):インストーラに再起動を促された際にすぐには再起動せずに[Ctrl]+[Alt]+[F2]キーを押してコンソール画面に下り、以下に記すinitrdの修正作業をおこなってから再起動して下さい。
#br
COLOR(RED):また、私がVine4.2で試したところではgrub.confでrootデバイスをLABEL形式で指定していると、rootデバイスのマウントに失敗することがありました。ブートに失敗したときは、次の起動時のgrub画面でeditして、カーネル引数のrootデバイス指定をデバ
&aname(fixinitrd);
** initrdの修正(インストール時) [#l778e060]
*** initrdの解凍 [#nc34aa93]
修正が必要なinitrdを解凍します。
# cd /mnt/sysimage/boot
# mkdir work
# cd work
# gzip -dc ../initrd.img | cpio -idmv
*** カーネルモジュールのコピー [#c0adc7e7]
カーネルモジュールを上記work内のlibディレクトリにコピーします。
# cd /mnt/sysimage/boot/work
# find /mnt/sysimage/lib/modules -name uhci-hcd.ko -exec cp -p {} lib \;
# find /mnt/sysimage/lib/modules -name ohci-hcd.ko -exec cp -p {} lib \;
# find /mnt/sysimage/lib/modules -name ehci-hcd.ko -exec cp -p {} lib \;
*** initスクリプトの修正 [#e1ddc757]
&color(Red){&size(11){↑のカーネルモジュールのコピーを忘れないように};};
initrd内のinitスクリプトを修正します。
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
COLOR(RED):sleep 5という行ありますが、環境によってはもっと長くsleepする必要があります。私の環境の一つではsleep 9としました。他のディストリビューションでは必要な時間だけ待つコマンドが用意されていたりします。
用心深い人はsetquietをコメントアウトし、mountを実行する行の次の行にsleep 20を追加しておくといいでしょう。詳細が把握できますし、rootデバイスのマウントに失敗した場合でもsleep中に[Ctrl]+[Alt]+[Delete]を押せばハードディスクを傷めずに再起動でき
*** initrdの再圧縮 [#e131a5ce]
initrdを圧縮します。(以下、一例)
# cd /mnt/sysimage/boot/work
# find | cpio -c -o | gzip -9 > ../initrd.img
もしくは
# find | cpio -H newc -o | gzip -9 > ../initrd.img
COLOR(BLUE):(2007-7-30追加) ブートには(new)SVR4フォーマットのcpioアーカイブが必要です。manどおりであれば、-H newcオプションを使用しなければならないところですが、Fedora、Vineのcpioコマンドは-cオプションでSVR4フォーマットのファイルを生成しま
#br
#br
&color(Red){&size(18){上記作業内容を手打ちするのは大変ですよね。};};&color(Red){&size(18){以下の「fix-vine4-usbboot.sh」スクリプトを実行すれば一気に作業が終わります。};};
&color(Red){&size(18){で、どうやってインストール中の環境にこのスクリプトを持ってきましょうか?};};
#br
私はフロッピーディスクを使って持ってきてしまいました。ノートパソコンだとどうしましょうか?
ネットワーク経由だと多分多くのコマンド打ちが必要でしょう。
スクリプトを含ませたUSBメモリをインストール開始時から挿しこんでおけば自動で認識してくれるんじゃないでしょうか???・・・・
COLOR(BLUE):USB接続ハードディスクや内蔵ハードディスクのVineが読めるファイルシステム上にスクリプトを置いておいてもいいでしょう。←妥当な線
#br
COLOR(BLUE):でも実際のところ、他にLinux環境があるのなら、普通はそちらに当該のUSB接続ハードディスクを接続して作業するでしょう。(インストーラのコンソールも作業しにくいことはないですが...)
#br
ダウンロード &ref(fix-vine4-usbboot-oninstall.sh,nolink);
#!/bin/sh
MNTROOT=/mnt/sysimage
cd ${MNTROOT}/boot
mkdir work
cd work
gzip -dc ../initrd.img | cpio -idmv
find ${MNTROOT}/lib/modules -name uhci-hcd.ko -exec cp -p {} lib \;
find ${MNTROOT}/lib/modules -name ohci-hcd.ko -exec cp -p {} lib \;
find ${MNTROOT}/lib/modules -name ehci-hcd.ko -exec cp -p {} lib \;
patch -p0 <<EOT
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
EOT
chmod +x init
find | cpio -H newc -o | gzip -9 > ../initrd.img
COLOR(RED):initにsleep 5という行ありますが、環境によってはもっと長くsleepする必要があります。私の環境の一つではsleep 9としました。他のディストリビューションでは必要な時間だけ待つコマンドが用意されていたりします。
用心深い人はsetquietをコメントアウトし、mountを実行する行の次の行にsleep 20を追加しておくといいでしょう。詳細が把握できますし、rootデバイスのマウントに失敗した場合でもsleep中に[Ctrl]+[Alt]+[Delete]を押せばハードディスクを傷めずに再起動でき
* Vine Linux 4(4.2) を一旦内蔵ハードディスクに(普通に)インストールした後、USB接続のハードディスクやUSBメモリにLinux OSの環境を丸ごと移し変えてUSBブートさせる手順(USBブート化手順) [#cc46dbcb]
内蔵ハードディスクでブートした環境上での作業手順紹介です。
** 作業1.ルート以下全内容のコピー [#m67c24ad]
対象のディストリビューションの場合、普通、USB接続のハードディスクやUSBメモリを接続すると一般ユーザの権限で自動マウントされます。これをumountして、rootでmountし直してからコピーして下さい。
** 作業2.initrdの修正 [#q7acfbdf]
[[上記>#fixinitrd]]と実質的に全く同じ作業をおこないます。
違いは、1)[[上記手順>#fixinitrd]]で/mnt/sysimageとなっている個所を作業時のUSB接続ハードディスクやUSBメモリのマウントポイントに読み替えることと、2)カーネルが複数インストールされている可能性がある為に以下のような感じでカーネルの詳細バージ
&color(Red){※(2009-09-05追記)[[&color(Red){%%%このページ読者の方の情報%%%};>form]]によると、最新の2.6.16-76.51vl4のデフォルト状態ではinitrd.img内の/initにusb-storage.koに関する記述がないとのことで、usb-storage.koをロードする文も追加する必要
#br
カーネルモジュールを上記work内のlibディレクトリにコピーする例
# find /lib/modules/`uname -r` -name uhci-hcd.ko -exec cp -p {} lib \;
# find /lib/modules/`uname -r` -name ohci-hcd.ko -exec cp -p {} lib \;
# find /lib/modules/`uname -r` -name ehci-hcd.ko -exec cp -p {} lib \;
** 作業3.USB接続のハードディスクのパーティションにに内臓ディスクと同じラベルを付ける [#od6a4fe9]
COLOR(BLUE):作業4と作業5の内容によってはこの作業は必要ありません。
COLOR(RED):※デバイス名の代わりにラベルを用いることのメリット・デメリットをよく理解した上で作業を選択して下さい。
※以下はUSBブート時のrootデバイスを/dev/sda1と仮定しています。
例
# e2label /dev/sda1 / # ←デバイス、ラベル共実際の値に合わせる
** 作業4.fstabの修正 [#x8741be9]
※以下はUSBブート時のrootデバイスを/dev/sda1、swapデバイスを/dev/sda2と仮定しています。
また、フラッシュメモリ系のデバイスを想定してnoatimeを指定しています。
例
/dev/sda1 / ext3 noatime 1 1
/dev/sda2 swap swap defaults 0 0
もしくは&color(Blue){(作業3をおこなった場合に)};
LABEL=/ / ext3 noatime 1 1
/dev/sda2 swap swap defaults 0 0
** 作業5.grub.confの修正 [#u8ed0874]
COLOR(BLUE):作業3をおこなった場合にこの作業は必要ありません。
こんな感じに修正して下さい。rootディスクを指定しないのがミソです(つまりこのセクションは全3行です)。rootディスクを指定しないことによって様々なBIOS設定に対応できます。※rootディスクを絶対に指定してはいけないというわけではありません。
※以下はUSBブート時のrootデバイスを/dev/sda1と仮定しています。
title Vine Linux (Current kernel)
kernel /boot/vmlinuz ro root=/dev/sda1
initrd /boot/initrd.img
※Vine4.2で私が試したところでは、ある環境では、grub.conf内でrootデバイスをLABEL形式で指定すると、イニシャルラムディスク内でのマウントが失敗しました。その環境でもfstabでの指定はデバイス名、LABEL形式のどちらの指定でも大丈夫でした。
&aname(grub_install);
** 作業6.grubのインストール [#uad6bb87]
もしマルチブート環境を構築するなら、是非[[%%%このページ%%%>multipleboot]]に目を通してみて下さい。
----
|COLOR(BLUE):BGCOLOR(LightYellow):|c
|※他のOS上からgrubを再インストール(セットアップ)する場合は[[%%%&color(Blue){こんな感じの作業};%%%>grub2_and_grub1#grub1_rescue]]が必要になる場合があります。(どんな場合に必要なのかについての説明は長くなるので略します。)|
(2008-1-17ちょっとだけ更新)COLOR(BLUE):usbで接続されているデバイスへのgrubインストールは何か特別ではないかとの先入観を持たれている方が多いようです。でも実際には内蔵HDDに対してインストールする場合と何らと言っていいほど変わりません。usbデバイ
私の場合、こんな感じです。
自分の環境に適宜合わせて下さい。
※以下の(hd1,0)とは、作業をおこなったPCにとっての2番目のハードディスクの1番目のパーティションを意味します。リムーバルなUSBハードディスクもしくはUSBメモリが2番目のハードディスクとして認識されているということになります。
&aname(single-stage-type);
[[&size(17){''&color(Blue){1段階ブート};''};>multipleboot]]&size(17){''&color(Blue){の場合、};''};
# grub
GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p
(hd1,0)/boot/grub/stage2 /boot/grub/grub.conf"...
succeeded
Done.
grub>quit
※setup (hd1)は母艦PCにとっての2番目のハードディスクのMBRにgrubのstage1をインストールすることを意味します。作業時にUSBハードディスクもしくはUSBメモリが何番目のハードディスクと認識されていようとUSBブートに直接関係はありません。
&aname(dual-stages-type);
&color(Red){↓※以下の作業を始めておこなう方は、それまでに確実に[[&color(Red){%%%2段階ブート%%%};>multipleboot]]が何かを理解し、自分で[[&color(Red){%%%MBM%%%};>mbm]]等のMBR専用のブートローダをインストールする必要があることを理解してから作業
[[&size(17){''&color(Blue){2段階ブート};''};>multipleboot]]&size(17){''&color(Blue){の場合、};''};
2段階ブートの場合、たとえばこのように、
# grub
grub> root (hd1,0) ←rootで指定するのはmenu.lst(grub.conf),stage2等の場所
grub> setup (hd1,0) ←setupで指定するのはgrub(grubのstage1)のインストール先
setupで指定するデバイスをハードディスク(の先頭)ではなくパーティション(の先頭)とします。
上は母艦上の作業としてのサンプルですが、
普通にLinuxをブートし、そのOS上でブートの方式を1段階ブートから[[%%%2段階ブート%%%>multipleboot]]に変更する場合であれば、たとえば、
# grub
grub> root (hd0,0) ←rootで指定するのはmenu.lst(grub.conf),stage2等の場所
grub> setup (hd0,0) ←setupで指定するのはgrub(grubのstage1)のインストール先
こんな感じになります。もちろん詳細は適宜自身の環境に合わせて下さい。
マルチブート環境の場合、↑このように、[[grubをPBR(パーティションの先頭セクタ)にインストール(セットアップ)する>multipleboot]]ことを強く推奨します。
#br
(2008-12-3追記)参考としてgrub上でのパーティション表記の例を示しておきます。
特殊な設定をしていない限り、以下の表の対応が成立します。
|CENTER:一般的な表現|CENTER:grub上での表記|Linux上でのSATA接続の場合のデバイス名|h
|1番目のハードディスク※全体|CENTER:(hd0)|CENTER:/dev/sda|
|1番目のハードディスク※の第1パーティション|CENTER:(hd0,0)|CENTER:/dev/sda1|
|1番目のハードディスク※の第2パーティション|CENTER:(hd0,1)|CENTER:/dev/sda2|
|1番目のハードディスク※の第3パーティション|CENTER:(hd0,2)|CENTER:/dev/sda3|
|1番目のハードディスク※の第4パーティション|CENTER:(hd0,3)|CENTER:/dev/sda4|
|1番目のハードディスク※の第5パーティション|CENTER:(hd0,4)|CENTER:/dev/sda5|
|1番目のハードディスク※の第6パーティション|CENTER:(hd0,5)|CENTER:/dev/sda6|
|1番目のハードディスク※の第7パーティション|CENTER:(hd0,6)|CENTER:/dev/sda7|
|2番目のハードディスク※全体|CENTER:(hd1)|CENTER:/dev/sdb|
|2番目のハードディスク※の第1パーティション|CENTER:(hd1,0)|CENTER:/dev/sdb1|
|2番目のハードディスク※の第2パーティション|CENTER:(hd1,1)|CENTER:/dev/sdb2|
|2番目のハードディスク※の第3パーティション|CENTER:(hd1,2)|CENTER:/dev/sdb3|
|2番目のハードディスク※の第4パーティション|CENTER:(hd1,3)|CENTER:/dev/sdb4|
|2番目のハードディスク※の第5パーティション|CENTER:(hd1,4)|CENTER:/dev/sdb5|
※ハードディスクにはUSBメモリやUSB接続のSDカードやUSBアダプタを介したCF等も含みます。内蔵・外付けの区別はありません。
現在は各ハードディスクにパーティションを最高16個作成できます。ただしそのうち1個は拡張領域となるのでファイルシステムとして確保できる数は最大15となります。
&aname(ope-vine);
* Vine4(4.2)をUSBブートで運用する場合の注意点 [#dfd567b3]
Vine Linux 4はmkinitrdコマンドがUSBブートに完全に対応していない為、[[上記>#fixinitrd]]と同様の作業(※)をおこなってUSBブートが可能になっても、現状ではカーネルを更新する都度、[[上記>#fixinitrd]]と同様の作業(※)が必要です。(Vine Linux にFedoraの
#br
+apt等によってカーネルが更新された際には忘れずにinitrdの修正([[上記>#fixinitrd]]と同様の作業(※))をおこなうことを習慣づけておく
+mkinitrdをカスタマイズしてUSBブートに対応させた上でmkinitrdを更新対象から外しておく
+カーネルが更新された後に[[上記>#fixinitrd]]と同様の作業(※)をせずに再起動して、ブートが失敗したら、前のカーネルで起動して[[上記>#fixinitrd]]と同様の作業(※)をおこなう
等の方針で運用をおこなう必要があります。
#br
※: [[上記>#fixinitrd]]と同様とはいっても全く同じではありません。/bootのパスが異なりますし、インストール時とは異なり複数バージョンのカーネルモジュールがインストールされていることが殆どなのでカーネルモジュールのコピー元はカーネルバージョンま
&aname(fix-usbboot-onope);
ダウンロード &ref(fix-vine4-usbboot-onope.sh,nolink);
#!/bin/bash -ex
getdefaultversion()
{
default=$(grep -v "^ *#" </boot/grub/menu.lst|grep default)
eval $default
index=0
grep -v "^ *#" </boot/grub/menu.lst|egrep "^\s*kernel"|while read i
do
if [ $index -eq $default ]; then
kernelfile=$(echo $i| cut -d" " -f 2)
real=$(/bin/ls -l ${kernelfile})
echo ${real##*vmlinuz-}
break
fi
index=$(( index + 1))
done
}
ver=$(getdefaultversion)
[ ! -n "${ver}" ] && echo "error" && exit 1
rm -rf /boot/work
mkdir /boot/work
cd /boot/work
gzip -dc ../initrd.img | cpio -idmv
find /lib/modules/${ver} -name uhci-hcd.ko -exec cp -pi {} lib \;
find /lib/modules/${ver} -name ohci-hcd.ko -exec cp -pi {} lib \;
find /lib/modules/${ver} -name ehci-hcd.ko -exec cp -pi {} lib \;
patch -p0 -b <<EOT
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
EOT
find | cpio -H newc -o | gzip -9 > ../initrd.img
&aname(bootable-usbmem);
* ブート対応USBメモリについて [#tcbf1863]
|COLOR(BLUE):BGCOLOR(lightgoldenrodyellow):|c
|よく「ブート対応のUSBメモリってどれ?」と質問する人がいます。一般的な用語として「ブート対応USBメモリ」という言い方は確かに間違いではありません。しかし[[%%%ここ%%%>mbm#preface]]を読めば気づくと思いますが、技術的にはそんなものはありません。も
* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#o34e3690]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
#comment
#areaedit(end)
終了行:
(2010-01-11)かなり希なニーズしかないと思いますが、[[%%%掲示板%%%>board#b1a30ab5]]に、USBブートに対応していないPCでUSBハードディスク(USBメモリ)上に置いたカーネルをブートさせる手法を掲載しています。←iSCSIブートに対応していないPCでiSCSIストレ
----
TITLE: Linux各ディストリビューションのUSBブート・対応状況
RIGHT:初出 2006-12-5
RIGHT:最終更新 2009-9-9
LEFT:
マルチブートするなら[[2段階ブートに統一して、>multipleboot]][[MBM>mbm]]を使用しましょう。[[MBM>mbm]]は、WindowsがインストールするMicrosoft謹製のMBR用ブートローダやgrubのchainloader機能の上位互換となる高機能なブートローダです。[[このページ>
#br
CFブートがメインのページは[[''こっち''>cfide]]です。
#br
(2008-1-3) Linux各ディストリビューションで(USB接続DVDドライブなどを使わずに)[[%%%''インストーラをUSBメモリなどからUSBブートさせたり''%%%>singledriveinstall]]、内蔵ハードディスクからインストーラを起動する方法なら→ [[''Linuxを、インストーラ
(2007-8-18) USB接続ハードディスク(USBメモリ)への直接インストールに関する情報を追加しました。&size(10){(fc6のUSBブート化手順は削除しました。)};
#br
(2007-8-2) [[''Debian Linux の OneCD(ライブDVD)化手順''>onecddebian]]のページを追加しました。
書き込み回数に制限のあるUSBメモリやCF等を使用してLinuxを運用する用途(USBブート,CFブート)にも使用できる手順です。
#br
本ページは通常のディストリビューションのUSBブートに関する情報を扱っています。OneCD LinuxのUSBブートに関しては、[[''ここ''>recv-dvd#usbboot]]にOneCD LinuxをUSBブートLinuxに改造するページへのポインタがあります。←(2008-1-9)''Fedora 8 Live CD''
----
#contents
* 各ディストリビューションのUSB接続ハードディスク(USBメモリ)への直接インストール・対応状況(USBブート対応状況) [#md5222e9]
&size(16){表に示すように、多くのLinuxディストリはWindowsと異なり、USB接続のハードディスクやUSBメモリに直接インストールすることが可能です。Linuxの世界では''USBブートは当たり前''です。};&size(12){それに対してWindowsが標準で(ブート革命などを使
#br
(2009-9-9現在)
(検証基準とした環境: i845GのPC)
|CENTER:ディストリ|CENTER:対応状況|CENTER:詳細|h
|CENTER:Fedora 7|CENTER:△|基準PCではインストーラがUSB接続ハードディスクを認識しなかった。手持ちのi855のPCではインストールでき、そのUSB接続ハードディスクを基準PCに接続すると正常にブートできた。Vine4.1とは異なり、基本的には対応しており、更新
|CENTER:Fedora 8|CENTER:○|特に問題なし。|
|CENTER:Fedora 9|CENTER:○|もうわざわざここに書く必要ないでしょう。|
|CENTER:RedHat EL 5(互換のCentOS 5等も含む)|CENTER:未検証|基本的にFC6のフィーチャーを継承しているので多分一応は対応しているでしょう。検証するとFedora7と同様の結果となるのでは?|
|CENTER:Debian 4(etch)|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 7.04ja|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 7.10ja|CENTER:○|特に問題なし。|
|CENTER:Ubuntu 8.04ja|CENTER:○|もうわざわざここに書く必要ないでしょう。|
|CENTER:Vine 4.1|CENTER:×△|インストーラはUSB接続ハードディスクを認識し、インストールプロセスは一見正常におこなわれたように見えるが、実は未対応の部分があり、インストール後に再起動をおこなった際に正常にブートしない。&color(Red){(2008-1-4)Vine
|CENTER:Vine 4.2|CENTER:×△|惜しい! 開発者がUSBブートに対応しようとしたことはわかるが、まだ駄目。開発時のカーネルとリリース時のカーネルの構成が異なる為だろう。[[下記>#fix-vine]]の修正を加えるとブートできる。但し運用には[[下記>#ope-vine]]の
|CENTER:Vine 5.0|CENTER:○△|一応のUSBブート対応を果たした。が他ディストリと比べるとまだ何歩か遅れ気味。環境によってはVine 4.2以前と同様にイニシャルラムディスクの修正が必要となる場合がある。|
|CENTER:openSUSE 10.2|CENTER:○|特に問題なし。|
|CENTER:openSUSE 10.3|CENTER:○|特に問題なし。|
&size(18){Vineだけ置いてけぼりをくらっているという印象です。};
#br
※: 書き方でわかると思いますが念を押しておきます。Vine4.1の状況は環境の違いによって出現するバグといった類のものではなく、Vine4.1がCOLOR(RED):未対応COLOR(NORMAL):であることは明白です&color(Red){。(2008-1-4追記) Vine4.2もまだ対応途中の段階のよ
&aname(fix-vine);
* Vine Linux 4(4.2) をUSB接続のハードディスク(USBメモリ)にインストールした際に必要な修正作業(USBブートの為の追加修正作業) [#ce3ff83b]
上に記したようにインストール後に再起動してもそのままでは正常にブートしません。
COLOR(RED):インストーラに再起動を促された際にすぐには再起動せずに[Ctrl]+[Alt]+[F2]キーを押してコンソール画面に下り、以下に記すinitrdの修正作業をおこなってから再起動して下さい。
#br
COLOR(RED):また、私がVine4.2で試したところではgrub.confでrootデバイスをLABEL形式で指定していると、rootデバイスのマウントに失敗することがありました。ブートに失敗したときは、次の起動時のgrub画面でeditして、カーネル引数のrootデバイス指定をデバ
&aname(fixinitrd);
** initrdの修正(インストール時) [#l778e060]
*** initrdの解凍 [#nc34aa93]
修正が必要なinitrdを解凍します。
# cd /mnt/sysimage/boot
# mkdir work
# cd work
# gzip -dc ../initrd.img | cpio -idmv
*** カーネルモジュールのコピー [#c0adc7e7]
カーネルモジュールを上記work内のlibディレクトリにコピーします。
# cd /mnt/sysimage/boot/work
# find /mnt/sysimage/lib/modules -name uhci-hcd.ko -exec cp -p {} lib \;
# find /mnt/sysimage/lib/modules -name ohci-hcd.ko -exec cp -p {} lib \;
# find /mnt/sysimage/lib/modules -name ehci-hcd.ko -exec cp -p {} lib \;
*** initスクリプトの修正 [#e1ddc757]
&color(Red){&size(11){↑のカーネルモジュールのコピーを忘れないように};};
initrd内のinitスクリプトを修正します。
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
COLOR(RED):sleep 5という行ありますが、環境によってはもっと長くsleepする必要があります。私の環境の一つではsleep 9としました。他のディストリビューションでは必要な時間だけ待つコマンドが用意されていたりします。
用心深い人はsetquietをコメントアウトし、mountを実行する行の次の行にsleep 20を追加しておくといいでしょう。詳細が把握できますし、rootデバイスのマウントに失敗した場合でもsleep中に[Ctrl]+[Alt]+[Delete]を押せばハードディスクを傷めずに再起動でき
*** initrdの再圧縮 [#e131a5ce]
initrdを圧縮します。(以下、一例)
# cd /mnt/sysimage/boot/work
# find | cpio -c -o | gzip -9 > ../initrd.img
もしくは
# find | cpio -H newc -o | gzip -9 > ../initrd.img
COLOR(BLUE):(2007-7-30追加) ブートには(new)SVR4フォーマットのcpioアーカイブが必要です。manどおりであれば、-H newcオプションを使用しなければならないところですが、Fedora、Vineのcpioコマンドは-cオプションでSVR4フォーマットのファイルを生成しま
#br
#br
&color(Red){&size(18){上記作業内容を手打ちするのは大変ですよね。};};&color(Red){&size(18){以下の「fix-vine4-usbboot.sh」スクリプトを実行すれば一気に作業が終わります。};};
&color(Red){&size(18){で、どうやってインストール中の環境にこのスクリプトを持ってきましょうか?};};
#br
私はフロッピーディスクを使って持ってきてしまいました。ノートパソコンだとどうしましょうか?
ネットワーク経由だと多分多くのコマンド打ちが必要でしょう。
スクリプトを含ませたUSBメモリをインストール開始時から挿しこんでおけば自動で認識してくれるんじゃないでしょうか???・・・・
COLOR(BLUE):USB接続ハードディスクや内蔵ハードディスクのVineが読めるファイルシステム上にスクリプトを置いておいてもいいでしょう。←妥当な線
#br
COLOR(BLUE):でも実際のところ、他にLinux環境があるのなら、普通はそちらに当該のUSB接続ハードディスクを接続して作業するでしょう。(インストーラのコンソールも作業しにくいことはないですが...)
#br
ダウンロード &ref(fix-vine4-usbboot-oninstall.sh,nolink);
#!/bin/sh
MNTROOT=/mnt/sysimage
cd ${MNTROOT}/boot
mkdir work
cd work
gzip -dc ../initrd.img | cpio -idmv
find ${MNTROOT}/lib/modules -name uhci-hcd.ko -exec cp -p {} lib \;
find ${MNTROOT}/lib/modules -name ohci-hcd.ko -exec cp -p {} lib \;
find ${MNTROOT}/lib/modules -name ehci-hcd.ko -exec cp -p {} lib \;
patch -p0 <<EOT
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
EOT
chmod +x init
find | cpio -H newc -o | gzip -9 > ../initrd.img
COLOR(RED):initにsleep 5という行ありますが、環境によってはもっと長くsleepする必要があります。私の環境の一つではsleep 9としました。他のディストリビューションでは必要な時間だけ待つコマンドが用意されていたりします。
用心深い人はsetquietをコメントアウトし、mountを実行する行の次の行にsleep 20を追加しておくといいでしょう。詳細が把握できますし、rootデバイスのマウントに失敗した場合でもsleep中に[Ctrl]+[Alt]+[Delete]を押せばハードディスクを傷めずに再起動でき
* Vine Linux 4(4.2) を一旦内蔵ハードディスクに(普通に)インストールした後、USB接続のハードディスクやUSBメモリにLinux OSの環境を丸ごと移し変えてUSBブートさせる手順(USBブート化手順) [#cc46dbcb]
内蔵ハードディスクでブートした環境上での作業手順紹介です。
** 作業1.ルート以下全内容のコピー [#m67c24ad]
対象のディストリビューションの場合、普通、USB接続のハードディスクやUSBメモリを接続すると一般ユーザの権限で自動マウントされます。これをumountして、rootでmountし直してからコピーして下さい。
** 作業2.initrdの修正 [#q7acfbdf]
[[上記>#fixinitrd]]と実質的に全く同じ作業をおこないます。
違いは、1)[[上記手順>#fixinitrd]]で/mnt/sysimageとなっている個所を作業時のUSB接続ハードディスクやUSBメモリのマウントポイントに読み替えることと、2)カーネルが複数インストールされている可能性がある為に以下のような感じでカーネルの詳細バージ
&color(Red){※(2009-09-05追記)[[&color(Red){%%%このページ読者の方の情報%%%};>form]]によると、最新の2.6.16-76.51vl4のデフォルト状態ではinitrd.img内の/initにusb-storage.koに関する記述がないとのことで、usb-storage.koをロードする文も追加する必要
#br
カーネルモジュールを上記work内のlibディレクトリにコピーする例
# find /lib/modules/`uname -r` -name uhci-hcd.ko -exec cp -p {} lib \;
# find /lib/modules/`uname -r` -name ohci-hcd.ko -exec cp -p {} lib \;
# find /lib/modules/`uname -r` -name ehci-hcd.ko -exec cp -p {} lib \;
** 作業3.USB接続のハードディスクのパーティションにに内臓ディスクと同じラベルを付ける [#od6a4fe9]
COLOR(BLUE):作業4と作業5の内容によってはこの作業は必要ありません。
COLOR(RED):※デバイス名の代わりにラベルを用いることのメリット・デメリットをよく理解した上で作業を選択して下さい。
※以下はUSBブート時のrootデバイスを/dev/sda1と仮定しています。
例
# e2label /dev/sda1 / # ←デバイス、ラベル共実際の値に合わせる
** 作業4.fstabの修正 [#x8741be9]
※以下はUSBブート時のrootデバイスを/dev/sda1、swapデバイスを/dev/sda2と仮定しています。
また、フラッシュメモリ系のデバイスを想定してnoatimeを指定しています。
例
/dev/sda1 / ext3 noatime 1 1
/dev/sda2 swap swap defaults 0 0
もしくは&color(Blue){(作業3をおこなった場合に)};
LABEL=/ / ext3 noatime 1 1
/dev/sda2 swap swap defaults 0 0
** 作業5.grub.confの修正 [#u8ed0874]
COLOR(BLUE):作業3をおこなった場合にこの作業は必要ありません。
こんな感じに修正して下さい。rootディスクを指定しないのがミソです(つまりこのセクションは全3行です)。rootディスクを指定しないことによって様々なBIOS設定に対応できます。※rootディスクを絶対に指定してはいけないというわけではありません。
※以下はUSBブート時のrootデバイスを/dev/sda1と仮定しています。
title Vine Linux (Current kernel)
kernel /boot/vmlinuz ro root=/dev/sda1
initrd /boot/initrd.img
※Vine4.2で私が試したところでは、ある環境では、grub.conf内でrootデバイスをLABEL形式で指定すると、イニシャルラムディスク内でのマウントが失敗しました。その環境でもfstabでの指定はデバイス名、LABEL形式のどちらの指定でも大丈夫でした。
&aname(grub_install);
** 作業6.grubのインストール [#uad6bb87]
もしマルチブート環境を構築するなら、是非[[%%%このページ%%%>multipleboot]]に目を通してみて下さい。
----
|COLOR(BLUE):BGCOLOR(LightYellow):|c
|※他のOS上からgrubを再インストール(セットアップ)する場合は[[%%%&color(Blue){こんな感じの作業};%%%>grub2_and_grub1#grub1_rescue]]が必要になる場合があります。(どんな場合に必要なのかについての説明は長くなるので略します。)|
(2008-1-17ちょっとだけ更新)COLOR(BLUE):usbで接続されているデバイスへのgrubインストールは何か特別ではないかとの先入観を持たれている方が多いようです。でも実際には内蔵HDDに対してインストールする場合と何らと言っていいほど変わりません。usbデバイ
私の場合、こんな感じです。
自分の環境に適宜合わせて下さい。
※以下の(hd1,0)とは、作業をおこなったPCにとっての2番目のハードディスクの1番目のパーティションを意味します。リムーバルなUSBハードディスクもしくはUSBメモリが2番目のハードディスクとして認識されているということになります。
&aname(single-stage-type);
[[&size(17){''&color(Blue){1段階ブート};''};>multipleboot]]&size(17){''&color(Blue){の場合、};''};
# grub
GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p
(hd1,0)/boot/grub/stage2 /boot/grub/grub.conf"...
succeeded
Done.
grub>quit
※setup (hd1)は母艦PCにとっての2番目のハードディスクのMBRにgrubのstage1をインストールすることを意味します。作業時にUSBハードディスクもしくはUSBメモリが何番目のハードディスクと認識されていようとUSBブートに直接関係はありません。
&aname(dual-stages-type);
&color(Red){↓※以下の作業を始めておこなう方は、それまでに確実に[[&color(Red){%%%2段階ブート%%%};>multipleboot]]が何かを理解し、自分で[[&color(Red){%%%MBM%%%};>mbm]]等のMBR専用のブートローダをインストールする必要があることを理解してから作業
[[&size(17){''&color(Blue){2段階ブート};''};>multipleboot]]&size(17){''&color(Blue){の場合、};''};
2段階ブートの場合、たとえばこのように、
# grub
grub> root (hd1,0) ←rootで指定するのはmenu.lst(grub.conf),stage2等の場所
grub> setup (hd1,0) ←setupで指定するのはgrub(grubのstage1)のインストール先
setupで指定するデバイスをハードディスク(の先頭)ではなくパーティション(の先頭)とします。
上は母艦上の作業としてのサンプルですが、
普通にLinuxをブートし、そのOS上でブートの方式を1段階ブートから[[%%%2段階ブート%%%>multipleboot]]に変更する場合であれば、たとえば、
# grub
grub> root (hd0,0) ←rootで指定するのはmenu.lst(grub.conf),stage2等の場所
grub> setup (hd0,0) ←setupで指定するのはgrub(grubのstage1)のインストール先
こんな感じになります。もちろん詳細は適宜自身の環境に合わせて下さい。
マルチブート環境の場合、↑このように、[[grubをPBR(パーティションの先頭セクタ)にインストール(セットアップ)する>multipleboot]]ことを強く推奨します。
#br
(2008-12-3追記)参考としてgrub上でのパーティション表記の例を示しておきます。
特殊な設定をしていない限り、以下の表の対応が成立します。
|CENTER:一般的な表現|CENTER:grub上での表記|Linux上でのSATA接続の場合のデバイス名|h
|1番目のハードディスク※全体|CENTER:(hd0)|CENTER:/dev/sda|
|1番目のハードディスク※の第1パーティション|CENTER:(hd0,0)|CENTER:/dev/sda1|
|1番目のハードディスク※の第2パーティション|CENTER:(hd0,1)|CENTER:/dev/sda2|
|1番目のハードディスク※の第3パーティション|CENTER:(hd0,2)|CENTER:/dev/sda3|
|1番目のハードディスク※の第4パーティション|CENTER:(hd0,3)|CENTER:/dev/sda4|
|1番目のハードディスク※の第5パーティション|CENTER:(hd0,4)|CENTER:/dev/sda5|
|1番目のハードディスク※の第6パーティション|CENTER:(hd0,5)|CENTER:/dev/sda6|
|1番目のハードディスク※の第7パーティション|CENTER:(hd0,6)|CENTER:/dev/sda7|
|2番目のハードディスク※全体|CENTER:(hd1)|CENTER:/dev/sdb|
|2番目のハードディスク※の第1パーティション|CENTER:(hd1,0)|CENTER:/dev/sdb1|
|2番目のハードディスク※の第2パーティション|CENTER:(hd1,1)|CENTER:/dev/sdb2|
|2番目のハードディスク※の第3パーティション|CENTER:(hd1,2)|CENTER:/dev/sdb3|
|2番目のハードディスク※の第4パーティション|CENTER:(hd1,3)|CENTER:/dev/sdb4|
|2番目のハードディスク※の第5パーティション|CENTER:(hd1,4)|CENTER:/dev/sdb5|
※ハードディスクにはUSBメモリやUSB接続のSDカードやUSBアダプタを介したCF等も含みます。内蔵・外付けの区別はありません。
現在は各ハードディスクにパーティションを最高16個作成できます。ただしそのうち1個は拡張領域となるのでファイルシステムとして確保できる数は最大15となります。
&aname(ope-vine);
* Vine4(4.2)をUSBブートで運用する場合の注意点 [#dfd567b3]
Vine Linux 4はmkinitrdコマンドがUSBブートに完全に対応していない為、[[上記>#fixinitrd]]と同様の作業(※)をおこなってUSBブートが可能になっても、現状ではカーネルを更新する都度、[[上記>#fixinitrd]]と同様の作業(※)が必要です。(Vine Linux にFedoraの
#br
+apt等によってカーネルが更新された際には忘れずにinitrdの修正([[上記>#fixinitrd]]と同様の作業(※))をおこなうことを習慣づけておく
+mkinitrdをカスタマイズしてUSBブートに対応させた上でmkinitrdを更新対象から外しておく
+カーネルが更新された後に[[上記>#fixinitrd]]と同様の作業(※)をせずに再起動して、ブートが失敗したら、前のカーネルで起動して[[上記>#fixinitrd]]と同様の作業(※)をおこなう
等の方針で運用をおこなう必要があります。
#br
※: [[上記>#fixinitrd]]と同様とはいっても全く同じではありません。/bootのパスが異なりますし、インストール時とは異なり複数バージョンのカーネルモジュールがインストールされていることが殆どなのでカーネルモジュールのコピー元はカーネルバージョンま
&aname(fix-usbboot-onope);
ダウンロード &ref(fix-vine4-usbboot-onope.sh,nolink);
#!/bin/bash -ex
getdefaultversion()
{
default=$(grep -v "^ *#" </boot/grub/menu.lst|grep default)
eval $default
index=0
grep -v "^ *#" </boot/grub/menu.lst|egrep "^\s*kernel"|while read i
do
if [ $index -eq $default ]; then
kernelfile=$(echo $i| cut -d" " -f 2)
real=$(/bin/ls -l ${kernelfile})
echo ${real##*vmlinuz-}
break
fi
index=$(( index + 1))
done
}
ver=$(getdefaultversion)
[ ! -n "${ver}" ] && echo "error" && exit 1
rm -rf /boot/work
mkdir /boot/work
cd /boot/work
gzip -dc ../initrd.img | cpio -idmv
find /lib/modules/${ver} -name uhci-hcd.ko -exec cp -pi {} lib \;
find /lib/modules/${ver} -name ohci-hcd.ko -exec cp -pi {} lib \;
find /lib/modules/${ver} -name ehci-hcd.ko -exec cp -pi {} lib \;
patch -p0 -b <<EOT
--- init.orig 2008-01-03 22:20:36.000000000 +0900
+++ init 2008-01-03 23:10:56.000000000 +0900
@@ -5,6 +5,12 @@
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
+echo "Loading uhci-hcd.ko module"
+insmod /lib/uhci-hcd.ko
+echo "Loading ohci-hcd.ko module"
+insmod /lib/ohci-hcd.ko
+echo "Loading ehci-hcd.ko module"
+insmod /lib/ehci-hcd.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
EOT
find | cpio -H newc -o | gzip -9 > ../initrd.img
&aname(bootable-usbmem);
* ブート対応USBメモリについて [#tcbf1863]
|COLOR(BLUE):BGCOLOR(lightgoldenrodyellow):|c
|よく「ブート対応のUSBメモリってどれ?」と質問する人がいます。一般的な用語として「ブート対応USBメモリ」という言い方は確かに間違いではありません。しかし[[%%%ここ%%%>mbm#preface]]を読めば気づくと思いますが、技術的にはそんなものはありません。も
* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#o34e3690]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
#comment
#areaedit(end)
ページ名: