
Ubuntu日本語フォーラム

ログインしていません。
doragon による投稿:
(3)最終的に内臓hddにGRUBをインストールして起動しようと考えていますが(失敗しても回復は可能なので)、その前に起動CDを作成し、usb3.0で立ち上げることができるか試してみることにしました。viewtopic=30442におけるkiyoshiさんの方法を試してみました。
これは以前のUbuntuの標準的なkernel loaderであったgrub(legacy)を使う方法では無いかと思います。現在はgrub2が標準になっていますので、そのままでは適用できないかと思います。
追加でハードウェアをつけずになんとかするとなると、
1. 内蔵HDDにシステムをインストールする
1-1. システムを内蔵HDDにインストールしてUSB-HDDはデータ置き場などに使う
1-2. システムの一部(最低でも/bootもしくは/bootを含む/は必要)を内蔵HDDにインストールし、USB-HDDにまたがってシステムをインストールする
2. システム用にUSB2.0ポートにHDDなどのデバイスを接続し、1-2と同様の構成とする。この場合ディスクアクセスが頻繁に発生するものはUSB3.0側に置くべきです。
3. 前述のWikiに沿って、内蔵HDDにカーネルなど最低限必要なものをおき、grub4dosなどを使ってブートする
などの手があるかと思います。
が、あまり凝った構成にすると、あとあとのメンテや運用が大変(普通にインストールして使うより必要になる知識が増えます)なので、1-1以外はお勧めは致しません。
オフライン
dragonさん による投稿:
最終的にusb3.0からカーネルを起動できるよう努力してみようと思います。
起動は、BIOS -> MBR -> bootloader -> kernel -> initrd -> Ubuntuのようになりますので、BIOSを自作すれば可能かもしれないが、現状ではUSB3.0拡張ボードの先に繋がったHDDからカーネルは起動できません。
解決策としてinitrdまでをCD、USBメモリ、内蔵HDDなどで処理すればUSB3.0拡張ボードの先に繋がったHDDからUbuntuが起動するかもしれない。
起動がうまくできるようであれば、#26の1-2の方法で/bootパーティションをMBRにgrubを仕込んだUSBメモリ上に確保すれば、内蔵HDDに変更を加える必要もなくカーネルのアップデート問題も関係なくなり、USBメモリを挿して起動すればUbuntu、USBメモリなしでWindowsが起動のような事も可能でしょう。
標準のinitrdでUSB3.0拡張ボードを認識するか試すのであれば、インストールに使用したLiveCDが使えますのでわざわざ起動CDを作る必要はありません。
LiveCDでUbuntuを起動してUSB3.0拡張ボードに繋がったHDDのUbuntuのルートファイルシステムがあるデバイス名を確認後LiveCDを再起動し、起動オプションのboot=casperをroot=/dev/sdb1(確認したデバイス名)に変更して起動すれば確認できるはずです。
参考:https://wiki.ubuntulinux.jp/UbuntuTips/ … ootOptions
オフライン
jackalopeさん貴重なアドバイスありがとうございます。早速LiveCDを使ってusb3.0-hddのシステムを起動できるか試してみました。結果は次の通りです。
/dev/hdc1 does not exit.のメッセージがでたので、(initramfs) ls /devで中身を調べると確かにhdc1のパーティションは見当たりません。再度LiveCDを起動して「場所」をチェックするとubuntuをインストールしたデバイスは存在しますが、「パーティションの編集」を実行するとall device searchingのメッセージ中にフリーズしてします。何度試しても同じです。たまたまパーティションを表示することもありますが不安定です。32ビットLiveCDでやってみると確実にパーティションは表示されます。上記のことを32ビット版で実行してみますと、今度は実行中の表示(・・・・・)が途中で止まりフリーズしてしまいます。hdc1に接続したように見えますが?。これは64ビット版の特性(バグ?)でしょうか。
この結果から何らかのデバイスを介してもusb3.0-hddのシステムは起動できないと言うことでしょうか。ということは、usb3.0-hddを生かすには、hmatsueさん提案(#26)の1-1の内蔵ハードデスクかusb2.0メモリーにubuntuをインストールし、usb3.0-hddはデータデスクとして利用するしかないと言うことですか。この場合usb3.0-hddをhome下のデータディレクトリーにマウントすることはできるのでしょうか。
私としては最低限usb3.0-hddをスワップ領域として利用したかったのですが、認識できなければ無理ですね。
オフライン
doragonさん による投稿:
この結果から何らかのデバイスを介してもusb3.0-hddのシステムは起動できないと言うことでしょうか。
標準のinitrdではデバイスを認識できないようなので拡張ボードを認識するinitrdを作れば起動できるかもしれません。
参考:[url]https://wiki.ubuntulinux.jp/UbuntuTips/UsbInstall/BootUbuntuInUsbWithBiosWithoutSupportForUsb/Mkinitramfs[/urll]
オフライン
jackalopeさんのアドバイスにしたがって、usbメモリーにubuntuをインストールし、usb3.0-hddのubuntuを起動することを試みました。以下のjackalopeさんの記事にしたがって、SDHC---->usb3.0-hddに読み替えて、やってみました。
https://forums.ubuntulinux.jp/viewtopic.php?pid=56668#p56668
問題は2つありました。
(1)usb3.0-hddを 接続前後におけるlsmodの結果はusb_storageの数が3から6に増えただけで新たなmoduleは見つかりません。/lib/modules/......../usb/以下も確認しています。とりあえず、/etc/initramfa-tools/modulesにusb_storageだけを追加。
(2)/etc/grub.d/40_custom編集のところで、set root=の内容を/boot/grub/grub.cfgで確認すると、(hd0,msdosx)や(hd1,msdosx)のようなものしかなく、usb3.0-hddに相当するデバイスが見つかりません。grubのコマンドラインでlsをやっても同じようなデバイスがでます。とりあえずfdisk -lの結果を参考に(hd3,0)をセット。
/etc/grub.d/40_customの内容は以下のとおりです(quietが間違っています)。
#!/bin/sh
exec tail -n +3 $0
memuentry "Ubuntu on USB3.0 card" {
insmod ext4
set root=(hd3, 0)
linux /boot/sdhc/vmlinuz
root=/dev/hde1 ro quit splash
initrd /boot/sdhc/initrd.gz
}
この内容でusb2.0メモリーから起動するとusb2.0単独のgrub選択画面に
Ubuntu, with Linux 2.6.35-25-generic (on /dev/sde1)のメニューが加わり、これを選択するとエラーメッセージが出てきて、続けますかのメッセージで[rerurn]すると選択画面に戻り最初のlinux選択画面を選ぶといくつかのエラーメッセージが出るものも、usb2.0メモリーのubuntuは起動します。この場合通常マウントされるHP pocket media device(usb論理デバイス)がマウントされなくなります。/etc/grub.d/40_customに書いた "Ubuntu on USB3.0 card"のメッセージは出てきません。
アドバイスをお願いします。
参考のためlsmodの内容を以下に示します。usb3.0拡張インターフェースのようなものがありますか。
Module Size Used by
parport_pc 30086 0
ppdev 6804 0
snd_hda_codec_nvhdmi 15451 4
nvidia 10221046 38
binfmt_misc 7984 1
snd_hda_codec_realtek 300173 1
snd_hda_intel 26115 2
snd_hda_codec 100919 3 snd_hda_codec_nvhdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 6660 1 snd_hda_codec
snd_pcm 89104 2 snd_hda_intel,snd_hda_codec
snd_seq_midi 5932 0
snd_rawmidi 22207 1 snd_seq_midi
snd_seq_midi_event 7291 1 snd_seq_midi
snd_seq 57512 2 snd_seq_midi,snd_seq_midi_event
snd_timer 23850 2 snd_pcm,snd_seq
snd_seq_device 6912 3 snd_seq_midi,snd_rawmidi,snd_seq
snd 64181 13 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
xhci_hcd 60528 0
psmouse 62080 0
soundcore 1240 1 snd
snd_page_alloc 8588 2 snd_hda_intel,snd_pcm
serio_raw 4910 0
lp 10201 0
parport 37032 3 parport_pc,ppdev,lp
usbhid 42030 0
hid 84710 1 usbhid
usb_storage 50372 2
r8169 42254 0
ahci 22210 0
libahci 26148 1 ahci
firewire_ohci 24839 0
mii 5261 1 r8169
firewire_core 54327 1 firewire_ohci
crc_itu_t 1739 1 firewire_core
オフライン
(1)の問題
拡張ボード用のカーネルモジュールを見つけない事には先に進めませんね。
USBメモリのUbuntuを起動して、sudo lshwで見つからないでしょうか?
参考:lshw結果抜粋 による投稿:
*-pci:0
description: PCI bridge
product: MCP55 PCI bridge
vendor: nVidia Corporation
physical id: 6
bus info: pci@0000:00:06.0
version: a2
width: 32 bits
clock: 66MHz
capabilities: pci ht subtractive_decode bus_master cap_list
resources: ioport:d000(size=4096)
*-multimedia
description: Multimedia audio controller
product: [SB Live! Value] EMU10k1X
vendor: Creative Labs
physical id: 9
bus info: pci@0000:01:09.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list
configuration: driver=EMU10K1X latency=64 maxlatency=20 mingnt=2
resources: irq:18 ioport:dc00(size=32)
(2)の問題
#27の書き込みを読むのとgrubはBIOSが認識したデバイスしかアクセスできないを考えていただければ疑問は解消するはず。
(1)の問題が解決すれば、grubメニューでUbuntu on USB3.0 cardを選択します。
(1)の問題が解決してもUbuntu, with Linux 2.6.35-25-generic (on /dev/sde1)からは起動できません。
オフライン
USB3.0のホストコントローラそのもの というと、「xhci_hcd 60528 0 」が該当すると思うのですが・・・そこからどうusb_storageまでつながるのかがわからないので、必要なモジュールが確定しにくいですね。
(ひょっとして、コントローラ(拡張ボードそのもの)を抜いた状態/指した状態で差分を見ないと、どれがUSB3.0拡張ボードのモジュールなのかわからない・・・?)
オフライン
ご指摘された事項はこれから確認しますが、気になっていたいた点がありますのでそれを書いておきます。
当初、usb3.0接続hddでubuntuをインストールしたのですが、削除してusb2.0でubuntuをインストールしした(現在の状態)。その後usb3.0にhddを接続して「Gparted」でファイルシステムにアクセスしようとするとパーティションをサーチ中にフリーズしてしまいます。ubuntuを再インストールしようとしてもインストーラーが起動中にフリーズしてしまします。どうもusb3.0-hddにアクセスできないようです(windowsでntfsで再フォーマットした後でも同様な現象が起こります)。そこでPCIコントローラーを外してドライバーを再インストールしようかと思っています。その時weykさんご指摘の実験ができるかもしれません。
windowsのデバイスマネージャーで見ると、PCIコントローラーは
NEC Electronics USB 3.0 Host Controller
NEC Electronics USB 3.0 Root Hub
と2つの装置が認識され、そしてhddは
USB大容量記憶装置デバイス(マッハUSB)
として認識されたいます。参考までに。
試行結果は次回に報告します。
オフライン
lshwの結果の内関係する部分を以下にコピーします。lsmodと同じ名前(configuration)はxhci_hcd とusb-storage(ただし_とーの違いがあります)。xhci_hcdを追加すればよいでしょうか。windows device managerにあるNEC Electronics USB 3.0 Root Hubに相当するものがみつからないのが気になりますが。
アドバイスをお願いします。
*-pci:2
description: PCI bridge
product: 5 Series/3400 Series Chipset PCI Express Root Port 2
vendor: Intel Corporation
physical id: 1c.1
bus info: pci@0000:00:1c.1
version: 06
width: 32 bits
clock: 33MHz
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
configuration: driver=pcieport
resources: irq:47 ioport:1000(size=4096) memory:fbe00000-fbefffff ioport:ca000000(size=2097152)
*-usb
description: USB Controller
product: uPD720200 USB 3.0 Host Controller
vendor: NEC Corporation
physical id: 0
bus info: pci@0000:03:00.0
version: 03
width: 64 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list
configuration: driver=xhci_hcd latency=0
resources: irq:17 memory:fbefe000-fbefffff
*-scsi:3
physical id: 5
bus info: usb@3:1
logical name: scsi9
capabilities: emulated scsi-host
configuration: driver=usb-storage
*-disk
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@9:0.0.0
logical name: /dev/sde
size: 931GiB (1TB)
capabilities: partitioned partitioned:dos
configuration: signature=000f213a
*-volume:0
description: EXT4 volume
vendor: Linux
physical id: 1
bus info: scsi@9:0.0.0,1
logical name: /dev/sde1
version: 1.0
serial: be23c3b1-2d3f-4ae7-b738-b3754188b84b
size: 250GiB
capacity: 250GiB
capabilities: primary bootable journaled extended_attributes large_files huge_files dir_nlink extents ext4 ext2 initialized
configuration: created=2011-02-05 20:59:18 filesystem=ext4 lastmountpoint=/media/be23c3b1-2d3f-4ae7-b738-b3754188b84b�|ˈ����W��� modified=2011-02-17 21:34:44 mounted=2011-02-17 21:30:04 state=clean
*-volume:1
description: Linux swap volume
physical id: 2
bus info: scsi@9:0.0.0,2
logical name: /dev/sde2
version: 1
serial: 3c199efd-c3bc-4d00-9b50-acf97bb95474
size: 10GiB
capacity: 10GiB
capabilities: primary nofs swap initialized
configuration: filesystem=swap pagesize=4096
*-volume:2
description: Windows NTFS volume
physical id: 3
bus info: scsi@9:0.0.0,3
logical name: /dev/sde3
version: 3.1
serial: 5c2e665a-80c4-4e68-ab70-adcfa00afae5
size: 671GiB
capacity: 671GiB
capabilities: primary ntfs initialized
configuration: clustersize=4096 created=2011-02-05 20:45:04 filesystem=ntfs state=clean
オフライン
xhci-hcdが必要なモジュールのようですのでこれをinitrdに組み込んでみましょう。
仮にこれで起動できるとしても40_customの内容が間違っていればUbuntuは起動しません。
#!/bin/sh
exec tail -n +3 $0
memuentry "Ubuntu on USB3.0 card" {
insmod ext4 <== ext4モジュールはないと思うのですが。。。
set root=(hd3, 0) <== 現行のgrubでは表記方法が変更になっているようです。
linux /boot/sdhc/vmlinuz
root=/dev/hde1 ro quit splash<== デバイスhde1で間違いないですか?
initrd /boot/sdhc/initrd.gz
}
オフライン
xhci_hcdを組み込んで実行してみましたが、grub menuにusb3.0 カードの表示が出ません。weykさんご指摘のように拡張カード取り外し前後の差分でもxhci_hcdとusb_storageのサイズが3・・・>5に変わるだけです。
以下に/boot/grub/grub.cfgの関係する部分をコピーしておきます。ご検討ください。他のOS部分のLinux 行rootはUUIDで表示されていますがこれは関係ないでしょうか。
/boot/grub/grub.cfg
menuentry "Ubuntu, with Linux 2.6.35-25-generic (on /dev/sde1)" {
insmod part_msdos
insmod ext2
set root='(hd3,msdos1)'
search --no-floppy --fs-uuid --set be23c3b1-2d3f-4ae7-b738-b3754188b84b
linux /boot/vmlinuz-2.6.35-25-generic root=UUID=be23c3b1-2d3f-4ae7-b738-b3754188b84b ro quiet splash
initrd /boot/initrd.img-2.6.35-25-generic
}
### BEGIN /etc/grub.d/40_custom ###
memuentry "Ubuntu on USB3.0 card" {
insmod ext2
set root='(hd3,msdos1)'
linux /boot/sdhc/vmlinuz root=/dev/hde1 ro quiet splash
initrd /boot/sdhc/initrd.gz
}
オフライン
ふと、「set root='(hd3,msdos1)'」となっていますが、ここで指定するのは、「grubから参照する際の情報」だった記憶があります。つまり、linux文を例に取ると、(hd3,msdos1)/boot/sdhc/vmlinuz のファイルを読みに行く と。なので、ここで指定するのは、USB-Memoryから起動した場合の、(おそらくはUSB-Memory自身のデバイスの)/boot/sdhc/が存在するパーティションになります。なお、同じlinux文の「root=/dev/hde1」の部分は、起動したUbuntuが参照する「/」となるパーティションになるので、grubから参照できる必要はありません(こちらは、USB3.0上のHDDのパーティションを指してください)。
※「root=/dev/hde1」の部分はUUIDでも大丈夫な気はしますね(これを解析するのはinitrd内のkernelという認識)。
なお、grubのメニューにて、"Ubuntu on USB3.0 card"が表示すらもされていない ということだとすると、もっと別の問題の可能性があります。エントリーの内容に間違いがあっても、表示はされる(が、選んで起動しようとするとエラー)という認識です。
オフライン
ごめん、#30の「/etc/grub.d/40_customに書いた "Ubuntu on USB3.0 card"のメッセージは出てきません。」は見落としていました。
grubのメニューに「Ubuntu on USB3.0 card」が表示されない原因は、/etc/grub.d/40_customの「memuentry "Ubuntu on USB3.0 card" {」行が間違っています。
くどいですが、/dev/hde1で間違いないですか?lshwの結果を見る限りsde1と思われるのですが。。。
それと、とりあえずはquietとsplashはないほうがよいです。
オフライン
すみません。ご指摘のように/dev/sde1が正しいです。修正の上起動しましたが、やはり "Ubuntu on USB3.0 card" 行が表示されません。
#33書いたように、usb-3.0-hddのubuntuはusb-2.0に接続した時インストールしたのもので、現在usb3.0に接続した状態でパーティションが切れません。これは問題ありませんか。
ところで、事情によりくホームタウンをしばらく離れるためためこのPCに触れることができません(note-PCで接続可)。従ってこのトピックは一時停止させていただきます。再度接続可能になったとき、再訴挑戦してみたいと思います。
jackalopeさん、hmatsueさん、weykさん、Crushさんいろいろありがとうございました。現時点ではうまくいきませんでしたが大変勉強になりました。
オフライン
grubのメニューに「Ubuntu on USB3.0 card」が表示されない原因は、/etc/grub.d/40_customの「memuentry "Ubuntu on USB3.0 card" {」行が間違っています。
の意味は、memuentryが間違っている。
^ <===mではなくnです。
現在usb3.0に接続した状態でパーティションが切れません。
これは気になる所ですが、grubのメニューうんぬんとは無関係です。
オフライン