
Ubuntu日本語フォーラム

ログインしていません。
毎度お世話になってます。
device.mapに関して、HDD増設したりBiosのFirst boot Deviceを変えた場合、正しい書き方は、どうしたらよいでしょう?
HDD一台ならマザボのch2(ch1は空き)につなげても、そのディスクはsda、しかし空いてたch1に別のHDDをつなぎ二台になると、それがsdaになり元のHDDはsdbに変わります。
(hd0)と /dev/sda の違いが未だに分からないのです。
どちらかが、マザボとの関係で、もう片方はOS(Ubuntu)との関係を表す?それとも両方とも同じ?
どういう書き方が正解でしょうか?
https://forums.ubuntulinux.jp/viewtopic.php?pid=44729#p44729
で教えていただいたサイトが難しすぎてわからないので(><)
よろしくお願いします。
それに関連して(この質問↓は急ぎません)
device.mapてインストール時やupdate-grub(カーネルアップデートで自動的にされるもの含めて)の時以外はもしかして不要でしょうか?
少なくとも ubuntuに関しては、私がはじめてlinuxに触れた9.04ではすでにmenu.lstが uuid形式 で記載されてて試しにdevice.mapを空にして再起動したら普通に起動しました。
あと、device.mapなしでもパーティションエディターなどを起動するとHDDごとにsda 、sdb と表示されます。
device.mapは普段はどういう時に使われてるのでしょう?
オフライン
こんにちは。
Hideki999 による投稿:
毎度お世話になってます。
device.mapに関して、HDD増設したりBiosのFirst boot Deviceを変えた場合、正しい書き方は、どうしたらよいでしょう?
HDD一台ならマザボのch2(ch1は空き)につなげても、そのディスクはsda、しかし空いてたch1に別のHDDをつなぎ二台になると、それがsdaになり元のHDDはsdbに変わります。
(hd0)と /dev/sda の違いが未だに分からないのです。
どちらかが、マザボとの関係で、もう片方はOS(Ubuntu)との関係を表す?それとも両方とも同じ?
どういう書き方が正解でしょうか?
(hd0)の書式は、grubのためのものです。grubのマニュアルの、device syntaxに詳細が出ています。
http://www.gnu.org/software/grub/manual/html_node/Device-syntax.html#Device-syntax
※grub2はhd以外もいろいろと増えてます・・・
これは、grub内のbiosdisk担当(?)が処理していて、ドライブの番号(hd0の0)は、biosで認識されている番号にそのまま直結します。
ということは、biosの起動優先順序(IDEとSATAとSCSIとか)とか、コネクタの接続位置の影響を受ける・・・ということになります。
# hd0のhdの分部によって、担当が決まります。hdなら、biosdisk とか。番号の意味は、担当次第です。大抵は、物理的な接続位置の順になるかと思います。
hd0であれば、biosで認識されているHDD(FDではない。CDでもない?)のうち、BIOSが最初のドライブして扱うもの ということになります。
一方、/dev/sda というのは、ファイルシステム上の(おそらくは)デバイスファイルで、デバイスファイル名の決まりごとにしたがっているなら、scsi(系?)インターフェースを持つディスクデバイスとして扱われるもののなかの最初のもの・・・となります(usb-hddや、sataもこれになるんでしたっけ・・・?)
grubが動いている段階では、この名前がどう・・・というのは影響しないはずです。あくまでも、linuxのカーネルが起きて自身の起動が始まってから となります。
では、sd?の番号はどこから決まっているのかと言うと・・・・すいません。わかりません。基本的には、そのドライバが認識した順番で決まると思うのですが、どう決めていっているのかは判りません。順番そのものは、BIOSに依らずにアクセスすることになるので、ドライバ次第・・・・となると思います。
# 見つけたコントローラの順 とか、コントローラが管理する識別番号の順 とか、返事の早かった順 とか、ドライバを読み込んだ順(内情SATAとUSB-HDDのような場合) とか。USB同士だと、処理が早く進んだ順という可能性高そうな気がします。
また、device.mapなんですが、私もどう役立っているのかわかりません。マニュアルだと、IDE/SCSIの存在する環境で、起動優先順位を入れ替えたりしたときに、それを正しく認識させる為・・・と書いてあるっぽいんですが・・・起動中にLinuxのデバイスファイルが必要になることって無いんじゃぁ というところで止まっています。
優先順位がそのままで、物理的に順番の若い空いているコネクタにつなぐ・・・というのは、おそらくdevice.mapの範疇では無いという気がします(Linux上でも同じドライバで処理されてしまうため、BIOSでずれたのと同じだけずれてしまう。)あくまでも、異なるドライバで管理されているもの同士が、BIOS上でひっくり返る場合に有効なのかな と。
ひょっとして、起動時にgrubが使われる(動く)ときではなく、LinuxのOS内からコマンドとしてgrubを起動したときや、grubをinstall(setup)しようとしたとき、使われるんでしょうか・・・?
# 結局のところ、パーティションをUUIDで指定できる環境(デバイス)では、要らない・・・?
どちらが正しいのかは、どこに指定していて、それをどの分部が処理する必要があるのか によって変わるので、「適切なところに適切な方で」という、いまいちはっきりしない回答になるかと思います。
# 日-米で、日本語で読む人に郵便を出すには、封筒には英語で、内容は日本語で書くようなもんだと思っています。
オフライン
weykさん、毎度ありがとうございます。
膨大な資料から、そのページ見つけてくださりありがとうございます。
「BSD」などの単語を見てUNIXの影響を再度感じてました。
やはり、 そこでいう、(device[,part-num][,bsd-subpart-letter])の書式がハードウェア(bios)との関係で、
/dev/sda 式書式がOSとの関係つまりお言葉を借りますと「linuxのカーネルが起きて自身の起動が始まってから」のお話
との考えでほぼあってるのでしょうか?
まあ、二つの書式の意味が全く同じなら、7.04のころのマニュアル?に「USB-HDDにインストールした場合はsdaとsdbを入れ替える」との記述が、ありますので当たってるかもですね。
「ブート時の構成とブート始まってからの構成は違うよ」との意味かもしれませんね。
USB-HDDとsATAは私の環境では、全部sd○扱いです。
weyk による投稿:
# 結局のところ、パーティションをUUIDで指定できる環境(デバイス)では、要らない・・・?
少なくとも起動に関してはUUIDでエントリーが記載されてるOSはdevice.mapを空白にしても起動しました。
つまり、一度menu.lst(grub.cfg)にUUID形式で正しく登録されちゃえばbiosの優先順位関係ないかもです。
weyk による投稿:
大抵は、物理的な接続位置の順になるかと思います。
実は、ここが一番気になる部分でしてbiosでの設定(起動優先順位)で決まるのか接続端子で決まるのかが、、、
でも、大体今の私の認識でよさそうですね。少なくとも私の機械では。
weykさんともあろうお方でも曖昧な部分があるのですから「絶対」はないのかもですね。
(ここまで行くと開発者に聞かないとわからん問題?)
お忙しいところ、ありがとうございました。
オフライン
USB-HDDもどこの端子に繋げるかでbiosは区別してるようであり、grub2は問題ないかも知れませんが少なくともgrubでは
複数台のUSB-HDDがある環境で、update-grubをともなう自動アップデートが行われた時、インストール当初の接続台数と違うと、
それまで動いたUSB内のUbuntuが動かない、との事態もあると考えてます。
(そういう記述をどかかで見ましたし、、、)
ヒントお持ちの方、いらっしゃいましたらお願いします。
オフライン
weyk による投稿:
起動優先順位を入れ替えたりしたときに、それを正しく認識させる為.....
一つ例を上げるとWindowsが(hd0)でない場合バージョンやハード構成で起動しない現象が起きます。
その時は本体を開けてハードの接続を入れ替えるのではなくシステム上(grubコマンドでmap)で入れ替えます。
Hideki999さんも書かれているUSB-HDD等から起動したgrubは内蔵HDDを(hd1)と認識してしまうのでその時も必要になりますね。
その作業が必要なければdevice.mapは必要なさそうですが、まだまだgrubシェルは(hd*)の記述を必要としてますがUUIDのユニーク性と長さを考えると完全に(hd*)が排除される事は無さそうなのでmapも健在でしょう、、、
UUIDを使用するメリットはデバイスの接続先や接続順に左右されること無くそのデバイスを認識出来る事に有りますので起動時はデバイスファイル名を意識しなくても良いのでしょう。
オフライン
hir0さん、ありがとうございます。
hir0 による投稿:
一つ例を上げるとWindowsが(hd0)でない場合バージョンやハード構成で起動しない現象が起きます。
その時は本体を開けてハードの接続を入れ替えるのではなくシステム上(grubコマンドでmap)で入れ替えます。
Hideki999さんも書かれているUSB-HDD等から起動したgrubは内蔵HDDを(hd1)と認識してしまうのでその時も必要になりますね。
たしかに、backupの内蔵HDDをつなげてgrub再構築したらUbuntuは起動しましたが、(hd○)書式の他のOSエントリーは上手く作動しませんでした。
(他のOSはbackupなので起動する必要はないから困らないですが)
hir0 による投稿:
#4はチェーンロードと呼ばれる方法で回避できます。
たしかに、普段使わないUSB-HDD B (OSは入ってない)を、Ubuntuが入ってる内蔵HDDとUbuntuが入ってるUSB-HDD A の間に(biosの起動優先順位の話)入れても A のUbuntuは内蔵Ubuntuのgrubメニューから起動できました。
それが、内蔵のgrubにUSB-HDD上のUbuntuがUUIDで指定されてるからなのか、おっしゃるところの「チェーンロードと呼ばれる方法」によるものかはわからんのですが。
単なる興味ですが↓
この手の話題でよくでる「チェーンロード」ですが先輩達は、PCが最初のHDDにブートローダーがなきゃ次のHDDを読みにいく事をおっしゃってるのでしょうか?
それともgrub独自の機能なのでしょうか?
http://park15.wakwak.com/~unixlife/linux/boot-grub.html
より
「grubでLinux以外のOSを起動する場合は、chainloaderでほぼ起動できます。Linuxを複数インストールし、他のgrubやliloを呼び出したい場合もchainloaderで指定します。」
他のgrubやliloを呼び出したい場合はchainloader記述必要だが他のgrubを経由せず、直接内蔵のgrubからUSB-Ubuntuを起動するなら不要なんですよね?
http://www.page.sannet.ne.jp/hirata-naoto/grub.html
より
「GRUBではハードディスクドライブはhd0, hd1, hd2...の様に表します.SCSI とIDEの区別無く,BIOS から見た1台目のHDDがhd0,2台目のHDDがhd1になります.FDDも同様に1台目からfd0, fd1...になります.」
ここですが
「BIOS から見た1台目のHDD」はfirst boot deviceではなくマザボの接続コネクターで決まるのか、first boot deviceで決まるのか
それが、イマイチ確信が持てない部分ではあります。
試しにfirst boot deviceを入れ替えてインストールプログラムがどう認識するかテストしたら、どのケースも一番目のコネクターにつないだHDDを(hd,0)のsdaとみなしたのでコネクターで決まると予想はしてますが。
まあ、ある程度、場数踏んだので起動できない事態があっても対処できるかもしれません。
私の疑問と、一応、他の方も参考にされるので、、、、
緊急性は低いです。ので、皆さん、お時間の許す範囲でお相手下さいませ。
(皆さんに私の質問にあまり時間をかけさせるのも悪いので念のため)
オフライン