
Ubuntu日本語フォーラム
ログインしていません。
こんにちは。自力で解決できなかったので質問させて頂きます。
私の環境です↓
Ubuntu【Ubuntu Desktop 18.04.2 LTS】
インストールに使ったPC【Windows10 home / CPU: i7 7700k / マザーボード: ASUS PRIME H270-PLUS】
サブPC【Windows1- home / CPU: Atom x5-Z8350 / マザーボード: 不明】
タイトルの通りなのですが、UbuntuをインストールしたUSBメモリがBIOSで認識されず、起動することができません。
ISOをUSBメモリに書き込み、そこから別のUSBメモリにインストールしています。
インストール後は一度は起動できるのですが、シャットダウンすると次からBIOSで認識されなくなってしまいます。
どちらのPCでも同じ症状です。
試したバージョンは【Ubuntu Desktop 18.04.2 LTS】と【Ubuntu Desktop 19.04】です。
他にLinuxMintやZorinOS等、Ubuntuから派生したOSも試しましたが、全て同じ症状になります(あまり詳しくなく、見当違いな事を言っていたらすみません)。
解決する方法がありましたらぜひご教示ください。
どうぞよろしくお願い致します。
オフライン
両PCとも起動順序がUSBドライブもしくはUSBメモリがトップになているかどうか確認されましたか。
オフライン
ubuntuをインストールしたUSBメモリはメインPCないしサブPCに固定(HDD相当)で運用ですか?リムーバブルで運用ですか?
それによって違いがでると思います。(grub2のインストール先など)
インストール中にリムーバブルかどうか聞かれたと思います。それはどうしましたか?
オフライン
ふと思いました
USB(インストールメディア)とUSB(インストールしたメモリ)の差し方でデバイス名が違っているのかも知れません
古い知識で今は違うかも知れませんが、USBは各ポートを物理的な順番に検索して接続処理をします。
そのためUSBを差す場所(応答速度?)でデバイス名が変わります。(たぶん)
そのため、USB(インストールメディア)とUSB(インストールしたメモリ)の両方を差した場合、デバイス名がそれぞれ
/dev/sdb1 USB(インストールメディア)
/dev/sdc1 USB(インストールしたメモリ)
となり、USB(インストールしたメモリ)だけを差した場合、デバイス名が
/dev/sdb1 USB(インストールしたメモリ)
となりシステムを見つけられずロードすることができないのかも知れません。ここで上げたデバイス名は1例です。
そこで両方のUSBを差した状態でUSB(インストールメディア)でubuntuを試すで起動し、GPartedと言うツールでデバイス名を見てください。
デバイス名の右から2番目のアルファベットがUSB(インストールしたメモリ)よりUSB(インストールメディア)の方が若く(aに近い)ないでしょうか?
このアルファベットが両方を差した場合とUSB(インストールしたメモリ)だけの場合で違うのかもしれないのです。
この場合はubuntuを試すで起動した状態でUSB(インストールしたメモリ)の/etc/fstabと言うファイルの中のデバイス名を、上で上げたデバイス名の場合、/dev/sdc1のところを/dev/sdb1に変えると良いと思います。/etc/fstabを間違えるとUSBを両方差してもUSB(インストールしたメモリ)でブートしなくなるので注意です。
上で書いたデバイス名は実際と違うかも知れないので、よく確認してください。
オフライン
早速のご返信ありがとうございます。
3988さん
インストールしたUSBメモリが認識されないため、そもそも起動順序の設定ができない状態です。
sanagoさん
リムーバブルで運用する予定です。
インストール中にリムーバブルにするかどうか聞かれていません...本来はそのような設定項目があるのでしょうか?
また、デバイス名がsdd1になっていたのでfstab内のデバイス名をsdc1に変更してみましたが、改善しません。(HDD(sdb)とSDD(sda)を搭載しているのでsdc1とするのが正しいのかと思いましたが、これであってますでしょうか...?)
fstabのデバイス名をsdc1に書き換えると、再起動する毎にsdc1だったりsdd1だったりと、毎回違う名前で認識される様になりました。
また、インストール用USBメモリがsde1として認識される様になりました。
fstab内の/はsdd1、/homeはsdd2となっていましたが、/bootはsda1になっていました。
これはこの状態で正しいのでしょうか?(不用意に触ってはいけないかと思い、ここは書き換えていません。)
また、リムーバブルにするかどうかを聞かれていないのが気になります...Ubuntu派生の他OSを試した際も、このような事は聞かれなかったと思います。
現状は以上の通りです。引き続きご教示頂けると幸いです。よろしくお願い致します。
オフライン
インストールしたUSBメモリが認識されない…と言うのが良く分かりません。インストール用USBメモリは認識されるのですよね?でなければインストールもできませんし。
インストール用USBメモリを差してからPCの電源を入れても認識しませんか?
fstab内の/bootはsda1になっていたと言うことが起動しない理由の一つかも知れません。この辺りは私は良く分かりません。
grub2が/sda1にインストールされていてUSB(インストールしたメモリ)を読みに行く(システムを起動する)ように記述されていないのかなと想像はできますが。
リムーバブルで運用でしたら尚更USB(インストールしたメモリ)から起動するようにBIOS設定をいじる必要があると思います。grub2もUSB(インストールしたメモリ)にインストールしていないとUSB(インストールしたメモリ)のubuntuが起動しないと思いますが、UEFIブートならあるいは行けるのかもしれませんが、この辺りも私は良く分かりません。
ブート問題を解決するツールにboot-repairと言うのがあります。英語で良ければiso版がありますし、Ubuntuからツールをインストールして動かすこともできます。ubuntuのインストールメディアから利用する場合、日本語はver.16.04でないと文字化けします。
ツールを起動できたなら推奨(recommend)設定を試して見てください。推奨でだめなら高度なオプションからgrubの位置タブの設定をいじって見てください。
ツールの詳細やインストール方法は検索すると色々でてきます。
オフライン
ご返信ありがとうございます。
そしてこちらからの連絡が遅くなり申し訳ありません。
結論から申しますと、インストールに使ったPC(以下メインPCとします)では正常に起動出来るようになりました。
経緯は以下の通りです。
------------------------------
boot-repairを使って調べてみたところ、sanagoさんの指摘された通り、本体SSDにgrub2がインストールされていました。
その為、USBメモリをUbuntuとして認識する事ができていなかったようです。
boot-repairを使ってgrub2のインストール先を変えようとしたところエラーが出て進まず、解決出来ませんでした。
色々と試した結果、grub2は必ずsdaにインストールされる事が分かりました。
そこでSSDとHDDを取り外し、USBメモリをsdaとして認識する状態にした後インストール作業を行うと、正しくsdaにgrub2をインストールする事ができました。
その後メインPCでは起動出来るようになったのですが、サブPCでは起動出来ませんでした。
------------------------------
「インストールしたUSBメモリが認識されない」というのは、BIOSにUSBメモリが表示されない?のです。
https://gyazo.com/705293a8f749d930b03e3ca461c88656
上のURLは、サブPCのBIOS画面を写したものです。
本来ならば「Boot Option #2 [Ubuntu]」のような選択肢があるはずなのですが、Windowsしか表示されていません。
また、下のURLはメインPCのUEFI画面です。
https://gyazo.com/358e583be10ee48849bab9052eea69ac
SanDisk(60144MB)がUbuntuです。
ただ、本来はこんな簡単な表示ではなく、「USB: Ubuntu」のような表示がされる筈です。
(うろ覚えですが、SSDにgrub2がインストールされていた時には「SATA6G_1: Ubuntu」と表示されていました)
ですので、実際にはgrub2のインストールは完全には成功していないのだと思います。
他のUSBメモリだとしっかり認識しますので、PCの故障ではないと思われます。
ここまでたくさん教えて頂いて本当に申し訳ないのですが、サブPCは諦めようかと思います。
サブPCでLinuxを使う必要があるのでまだ何も解決できていないのですが、実はここのフォーラムに投稿させて頂く1ヶ月ほど前からこの問題に取り組んでいまして、もうこの事に取り組む気力が尽きてしまいました。
Debian系以外のLinuxだとこの問題は発生しませんでしたので、どうしても解決できない場合はそちらに乗り換えようと思っています。
オフライン
長々と書いたのですが、もう見ておられないかもしれませんので、それは反応があってから投稿するか考えます(正直なところ「あまり載せたくはない」という自分もいたりして葛藤しています……)。
要点だけ書きますと、そのatom機はUEFI BIOSが32bit仕様になっている可能性が考えられます。
32bit UEFI環境下ですと、Ubuntuはそのままでは起動できませんので、32bit用のブートローダーをインストールする必要があります。
ちなみにですが、Ubuntuが固定ディスクとしてインストールされた場合(つまり「/boot/efi/EFI/ubuntu/」配下にローダーがインストールされた場合)は、UEFIのブートエントリーには「ubuntu」として登録されます。
リムーバブル仕様でインストールされた場合(つまり「/boot/efi/EFI/BOOT/」配下にローダーがインストールされた場合)はストレージのデバイス名で登場するはずです(うろ覚えですが、legacy BIOSモードでインストールした場合もデバイス名で表示されたような……)。
オフライン
すみません、ちょっと訂正です。
Templer による投稿:
リムーバブル仕様でインストールされた場合(つまり「/boot/efi/EFI/BOOT/」配下にローダーがインストールされた場合)はストレージのデバイス名で登場するはずです
「デバイス名」では誤解しかねないですかね。
わかりやすく表現するなら「ストレージ名」でしょうか。
オフライン
Templerさん、ご返信ありがとうございます。
なるほど、ブートローダーが32bitに対応していないのですね...
32bitのブートローダーの入れ方は、Qiita等に書かれているものをそのまま試せば大丈夫でしょうか?
(Ubuntuフォーラムでこのような事を聞くのはあまり宜しくないと思うのですが、LinuxMintの使用を検討しています。Mintでも同じ方法で32bitブートローダーをインストールできるのでしょうか?)
また、32bitブートローダーは64bitのUEFIと互換性はありますか?
互換性がなければ諦めて新しいノートPCを買おうと思います。
「あまり載せたくない」と仰る文章ですが、差し支えなければぜひ投稿してください。
できる限りLinuxについての知見を広めたいと思っております。
オフライン
Red_Yoshi_ による投稿:
32bitのブートローダーの入れ方は、Qiita等に書かれているものをそのまま試せば大丈夫でしょうか?
それらの記事がどのようなものか私にはわかりませんが、私が昨日書いたものを載せておきますのでそれらの記事の補填用としてみてください(修正途中のものしか残ってなくて、再修正したら少しは短くなったのですが、それでも……)
Red_Yoshi_ による投稿:
(Ubuntuフォーラムでこのような事を聞くのはあまり宜しくないと思うのですが、LinuxMintの使用を検討しています。Mintでも同じ方法で32bitブートローダーをインストールできるのでしょうか?)
ここには非公式派生ディストリビューションを扱う投稿欄も用意されていたりします。(トップページの下の方ですし、やはり目に入りにくいんでしょうか)
https://forums.ubuntulinux.jp/viewforum.php?id=24
私がLinux Mintを触ってみたのは何年も前なので(これからも触ることはないと思います)今はどうなのかわからないのですが、当時の「GRUBの設定や /etc/grub.d/ 配下のスクリプトが結構弄られているなあ」という記憶は残っています。大きな違いはないはずですが、Mintが独自にパッケージを構築している可能性もありますので、一度聞いてみたほうが良いかもしれません。
Red_Yoshi_ による投稿:
また、32bitブートローダーは64bitのUEFIと互換性はありますか?
互換性というのが「併存可能なのか?」という方向で解釈しても良いのであれば、はい、併存可能です。ブートローダーは32bit版と64bit版が別々ですし、GRUB用のブートメニュー(grub.cfg)も共用可能ですし。
ただ…、パッケージが排他なので更新情報に気を配る必要があったりと、どうやっても「構築したら後は何も気にしなくていい」というものにはならないはずなんです(それが載せたくなかった理由の一つです。もうひとつは、初心者の方がマルチブートをするのを推奨しない、手助けをしたくないという思いからだったりします。それと、これは今思い出したんですがboot-repairを使われたのですね。知識が古いんで今はどうなのかわかりませんが、そのツールは余計なことを勝手にやってくれたりしたので、boot-repairが絡んでしまった環境とは関わりたくないというのもあったりします)
オフライン
以下はリムーバブルメディアなUbuntuを構築する(32bit UEFIマシン混在も想定した)方法です。たぶん……
私にはUEFIが64bitなのか32bitなのかを確認する方法がわからないのですが、以下の手順で起動するようになるか試していくことは可能なのではないかと思っています。なお、以下はUEFIモードでのインストールを説明しています。また、32bit UEFI環境ではUbuntuのインストールメディアは起動しませんので、以降は64bit UEFI環境で行うものとします。
0. Ubuntuのインストールに関与しないディスクデバイスは無効化させておく
Red_Yoshi_さんの#4にもありますが、リムーバブルメディアにインストールする場合はインストールに関与しないディスクデバイス(つまり、インストールメディアとインストール先のメディア以外のストレージ)はBIOSで無効化させるか物理的に取り外してからインストール作業に入る必要があります。これはブートローダー/チェインローダーが別のディスクデバイスにインストールされてしまうのを阻止するためです。
(これを忘れると、EFIシステムパーティションを作って、/etc/fstabでマウントポイントを追加して…、と面倒な作業が増えてしまいます)
インストールが完了しましたらインストールしたUbuntuを起動し、次へ。
0.5. インストールしたUbuntuがブートメニューに現れない場合は…
インストールしたUbuntuがブートメニューになくて起動できない場合は、インストールメディアのGRUBを使って https://forums.ubuntulinux.jp/viewtopic.php?pid=100287#p100287 の「0. インストール済みのOSを起動する」の方法で起動させてください。
1. dfを実行して「/」と「/boot/efi」が同じディスクデバイスになっているか確認する
関与しないディスクデバイスを無効化させてインストールした場合は読み飛ばしても構わないのですが、念の為。
アプリケーションの「端末」を起動させて「 df 」を実行し、出力結果から「/」と「/boot/efi」のディスクデバイスが同じであることを確認します。下記例の場合はデバイスファイル名が「/dev/sda2」と「/dev/sda1」となっていて、どちらも「a(一番目に認識したディスクデバイス)」で揃っています。揃ってさえいれば良いので、そこは「b(次に認識したディスクデバイス)」でも「c(更に次に…)」でも問題はありません。
/dev/sda2 11801768 2022748 9159808 19% / /dev/sda1 523248 6416 516832 2% /boot/efi
2. EFIシステムパーティションに「/EFI/BOOT/BOOT*.EFI」が存在するか確認する
リムーバブルメディアのOSを別のPCでも起動できるようにするには、ブートローダーやチェインローダーがEFIシステムパーティション(上記の例でいうと「/boot/efi」となっている「/dev/sda1」)内に「/EFI/BOOT/BOOT*.EFI」としてインストールされている必要があります。下記コマンドでファイルが存在するか(新規ではなく既にファイルが存在していた場合は更新日時がUbuntuのインストール時以降になっているか)確認してください。
なお、64bit用は「BOOTX64.EFI」、32bit用は「BOOTIA32.EFI」となります。BOOTIA32.EFIは明示的にインストールしないと入りませんので、この時点では存在しないはずです。
sudo ls -l /boot/efi/EFI/BOOT
「BOOTX64.EFI」がなかった(あるいは更新日時が怪し過ぎる)場合は、下記コマンドを実行してください。メディアをリムーバブルとして使えるようにブートローダーをインストールします。
※ 他のPCが64bit UEFI機でない場合は実行しなくて良いです。ただし、上記0.5を行う必要があった場合は実行してください。
sudo grub-install --removable
完了しましたら、BOOTX64.EFIができているか確認してください。
※ 上記0.5を行う必要があった場合は、これで次回から起動させることができるようになるはずです。
※ 明示してインストールした「/boot/efi/EFI/BOOT/」配下のファイルはローダーのパッケージが更新されても更新されません。よって、Shim関連やGRUBパッケージの更新情報に気を配り適宜再実行する必要があります。セキュリティー情報はこちら。
参照: https://usn.ubuntu.com/
日本語: http://gihyo.jp/admin/clip/01/ubuntu-topics
起動させるPCのUEFIが64bitのみの場合はここで終了です(が、下記4.5もお読みください)。
これでも起動しない場合はUEFI BIOSの設定やバグ、あるいはatom機などは32bit仕様UEFIの可能性を疑ったほうが良いかと思います。
3. 32bit UEFIなマシンでも使う場合は32bit版GRUBをインストールする
UEFIが32bitだった場合はBOOTX64.EFIでは起動しませんので、32bit版GRUBをインストールする必要があります。下記コマンドでインストールします。
sudo apt install grub-efi-ia32
※ grub-efi-ia32パッケージとgrub-efi-amd64パッケージは排他なので、この時点で64bit版パッケージは削除されます。ですが、ローダーはそのまま残りますのでブートは可能です。削除された64bit版パッケージの再インストールは後ほど行います。
インストールしましたら、「 sudo ls -l /boot/efi/EFI/BOOT 」コマンドで「BOOTIA32.EFI」が追加されているか確認してください。
OSのインストール時にBOOTX64.EFIが作られていなかった環境では、おそらく同じようにBOOTIA32.EFIも作られないのではないかと思われます。
その場合は、下記コマンドでブートローダーをコピーしてください。
sudo cp /boot/efi/EFI/ubuntu/grubia32.efi /boot/efi/EFI/BOOT/BOOTIA32.EFI
きちんとコピーされているか確認するのをお忘れなく。
4. 削除された64bit版パッケージをインストールし直す
sudo apt install grub-efi-amd64 shim-signed
※ これはUEFIのブートメニューに登録されている「ubuntu」を32bit版から64bit版に振り向け直すためでもあります。
※ 64bit版パッケージを入れ直すと32bit版パッケージは削除されますが、ブートローダーはそのまま残ります。しかし、パッケージが削除されるということはブートローダーの更新が行われなくなるということでもありますので、GRUBパッケージの更新情報、特にセキュリティー情報は気にしなければなりません。
参照: https://usn.ubuntu.com/
日本語: http://gihyo.jp/admin/clip/01/ubuntu-topics
4.5. いや64bit版パッケージはどうするべき?
Ubuntuのインストール時にUEFIのブートメニューに「ubuntu」が追加された場合は、他のPC上でgrub-efi-amd64やshim-signedパッケージの更新をしてしまうと、そのPCのブートメニューに「ubuntu」が追加されてしまうと思われます。それを嫌う場合は再びgrub-efi-amd64パッケージとshim-signedパッケージを削除してしまうというのも手です。しかし、これだとローダーの更新も行われなくなりますので、やはりGRUBやShim関連パッケージの更新情報は気にする必要があります。
オフライン
すみません。本題とは関係のない部分ですが、また訂正です。
Templer による投稿:
また、32bit UEFI環境ではUbuntuのインストールメディアは起動しませんので、以降は64bit UEFI環境で行うものとします。
って、インストールメディアに限定する意味はないですね。デフォルトではリムーバブルメディアもダメなわけですから。というか、「起動しない」ではなく「認識しない」ですし……。
他にも、
Templer による投稿:
(これを忘れると、EFIシステムパーティションを作って、/etc/fstabでマウントポイントを追加して…、と面倒な作業が増えてしまいます)
マウントポイントを追加する必要はないですね。別のディスクデバイスなEFIシステムパーティションが既にマウント指定されてしまっているわけですから、「fstabに書かれてるUUID値を変更して」が正しいです。
オフライン
度々すみません。PCにもUbuntu(公式フレーバーも含む)がインストールされているケースのケアを忘れていました(かなり重要なのに……)。#12の「4.5. いや64bit版パッケージはどうするべき?」は以下のように修正します。
4.5. いや64bit版パッケージはどうするべき?
Ubuntuのインストール時にUEFIのブートメニューに「ubuntu」が追加された場合は、他のPC上でgrub-efi-amd64やshim-signedパッケージの更新をしてしまうと、同じようにそのPCのブートメニューに「ubuntu」が追加されてしまうと思われます。PCにUbuntu(公式フレーバーも含む)がインストールされている場合はもっとひどく、UEFIのブートメニューに登録されていた「ubuntu」がリムーバブルメディアのローダーに紐付けられてしまう可能性があり、もしそうなってしまうとPC側のUbuntuが起動しなくなってしまいます(※1)。それを嫌う場合は再びgrub-efi-amd64パッケージとshim-signedパッケージを削除してしまうのが良いでしょう。
sudo apt remove grub-efi-amd64 shim-signed
ですが、これですとローダーの更新も行われなくなりますので、やはりGRUBやShim関連パッケージの更新情報は気にする必要があります。
参照: https://usn.ubuntu.com/
日本語: http://gihyo.jp/admin/clip/01/ubuntu-topics
※1 既にPC側のUbuntuが起動できなくなっている場合は、リムーバブルメディアのGRUBメニューにPC側のUbuntuが登録されているならそこから、GRUBのメニューに登録されていない場合は「0.5. インストールしたUbuntuがブートメニューに現れない場合は…」の方法(リムーバブルメディアのGRUBからも行えます)でPC側のUbuntuを起動させて、GRUBのインストールを行ってください。
sudo grub-install
オフライン
何度も何度も申し訳ありません。
上記#14の
sudo apt remove grub-efi-amd64 shim-signed
なんですが、grub-pc(legacy BIOS用のGRUB)の指定を忘れていました。これも指定しておかないとgrub-pcがインストールされてしまいます(インストールされてもUEFIでのブートには影響しません)。
sudo apt remove grub-efi-amd64 shim-signed grub-pc
としてください。
(確認を怠っていたとは……。う〜ん、ボロボロ。マージしたい……)
オフライン
とても詳細なご返信ありがとうございます。
教えてくださった通りに試したところ、無事にサブPCでも起動することができました。
やはり、サブPCのUEFIが32bitだったようです。
ただ、ログイン画面から進めない状態になっており、悪戦苦闘しております。
この問題はここのスレッドと無関係なので、解決できなかったらまた新規スレッドで質問させて頂きます。
また、LinuxMintは、Ubuntuと同じ手順では32bitのブートローダーはインストールできませんでした。
これも解決できなかったらLinuxMintのフォーラムで質問しようと思います。
とりあえず課題は解決できたので、Linuxでいろいろ遊んでみようと思います。
この度は本当にありがとうございました。
オフライン
皆さん、おはようございます。
とても興味深いスレッドなので、思わず、(関係なくもないけど)書いてしまいました・・・お許しを。
かつて、私もUSBメモリに、Ubuntu Sutudio をインストールすることにハマり、販売までしていました。
尊敬する、リーナス・トーバルスさんの本 「それが僕には楽しかったから」 じゃないけど、わからないことだらけで、
ハプニングと失敗の連続でしたが、おもしろかったです。
win に、フリーで、hdclone.4.2.2.fe.en.exe というのがあって、もしも手に入ったら、win のソフトウエア的な時計を、
2010年くらいにずらしてやると、試用期間過ぎていても、まだタダで、USBメモリーのクローンを作るのに使えると思います。
Linux にも同じようなソフトがありますが、コマンドラインから実行なので、敷居が高いです。 ではでは。
オフライン