web-dev-qa-db-ja.com

/ cowの正規パスの取得に失敗しました

私はかなり長い間Ubuntu 12.10をインストールしようとしています。今、私は次のような状況にあります。

私は完全にUbuntu専用のPCと10GBのHDDを持っているので、Wubiとデュアルブートのオプションはありません。

DVDからインストールしようとしましたが、「Out of frequency」エラーでスタックしています。そのため、USBブートオプションに適応する必要がありました。しかし、私のPCはUSBで起動できないため、回避策は「Plop Boot Manager」です。だから私は次のようにインストール手順をやっています:

  1. plopがインストールされているCDドライブから開始します。
  2. plopオプションでUSBブートを選択します。
  3. 起動はUSBから始まります。
  4. モニターは最終的に「周波数不足」エラーを出します
  5. 押す Shift+Alt+F1 ターミナルを取得します。
  6. Sudo nano /etc/default/grubでGRUBを開きます。
  7. 必要な変更を行います。
  8. Sudo update-grub

ここで、次のようにエラーが発生しています:

/usr/sbin/grub-probe:error:failed to get canonical path of /cow.

私のシステムは

P4 3.06 GHz、1 GB RAM、OSなしの10 GB HDD、モニターCRT lg StudioWorks(7歳)。 Mobo Mercury P4 266a NDMx(865相当)。システム全体はXPで完全に動作状態にありますが、USBブート不可であり、他のすべてのデバイスは完全に動作しています。

次に何をすべきですか?

41
ulkaNCST

UbuntuライブCD(試用版14.04および16.04)から起動した後、grubパーティションに対してupdate-grub chroot'edを実行することでこの問題を回避することができました。 (以下の/dev/sda1を、grubをインストールしたパーティションに置き換えます。すべてのコマンドをルートとして実行します。)

mkdir /mnt/chrootdir
mount /dev/sda1 /mnt/chrootdir
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do
    mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir
done
chroot /mnt/chrootdir
update-grub2  # inside chroot
29
Nathan Kidd

起動するはずのドライブを見つける

mount

または

parted -l

または

fdisk /dev/sda

Pと入力してパーティションを一覧表示し、タイプ83を探します。

(Fedoraを使用している場合は、コマンド「vgs」および「lvs」を使用する必要があり、mdraidを使用している場合は、「cat/proc/mdstat」またはmdadm -A --scanまたはinsmod raid1またはinsmod raid5、次にmdadm -A --scan)、/ dev/sdaの代わりに/ dev/md0または/ dev/mapper/my-vgを使用します

それをマウントしてみてください

mkdir /mnt
mount /dev/sda1 /mnt
cd /mnt
ls -l

これはあなたのドライブですか?クール!

grub-install --recheck --root-directory=/mnt /dev/sda 

(または、ルートがマウントされている/ devドライブのいずれか)

grub-install --recheck --root-directory=/mnt /dev/sda --force

(パーティションが気に入らない場合は強制します。)

これでgrubが起動し、再起動してBIOSセットアップから適切な起動ドライブを選択した後、またはBIOSに応じてESCまたはF12を押すか、十分に速いかどうかによって、grubコマンドを使用して起動できます。 Grubプロンプト-タブ補完を使用して、(hd0,1)ではなく(hd1,3)または他の何かを見つけることができますが、grubがドライブを読み取れない場合、タブ補完が数秒間ハングすることがあることに注意してください。

insmod linux
ls
root=(hd0,1)
linux /boot/vmlinuz root=/dev/sda1
initrd /boot/initrd
boot

または、できればそのままのgrub.cfgファイルが残っていることを願っています...

grub-mkconfig -o /mnt/boot/grub/grub.cfg
9
Dagelf

上記のコードに基づいて修正されたソリューション

上記のソリューションは、ブートパーティションをファイルシステムの/(ルート)にマウントするため、問題なく完全に機能しません。もちろん、grubは/ bootが存在しないと文句を言います。これはその問題を修正します:

mkdir /mnt/chrootdir
mkdir /mnt/chrootdir/boot
mount /dev/sda1 /mnt/chrootdir/boot
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir ; done
chroot /mnt/chrootdir
update-grub2  # inside chroot

ご覧のように、改行も削除したので、誰でも簡単に実行できます。

別の(簡単な)ソリューション

うまく動作しない場合は、/ bootパーティションを/(ルート)パーティションにコピーしてください。そのためには、UbuntuライブブートDVDを使用してシステムを起動し、ターミナルを開きます。その中に入力:

Sudo su
fdisk -l

あなたが持っているパーティションを見つける。私の場合、sda1は約250MBの/ bootパーティションと約500GBのsda5です。以下のコマンドでこれらの値を使用します。

mkdir /mnt/boot/
mount /dev/sda1 /mnt/boot/

mkdir /mnt/root/
mount /dev/sda5 /mnt/root/

cp -R /mnt/boot/ /mnt/root/boot/

データパーティションにブート可能フラグを設定し、ブートパーティションから削除します。

fdisk /dev/sda
b -> 1 (unset the bootable flag for the first partition)
b -> 5 (set the bootable flag for the fifth partition)
w -> write changes to the MBR

これで、コンピューターはsda5内でブートファイルを探します。もう一度chrootを実行します。今回は、grubに必要な、Ubuntuライブディスクによって既に生成されているいくつかの必須フォルダーを使用します。

mkdir /mnt/chrootdir/
mkdir /mnt/chrootdir/dev/
mkdir /mnt/chrootdir/proc/
mkdir /mnt/chrootdir/sys/

mount /dev/sda5 /mnt/chrootdir/
mount --bind /dev/ /mnt/chrootdir/dev/
mount --bind /proc/ /mnt/chrootdir/proc/
mount --bind /sys/ /mnt/chrootdir/sys/

chroot /mnt/chrootdir/

grub-install /dev/sda

インストールが完了しました。エラーは報告されていません。

Grub.cnfファイルが生成されたというメッセージが表示されない場合は、更新コマンドも実行します。

update-grub2 /dev/sda

これで安全に再起動でき、よく知られているブートメニューが再び表示されるのを確認できます。

このソリューションは、物理サーバーから仮想マシンに移行した後、私にとって機能していた唯一のソリューションでした。誰かがこれが役に立つと思うことを願っています!

5
Tim B.

同じエラーが発生しました。唯一の問題は、/ cowがまだ/にマウントされていたことです。

少しSudo umount/cowがうまくいきました。

0
Simon Lejoly

私はそれが古い問題であることを知っていますが、今日は実際のバージョンのmint-linux(ubuntuベース)でも同じ問題を抱えていました。私は非常に簡単な解決策を見つけました! :-)最初のインストール中にインターネット接続を切断します。これにより、互換性のないgrub2の読み込みが停止します。インストールが完了したら、すべての更新を行います。

0
Chruegel