
Ubuntu日本語フォーラム

ログインしていません。
該当するトピックが見つけられませんでしたので新規投函させていただきます。
Let's note(CF-W8)にwindows xp(32bit)とubuntu複数(確か10.04とそれ以前のバージョンだったと記憶しています)をブートして使用していました。
パーティションの整理をしつつ、最新のubuntuをインストールしようと思い、下記の作業を行いました。
①以下のURLを参考にしながら、windowsがインストールされている領域を残して残りのパーティションを削除しました。
http://www.ubuntu-d.com/_uninstall/rebuild_bl_7.html
②事前に用意していたubuntu 16.04のisoファイル入りのDVDを起動し、インストールを開始。
※インストールせずに「インストールせずに試す」を行いましたが、問題なく起動できる事を確認後にインストール
※インストール中に「このコンピュータにインストールされたOSは見つかりませんでした」との表示がでたので「それ以外」を選択してインストール続行
※パーティション設定は以下の様にしました。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
~ /dev/sda
~ /dev/sda1 ntfs (windowsで使用している領域。約80GB)
~ /dev/sda3 ext4(新規設定。基本パーティション。マウントポイント"/"。約70GB)
~ /dev/sda5 swap(新規設定。理論パーティション。約4GB)
~
~ ブートローダをインストールするデバイス
~ /dev/sda
~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
③インストール完了後、grubの表示がされず直接ubuntuが表示されてしまいます。
④windowsのリカバリーディスクを起動し、システム回復オプションのコマンドプロンプトにおいて「bootrec /fixboot」 「bootrec /fixmbr」により復旧し、windowsのみ起動するようになります。
(MBRのOS選択画面も、grubも表示されず直接windowsが立ち上がる)
⑤ ②のパーティション設定やブートローダをインストールするデバイスを変更しながら①から繰り返しますが結果は同じです。
上記を解決し、OS選択画面から好みのOSを選択起動できるようにする方法をご存知の方がいらっしゃれば教えていただければ幸いです。
オフライン
私は CF-W4(RAM を 1GB に増設)の本体 HDD に windows XP, ubuntu 12.04, USB メモリーに 16.04 をインストールしていますが、特に何もしなくとも boot 時には grub menu が表示されて、この3つが選択できるようになっています。boot 時の振る舞いで W4 と W8 に差があるというのはちょっと考え難いです。外しているかもしれませんが
chibasser による投稿:
※インストール中に「このコンピュータにインストールされたOSは見つかりませんでした」との表示がでたので
この時点で既に XP が認識されていないように思います。以下の手順で os-prober を実行して結果を教えてください。
XP が立ち上がる状態(#1の④の状態)にします。
ubuntu のインストールメディアから立ち上げて「ubuntu を試す」を選択。
ctrl+alt+t で端末を開いて sudo os-prober を実行。
ご参考までに、私の CF-W4 (外付けUSBを外した状態)では
/dev/sda1:Microsoft Windows XP Professional:Windows:chain
/dev/sda3:Ubuntu 12.04.5 LTS (12.04):Ubuntu:linux
となります。
オフライン
taka.zoo.nさん対応頂きありがとうございます。
sudo os-proberの実行結果は以下です。
/dev/sda3:Ubuntu 16.04.1 LTS (16.04):Ubuntu:linux
おっしゃる通り、xpが認識されていません。
オフライン
なぜ os-prober が Windows を認識しないのかを突き止めるのが本筋だとは思いますが、linux の shell 手続きの知識が必要です。もし、chibasser さんが「ubuntu の boot sequence はよく知らないけど一般的な shell 手続きなら分かる」というのであれば、os-prober は shell 手続きなので(実際に判定を行っているのはやはり shell 手続きの /usr/lib/os-probes/mounted/20microsoft です)実行経過を追ってみることで原因を正しく突き止められると思います。ですが、これはどれくらい大変か予想がつきません。
他方、/dev/sda1 のwindows loader が正常と仮定するなら、下記の手順で grub menu から ubuntu と windows を選択して boot できるようになる見込みがあります。(原因が突き止められていないのに先に進むのですからあまり期待しないでください。)
1. ubuntu を install して boot して ubuntu にログインします。
2. 端末を開いて sudo blkid -p -s UUID /dev/sda1 を実行します。
/dev/sda1: UUID="1234567890ABCDEF"
のような結果が得られると思います。
3. 別の端末を開いて下記の内容のファイルを /etc/grub.d/31_windows として作成します。(root 権限が必要です。)但し、6行目の 1234567890ABCDEF は2で得られた UUID の値( " は付けない)で置き換えてください。uuid の書き換えは正確を期すためコピーアンドペーストを使うと良いと思います。
#!/bin/sh
cat <<"END_INPUT"
menuentry 'Microsoft Windows XP (on /dev/sda1)' {
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root 1234567890ABCDEF
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
set timeout_style=menu
END_INPUT
echo "Adding a custom windows boot entry on /dev/sda1" >&24. sudo chmod a+rx /etc/grub.d/31_windows
5. ls -l /etc/grub.d を実行して 31_windows のパーミッションが正しいか、余計なバックアップファイルができていないかを確認します。
6. sudo update-grub
7. システムをリブートします。
少なくとも grub menu は出てくるはずです。無論 XP が boot できるかは別問題で、やってみないとわかりませんが、結果を教えてください。
オフライン
taka.zoo.nさん
返答が遅くなり、大変申し訳ございません。
実は、頂いたアドバイス通りubuntuをインストールした所、今度はgrubやmbr画面が表示されず直接windowsが立ち上がる様になっております。
もう一度windowsからubuntuをインストールしたパーティションを削除し、ubuntuをインストールし直してみましたが、状態が改善されず滞っております。
オフライン
すいません、「CF-W8 は UEFI ではなく、BIOS を使用している」ということで間違いないでしょうか?(手元の CF-Y8 が BIOS なので W8 もそうだと思い込んでしまいましたが、まず最初に確認すべきでした。)
以下は、そうであると仮定した手順です。
install media から boot して ubuntu を #1 のように install(その際 boot loader は /dev/sda にインストール)し、rebootする(install media を取り外すよう指示が出るのでその時に取り外して何かキーを押す)と ubuntu が立ち上がりますか?
もし、ここで ubuntu が起動しなければ grub そのもののインストールができていません。(後の注記を参照ください。)
もし、ubuntu が立ち上がったらログインして
sudo fdisk -l /dev/sda
の結果を教えてください。さらに #3 の手順2から5を実行してください。手順5の結果を教えてください。
手順6に進む前に
cp /boot/grub/grub.cfg /tmp
を実行してください。手順6を実行した時に出てきたメッセージを教えてください。また、実行後に
diff /tmp/grub.cfg /boot/grub/grub.cfg
を実行して結果を教えてください。
ここで reboot すると grub menu が表示されずにいきなり windows が立ち上がってしまうと #4 を理解しましたがその理解で正しいですか?今回もそうなりますか?
SHIFT を押しながら reboot させても grub menu が表示されないでしょうか?(SHIFT は grub menu が出るか、windows が boot し始めるまで押し続けてください。)
注記:grub2 の MBR でのインストールは、例えば https://wiki.ubuntulinux.jp/UbuntuTips/ … brWithGrub に解説があります。
32bit 版の 16.04 には日本語 remix がありませんが www.ubuntu.com から download したものでも基本的には同じです。ただ「最初の起動画面」に行き着くには install media から boot している最中画面の下の方にキーボードと人型の絵が出ている時に ESC を押してください。言語選択メニューが現れるので日本語を選択した状態がその tips でいう「最初の起動画面」です。そこで F6 を押すと画面右下にメニューがでますので ESC を押してメニューを消してから←キーでカーソルを動かして boot コマンドを修正します。蛇足ながらその画面からインストールメディアの破損もチェックできます。
オフライン
taka.zoo.nさん
ubuntuが起動せずwindowsが直接起動する現象は、ubuntu再インストール時のブートローダーのインストール先を/dev/sda3(ubuntu用に新設した基本パーティション)としていた事が原因であった様で、/dev/sdaを指定すると以前と同様「grubが表示されずubuntuが起動する」に戻りました。
ubuntuのみが起動する場合は、shiftキーを押下しながらの起動でgrubは表示されているのですが、その中にwindowsが表示されていません。
>もし、ubuntu が立ち上がったらログインして
> sudo fdisk -l /dev/sda
>の結果を教えてください。
以下が実行結果です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe3aae3aa
デバイス 起動 Start 最後から セクタ Size Id タイプ
/dev/sda1 * 63 167782859 167782797 80G 7 HPFS/NTFS/exFAT
/dev/sda2 304769022 312580095 7811074 3.7G 5 拡張領域
/dev/sda3 167784448 304766975 136982528 65.3G 83 Linux
/dev/sda5 304769024 312580095 7811072 3.7G 82 Linux スワップ / Solaris
Partition table entries are not in disk order.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この後、手順2から7を実施しました。
しかし、下記の通り指示いただいておりましたが、うっかり下記を実施する前に"sudo updt-grub"を実行してしまいました。
申し訳ありません。
>手順6に進む前に
> cp /boot/grub/grub.cfg /tmp
>を実行してください。手順6を実行した時に出てきたメッセージを教えてください。また、実行後に
> diff /tmp/grub.cfg /boot/grub/grub.cfg
>を実行して結果を教えてください。
"sudo updt-grub"の結果は以下です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Linux イメージを見つけました: /boot/vmlinuz-4.4.0-31-generic
Found initrd image: /boot/initrd.img-4.4.0-31-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Adding a custom windows boot entry on /dev/sda1
完了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上記後、rebootしましたが、相変わらずgrubが表示されません。
さらにshiftキー押しっぱなしでbootしてもgrubが表示されなくなってしまいました。
なお、手順3にて作成した"31_windows"は-rwxrwxrwxとなっておりますが問題ありませんでしょうか。
状況が改善せず大変申し訳ありませんが、これまでと変わらずお力添え頂ければ幸いです。
オフライン
申し訳ありません。下記に回答していませんでした。
BIOSを使用しております。
taka.zoo.n による投稿:
すいません、「CF-W8 は UEFI ではなく、BIOS を使用している」ということで間違いないでしょうか?(手元の CF-Y8 が BIOS なので W8 もそうだと思い込んでしまいましたが、まず最初に確認すべきでした。)
以下は、そうであると仮定した手順です。
オフライン
調べてくださってありがとうございます。
まず、以下の手順で#7 の状態から(というより /dev/sda の grub の状態に関わらず)/dev/sda に install されている ubuntu を起動できることを確認させてください。
(一部#6 の注記と重複しています。また、#6 の注記のリンクも予め読まれることをお勧めします。)
A. 16.04 の install media を使って boot します。
B. 画面の下の方にキーボードと人型の絵が出たらそれが消える前に ESC を押してください
C. 言語選択メニューが現れるので矢印キーで日本語を選択して ENTER
D. 中央に「インストールせずにubuntuを試してみる/ubuntuをインストール/ディスクの破損をテストする/メモリーテスト/一番目のハードディスクから起動」と表示されいてる画面が現れると思います。F6 を押します。画面右下にメニューが現れるので ESC を押してメニューを消します。
E. ←キーを使ってカーソルを左に動かして boot=casper の部分を root=/dev/sda3 に書き換えてください。(インストール時のパーティション構成は #1 と同じと仮定しています。)
F. ENTER を押すと30〜40秒程(CF-W4 で3倍速DVD-RAMの場合の時間です) DVD をアクセスした後、ハードディスクから ubuntu を読み込み始めるはずです。
実際に ubuntu が立ち上がり、ログイン画面が表示されしたでしょうか?
もしうまくいったのならログインして、
sudo chmod a-x /etc/grub.d/31_windows
sudo grub-install /dev/sda
sudo update-grub
を実行してください。これで install 直後の状態に戻るはずです。reboot して
・何もしなければ ubuntu が立ち上がる。
・SHIFT キーを押しながら reboot すれば grub menu が出る。(が、windows はない)
となるはずですが、実際にそうなりますでしょうか?
あと
grep '^GRUB' /etc/default/grub
の結果を教えてください。
オフライン
taka.zoo.n による投稿:
調べてくださってありがとうございます。
まず、以下の手順で#7 の状態から(というより /dev/sda の grub の状態に関わらず)/dev/sda に install されている ubuntu を起動できることを確認させてください。
(一部#6 の注記と重複しています。また、#6 の注記のリンクも予め読まれることをお勧めします。)
A. 16.04 の install media を使って boot します。
B. 画面の下の方にキーボードと人型の絵が出たらそれが消える前に ESC を押してください
C. 言語選択メニューが現れるので矢印キーで日本語を選択して ENTER
D. 中央に「インストールせずにubuntuを試してみる/ubuntuをインストール/ディスクの破損をテストする/メモリーテスト/一番目のハードディスクから起動」と表示されいてる画面が現れると思います。F6 を押します。画面右下にメニューが現れるので ESC を押してメニューを消します。
E. ←キーを使ってカーソルを左に動かして boot=casper の部分を root=/dev/sda3 に書き換えてください。(インストール時のパーティション構成は #1 と同じと仮定しています。)
F. ENTER を押すと30〜40秒程(CF-W4 で3倍速DVD-RAMの場合の時間です) DVD をアクセスした後、ハードディスクから ubuntu を読み込み始めるはずです。
実際に ubuntu が立ち上がり、ログイン画面が表示されしたでしょうか?
もしうまくいったのならログインして、
sudo chmod a-x /etc/grub.d/31_windows
sudo grub-install /dev/sda
sudo update-grub
を実行してください。これで install 直後の状態に戻るはずです。reboot して
・何もしなければ ubuntu が立ち上がる。
・SHIFT キーを押しながら reboot すれば grub menu が出る。(が、windows はない)
となるはずですが、実際にそうなりますでしょうか?
上記の通りの状態です。
通常起動でubuntuはbootしますが、grubが表示されない。
shiftを押下しながらの起動でgrubは表示されるがwindowsが無い。
といった状況です。
taka.zoo.n による投稿:
あと
grep '^GRUB' /etc/default/grub
の結果を教えてください。
grepの結果は下記の通りでした。
ご確認いただければと思います。
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
オフライン
まず、#7 の update-grub で出ていた warning に対処します。(どのみちこれはやっておかねばなりません。)
cd /etc/default
sudo cp grub grub.bak
root 権限で grub というファイル中の GRUB_HIDDEN_TIMEOUT=0 という行の先頭に # を挿入してこの行をコメントにします。
sudo grub-mkconfig -o /tmp/grubconf.new を実行します。
#7 の update-grub で出ていた warning が無いこと、linux イメージと対応する initrd のメッセージが #7 と(バージョンを除いて)同じことを確認してください。
問題がなければ sudo update-grub を実行します。
SHIFT を押しながら reboot してメニューが出ること、linux が立ち上がることを確認してください。
(この時点ではまだ grub メニューに windows はありません。)
問題がなければ、ログインして
sudo chmod u=rwx,go=rx /etc/grub.d/31_windows
sudo grub-mkconfig -o /tmp/grubconf.new
を実行して
diff /boot/grub/grub.cfg /tmp/grubconf.new
の結果を教えてください。
現状、どうして #6 でメニューが出なかったのかは多分わかったと思うのですが、なぜ立ち上がったのが linux ではなく windows なのか考えあぐねています。
#4の訂正:手順3で「6行目」とあるのは誤りで、正しくは「7行目」でした。
オフライン
Windowsのブートローダーと、bootpartを組み合わせてはいかがでしょうか。
http://www37.tok2.com/home/nobusan/computer/multi_boot/bootpart.html
NTLDRからgrub2に処理を引き渡し、その後Linuxの起動へと至る多段状態になります。
grub2の挙動がどうであろうと、少ない作業で目的は達成可能と思います。
オフライン
taka.zoo.nさん
アドバイスを頂いてから時間が経ってしまい申し訳ありません。
taka.zoo.n による投稿:
問題がなければ、ログインして
sudo chmod u=rwx,go=rx /etc/grub.d/31_windows
sudo grub-mkconfig -o /tmp/grubconf.new
を実行して
diff /boot/grub/grub.cfg /tmp/grubconf.new
の結果を教えてください。
以下が結果です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
302a303,315
> ### BEGIN /etc/grub.d/31_windows ###
> menuentry 'Microsoft Windows XP (on /dev/sda1)' {
> insmod part_msdos
> insmod ntfs
> set root='hd0,msdos1'
> search --no-floppy --fs-uuid --set=root D0484CAA484C9160
> parttool ${root} hidden-
> drivemap -s (hd0) ${root}
> chainloader +1
> }
> set timeout_style=menu
> ### END /etc/grub.d/31_windows ###
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sudo grub-mkconfig -o /tmp/grubconf.newの結果も一応記載しておきます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generating grub configuration file ...
Linux イメージを見つけました: /boot/vmlinuz-4.4.0-47-generic
Found initrd image: /boot/initrd.img-4.4.0-47-generic
Linux イメージを見つけました: /boot/vmlinuz-4.4.0-31-generic
Found initrd image: /boot/initrd.img-4.4.0-31-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Adding a custom windows boot entry on /dev/sda1
完了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
オフライン
問題なさそうなので、
sudo update-grub
を実行して reboot してみてください。
grub menu が表示されましたでしょうか?
表示されなかった場合、SHIFT キーを押しての reboot でもでませんでしょうか?
もし、ubuntu が立ち上がらなくなってしまった場合は#9 の手順で grub を修復してください。
grub menu が表示された場合、windows のエントリーは作成されていますでしょうか?
そこから windows が boot できますか?
また(reboot して ubuntu を選択した場合)ubuntu は boot できますか?
オフライン
taka.zoo.nさん
grubメニューが表示され、windowsも表示されました。
また、grubメニューからwindows, ubuntu共にbootする事ができました!!
本当に助かりました。
ありがとうございます。
今後の為に、どういう手順で修復できたのか教えていただければ嬉しいです。
もし、説明が難しいのであれば遠慮いたします。
重ね重ね、本当にありがとうございました。
sun_air による投稿:
Windowsのブートローダーと、bootpartを組み合わせてはいかがでしょうか。
http://www37.tok2.com/home/nobusan/computer/multi_boot/bootpart.html
NTLDRからgrub2に処理を引き渡し、その後Linuxの起動へと至る多段状態になります。
grub2の挙動がどうであろうと、少ない作業で目的は達成可能と思います。
アドバイスいただきましたsun_airさんもありがとうございました。
頂いた情報は今後の参考にさせていただきます。
オフライン
えっと、まだ問題が完全に解決したと言える状態ではありません。(9割方は解決したと思います。)そのうち kernel update があるはずですが、その際、update-grub が自動で実行されます。このとき生成される /boot/grub/grub.cfg が今と同じように機能するかを確認する必要があると思います。(実行環境の差異がないとは言い切れないので。でもおそらく大丈夫です。)
仮に、将来 os-prober が update されて windows を正しく認識するようになった場合、grub メニューに windows のエントリーが2つ出てきますが、どちらを使っても windows を boot できるはずです。また、ubuntu には影響ありませんので放置しておいても構いませんが、気になるのでしたら 31_windows を chmod で実行不可にしてください。
# でも、そんな update は望み薄なような気がします。
>今後の為に、どういう手順で修復できたのか教えていただければ嬉しいです。
grub のカスタマイズ手順を系統的に理解するには私が知る限り grub のマニュアル(info grub で表示されますが、そもそも info の使い方を知らねばなりません。)を読むしかないようです。
今回の作業内容の意味ですが
/etc/defaults/grub の修正:ubuntu では少なくとも 12.04 以降、boot 時にメニューを出すかどうかは timeout_style という変数を使って制御されます。GRUB_HIDDEN_TIMEOUT はそれ以前に使われていた機能で互換性のため今でもエラーにはなりませんが、timeout_style との競合を避けるためこの指定をコメントにして無効にしました。
/etc/grub.d : update-grub は出力先を /boot/grub/grub.cfg にした grub-mkconfig です。grub-mkconfig では /etc/grub.d にある実行可能ファイルを順に実行します。実際には /etc/grub.d にある実行可能ファイルでも emacs のバックアップファイルなど実行されないファイルもありますが、すべてのエディターに対応できるはずもなく、/etc/grub.d には余計な実行ファイルは置かない方が良いようです。
31_windows: 実はあのファイルはos-prober が手元の CF-W4 では(機能の割に)あまりに遅いので作成したものです。windows があるパーティションは /dev/sda1 固定で uuid が変わるはずもないので windows を boot させるコマンドは grub-mkconfig を何度実行しても同じはずです。そこで os-prober を使って出来上がった /boot/grub/grub.cfg から windows を boot する部分を抜き出して(さらに不要な部分を省いて)、それを生成するようなシェル手続として作成したものです。これで windows が /dev/sda1 で uuid の値が正しい限り os-prober とは無関係に windows を boot するメニュー項目が作成されます。
なお、/etc/defauls/grub に GRUB_DISABLE_OS_PROBER=true という行を入れて grub-mkconfig すると 30_os-prober は何も出力せず、直ちに終了します。(os-prober も全く実行されません。)chibasser さんの場合(install された ubuntu 上では)os-prober は何も出力しないので disable してもしなくても結果は変わりません。disable すれば os-prober の実行時間がかからない分だけ update-grub が早く終了します。
オフライン
すいません、訂正です。
#16 で「/dev/sda1 の uuid が変わるはずもない」と書きましたが、sda1 の再フォーマットなどファイルシステムそのものに対する操作、windows 再インストールやアップグレードなどでは変わる可能性が有ります。 uuid が変わってしまった状態で windows を立ち上げようとすると「no such device: uuidの値」というエラーメッセージが出ます。(invalid uuid とは言ってくれません。)
このような場合、ubuntu を立ち上げて uuid を調べて 31_windows を書き換えて update-grub で grub.cfg を再構成する必要が有ります。
オフライン