[〜#〜] gpt [〜#〜]単一のパーティション専用のパーティション分割ディスクを使用して新しいシステムをインストールするext4フォーマット済みextlinux (バージョン4.05)ブートローダーとして、Ubuntu Coreバージョン13.10 AMD64をrootfsとして、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
$ 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プロンプトで起動する方法は?
root=/dev/sdaX
オプションを設定して、カーネルブートパラメーターを変更します。 sdaX
は/
またはroot
パーティションになります。次回の起動時に、initramfs
が/etc/fstab
にアクセスしてファイルシステムをマウントする前に、パーティションをマウントしようとしていることがわかります。
詳細については、質問「 initramfsは/ etc/fstabを使用していますか? 」を参照してください。
initramfs
について理解する必要があるのは、それがファイルシステムであることです。カーネル2.6以降、これは基本的に、マシン上で唯一のカーネルが課したファイルシステムです(VFSは残しますが、これは間違いなくファイルシステムでもあります)。あなたのinitramfs image
はディスクイメージです。
initramfs image
内には、ルートディスクが見つかる前に必要なディストリビューションであることが決定されたファイルがあります。通常は、Busyboxと、ルートデバイスを見つけてマウントするために必要なカーネルモジュールです。これはあなたのために働いていません。
ここには本当の謎はありません。ターミナルプロンプトの周りに方法が見つかれば、initramfs.
をナビゲートできますが、最初にそれをわかりやすく説明する必要があります。
何よりもまず、これはちょうど/.
ですLinuxのルートタイプのことをしているLinuxのルートです。実際、それがカーネルとは別のファイルにある場合、それは実際にはすでに2番目のルートデバイスです。すべてのLinuxカーネルには基本的に空/
がすべて含まれていますinitramfs.
を取り込む前に最初にマウントするものを所有します
さらに、initramfs
はrealルートです。これは、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
...カーネルパラメータとして。
私も同じ問題を抱えていました。アレックスの言ったことは正しい。最初にfstab
を調整しましたが、効果がありませんでした。そこで、GRUBを確認しました。 GRUBメニューにアクセスする可能性がある場合。
initramfs
」と入力してblkid
に画像を作成し、Linuxがインストールされているパーティションのuuidを取得します。それで問題は解決しました。再起動後、Linuxはディスクのチェックを開始するのにより長い時間を要しました。しかし、今は再び機能します。
お役に立てれば幸いです。
よろしく