initramfsプロンプトでブートを修正し、「マウント: '/ etc / fstab'を読み取れません:そのようなファイルまたはディレクトリがありません」および「initが見つかりません」を修正する方法


25

単一パーティション専用のGPTパーティションディスク、ext4フォーマット、ブートローダーとしてextlinux(バージョン4.05)、rootfsとしてUbuntu Coreバージョン13.10 amd64、カーネルとしてUbuntu linux-image-3.11.0-18-genericを使用した新しいシステムのインストール、ブートローダ設定を生成するためのextlinux-update。

リブート後の結果(まだKVMベースの仮想マシン内)は、(initramfs)プロンプトとこれらのメッセージです。

mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

BusyBoxはv1.20.2です。

回帰:

  • ファイルシステムがチェックされました fsck.ext4

ルートの存在を確認する

(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory

ルートブート引数

(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic

ロードされたモジュールを確認する

(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000

/ bootフォルダーの内容

$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root  163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root    4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic

このシステムを予想されるデフォルトのbashプロンプトで起動させる方法は?


なぜ2つの初期化イメージですか?これを実際のディスクに置いて、起動してみてください。QemuとEFIには問題があります-たとえば、EFIブートファームウェアイメージを使用しない場合、あまり遠くまで行けません。
mikeserv 14年

そして、あなたが望むすべてはbashのプロンプトであれば、あなたは常にあなたのinitramfsにはbashを含めることができます...
mikeserv

実際、Ubuntuで大きなGPTパーティションを見て、それらが完全に空として登録されたことを思い出しました。再起動時にShiftを押してライブディスクのgrubの選択を取得した後、Efiオプションを選択できました。その後、ディスクがありました。
mikeserv 14年

回答:


11

root=/dev/sdaXオプションを設定して、カーネルブートパラメーターを変更します。sdaXあなた/またはrootパーティションになります。次回の起動時に、ファイルシステムinitramfsにアクセス/etc/fstabしてマウントしようとする前にパーティションをマウントしようとしていることがわかります。

詳細については、「initramfsは/ etc / fstabを使用していますか?」という質問を参照してください。


追加root=/dev/sdaX の状況を改善し、もはやありません(initramfs)が、bashその代わりプロンプトログインが。
プロバックアップ14年

1
手動でroot=/dev/sdaXカーネルブートに追加する以外に、提案されたものに更新/mnt/etc/default/extlinuxして変更EXTLINUX_ROOT=""し、再度EXTLINUX_ROOT="/dev/sdaX"実行する必要がありますextlinux-update
プロバックアップ14年

10

理解する必要initramfsがあるのは、それがファイルシステムであることです。カーネル2.6以降、基本的には、マシン上の唯一のカーネルによって課されたファイルシステム(おそらく VFSを除いて、ファイルシステムでもあります)です。あなたinitramfs imageはディスクイメージです。

initramfs imageあなたのルートディスクが見つかる前に必要とするのに十分重要であるとあなたのディストリビューションが決定したどんなファイルでもあなたの中にあります。通常、これはBusyboxと、ルートデバイスを見つけてマウントするために必要なカーネルモジュールです。これはあなたのために働いていません。

ここには本当のミステリーはありませんが、すべてが考慮されています。ターミナルプロンプトを回避する方法を見つけることができれば、ナビゲートできますが、initramfs.最初にそれを分かりやすくする必要があります。

何よりもまず、これがまさに/.LinuxルートタイプのことをやっているLinuxルートです。実際、それがカーネルとは別のファイルにある場合、実際にはすでに2番目のルートデバイスです。すべてのLinuxカーネルには、基本的に空の/すべてのカーネルが含まれており、initramfs.

何よりだことはinitramfsある本当のルート。Linuxカーネルは、実行init後にユーザー空間を初期化し、その後発生する可能性のある問題に対する責任をすべて放棄します。あなたは、initのようにそれに付随するシェルスクリプトを編集すると、そのアクションは、簡単なようであるべき制御を意味し、多くは、Busyboxのようです。

そして、init?ほとんど間違いなくこれが見つからないというエラーはinit、実際initにシェルスクリプトを介して実行するように指示された実際の名前のプログラムを指しているのです。

私にとって最も印象的なのは、カーネルの疑似ファイルシステムがdev sys procマウントされないことです。これは非常に厄介か非常に良い手がかりです。カーネル機能に疑問を抱かせるKVMについて言及していますが、その暗くてわだかまりのある道を進む前に、まず何か他のものを試すことができますか?

cd /root || mkdir /root

エラーメッセージが繰り返し表示されていることがわかります。

そのようなファイル、又はディレクトリはありません

それに失敗すると、initramfsイメージを再構築する必要があります。ライブディスクから起動して、ディストリビューションが提供するツールを実行してその目的を達成します。ああ、このライブディスクがEFIモードでロードされていることを確認してください。

だから、ここで唯一の本当に異常なことは initramfs - switchroot.

Linuxカーネルは、初期のユーザー空間とinitramfsルートディスクデバイスからの移動を処理するための非常に特別なsyscallを提供します。最初にルートディスクをマウントポイントにマウントしinitramfs、次にルートファイルシステムをピボットインすることで機能します。initramfs'sターゲットマウントポイントはroot、それがうめき続ける方法に基づいていると思います。そこにあることを確認してみませんか?

さらに調査するには、少しザラザラする必要があります。ブートローダーを調整してパスする...

init=/bin/sh

...カーネルパラメーターとして。


...ターゲットマウントポイントはルートです...そこにあることを確認してみませんか?これを検証する方法については、最も曖昧な考えを持っているわけではありません。
プロバックアップ14年

もう必要ありません。bashを取得しました。これは、initramfsを過ぎたことを意味します。しかし、あなたはまだkvmにいますか?
mikeserv 14年

はい、私はまだkvmにいます。
プロバックアップ14年

@ProBackupそこにたどり着いた場合、他の人に賞金を与える必要があります。ネバーマインド-youveはすでにそうしているようです。2つのinitイメージを指定する必要がある理由を知りたい-なぜinitrdとbootなのか?それは何ですか?またefibootmgr、仮想マシンでプロンプトが表示されたら、何ができるかを知りたいと思います。
mikeserv 14年

unix.stackexchange.com/questions/120999/…の理由について、新しいSEの質問を作成しました。注:このKVM(Parallels Desktop v8)にはBIOSブートメッセージのためにBIOS(UEFIではない)しかないと思います。
プロバックアップ14年

0

同じ問題がありました。アレックスが言ったことは正しい。最初にfstabを調整しましたが、それは役に立ちませんでした。だから、私は私のグラブをチェックしました。GRUBメニューにアクセスする可能性がある場合。

  • Linuxを選択します。起動したいものを選択してください。
  • 「e」を押して「boot_image」または「boot ... root」を探します。
  • ' uuid 'を確認してください。
  • 私の場合、それは間違っていました。「blkid」と入力してinitramfsで写真を作成し、Linuxがインストールされているパーティションのuuidを取得します。
  • blkidからgrub-> boot_imageへの正しいuuidを過ぎます。

これで私の問題は解決しました。再起動後、ディスクのチェックを開始するのに時間がかかりました。しかし、今では再び機能します。

私はあなたを助けることができると思います。

よろしく

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.