タグ付けされた質問 「initramfs」

「初期RAMファイルシステム」は、initrdの後継です。これは、カーネルに組み込まれ、ブートプロセスの早い段階で読み込まれるルートファイルシステムです。

3
initramfsプロンプトでブートを修正し、「マウント: '/ etc / fstab'を読み取れません:そのようなファイルまたはディレクトリがありません」および「initが見つかりません」を修正する方法
単一パーティション専用の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 …

3
initramfsは/ etc / fstabを使用しますか?
私の理解では、initramfsは「実際の」ルートファイルシステムをロードする役割を担っています。 ここで、そのルートを定義する場所が2つあります。まず、エントリをに入れ/etc/fstabます。次に、デバイスをカーネルブートコマンドに配置しますroot=/dev/sda1。 ルートファイルシステムがどこにあるかを決定するために、initramfsはどれを使用しますか?ルートカーネルパラメーターを使用する場合、なぜエントリがあり/etc/fstabますか?2番目のオプション(読み取り/etc/fstab)は、/etc/fstabファイルがinitramfsが最初にマウントしようとしている非常にルートデバイス上にあるため、まったく非論理的です。 非常に紛らわしいもの。
20 boot  fstab  initramfs 

1
switch_rootではなくいついつivot_rootを使用しますか?
nfsではなくcephを介してシステムをネットブートするために、Linuxの初期化プロセスをよりよく理解したいと思っています。 その過程で、ルートを切り替える2つの形式に遭遇しました。1つはswitch_rootと呼ばれ、もう1つはpivot_rootと呼ばれます。これらのスクリプトは、pxeブートプロセスを使用してtftpで取得したメモリ内ファイルシステム(initramfs)から実行されます。 どちらを使用するかはいつですか?ルートに配置されたいくつかの初期化スクリプトで両方が使用されているのを見ました。

4
initramfsからルートファイルシステムをマウントする
これは一般的なシナリオです。何らかの理由で、initramfs(重要な場合はOpenSUSE)がルートファイルシステムを見つけられなかったため、レスキューシェルにドロップされます。ただし、どのデバイスをマウントする必要があるかは完全にわかっています。私の質問: ルートファイルシステムをマウントし、ブートシーケンスを続行する正しい手順は何ですか? おそらくそれがレスキューコンソールの重要なポイントです。それでも、実際にこれを行う方法を文書化した人はいないようです。 明らかに、ルートファイルシステムをどこかにマウントできます。しかし、それをファイルシステムツリーのルートにするにはどうすればよいですか?そして、その後、通常のブートプロセスを続行しますか?(シェルを終了するだけでそれができると思いましたが、そうではありません。)続行する前にマウントするために必要なものは何ですか?

6
なぜinitramfsが必要なのですか?
ファイルシステムとして(initramfsではなく)jffsまたはsdを選択すると、カーネルサイズが非常に小さい(initramfs-3.4MBと比較して1.4 MB)ことがわかりました。initramfsがかなり大きなスペースを取ることを示しています。だから私はそれを完全に削除することができます、私は非常に小さなカーネルを持っているでしょう、それは私が欲しいものです。 だから私の頭に浮かぶ基本的な質問は:なぜinitramfsが必要なのか?Linuxカーネルは、初期ファイルシステムがなくても起動しないのですか? 私の最終アプリケーションは、計算とコミュニケーションのみを行います。したがって、ファイルシステムのないOSは理にかなっています-少なくとも私のアプリケーションにとっては。

1
debianのmkinitcpio.confと同等のものは何ですか?
構築に使用したフックinitrd.imgが私のdebianで正しいことを確認したいの/etc/mkinitcpio.confですが、Archlinuxのようなファイルを見つけることができません。debianでこのファイルに相当するものは何ですか?そのファイルを編集しましたか?
15 initramfs  initrd 

3
ブート時にカーネル全体がメモリにロードされていますか?
初期のRAMディスクの機能について説明しているこの人気のあるIBM文書(Webでかなり頻繁に参照されています)を読みます。 しかし、これがどのように機能するかを概念化する際に壁にぶつかりました。 ドキュメントでは、それは言います GRUBなどのブートローダーは、ロードされるカーネルを特定し、このカーネルイメージと関連するinitrdをメモリにコピーします 私はすでに混乱しています:カーネル全体をメモリにコピーしますか、それともその一部ですか?カーネル全体がメモリ内にある場合、なぜ初期RAMディスクが必要なのでしょうか? initrdの目的は、小さな汎用カーネルイメージを作成できるようにすることであり、カーネルイメージがロードされる前にinitrdが正しいモジュールをインストールすることだと思いました。しかし、カーネル全体がすでにメモリにある場合、なぜinitrdが必要なのでしょうか? それは私を混乱させる別のことももたらします-カーネルにロードされるモジュールはどこにありますか?すべてのカーネルモジュールはinitrd内に格納されていますか?

3
initramfsがルートファイルシステムを読み取り専用でマウントする理由
ルートファイルシステムがroinitramfs(およびinitrd)にマウントされている理由は何ですか。 たとえば、Gentoo initramfsガイドはルートファイルシステムをマウントします: mount -o ro /dev/sda1 /mnt/root 以下はなぜですか? mount -o rw /dev/sda1 /mnt/root おそらく良い理由がある(そしてそれはおそらくを含むswitchroot)ことがわかりますが、どこにも文書化されていないようです。

3
initramfsにcpioを使用する理由
Gentoo wikiに従って、自分のinitramfsを作成しています。おなじみのtarandの代わりにgzip、このページはcpioand を使用するように指示していますgzip。ウィキペディアはcpio、2.6カーネルのinitramfsで使用されていると述べていますが、その理由は説明していません。 これは単なる慣習cpioですか、それともinitramfsに適していますか?私はまだ使用できますtarとgzip?

2
組み込みと外部のinitramfsを使用したinitの実行の違い?
私は、カーネル(v4.1-rc5)とbusybox(v1.23.2)が設定されたinitramfsのみで構成される最小限のLinuxシステムを構築しています。ほとんどの部分で問題なく動作しますが、組み込みのinitramfsを使用しているか、外部のinitramfsを使用しているかに関係なく、/ initでのコマンド実行の動作に違いがあります。 / initスクリプトは次のとおりです。 #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t sysfs none /sys mount -t proc none /proc echo "Welcome" while true do setsid cttyhack /bin/sh done 次に、カーネル.configのCONFIG_INITRAMFS_SOURCEオプションをinitramfsのすべてのフォルダーを含むディレクトリに設定するか、 find . | cpio -H newc -o | gzip > ../rootfs.cpio.gz それを構築します。 次に、CONFIG_INITRAMFS_SOURCEが設定されているかどうかに関係なく、カーネルをコンパイルすると、システムの2つのバリアントが作成されます。 initramfsが埋め込まれたbzImage bzImage + rootfs.cpio.gz(外部initramfs) …
10 linux  kernel  boot  initramfs 

1
Ubuntuカーネルに強制的にマウント/を失敗させ、initramfsレスキューシェルにドロップするにはどうすればよいですか?
私はinitramfsレスキュー環境をカスタマイズしようとしていますが、シングルユーザーモードではなく、カーネルがマウントに失敗してレスキューシェルにドロップするように強制したいと思います。/(initramfs) どうやってやるの? 注:initramfs-toolsカスタマイズ手順を実行する方法を知っていますが、結果を確認できる必要があります。

1
/etc/mdadm.confを使用せずに特定のRAIDアレイを組み立てる方法
mdadmとそのスキャン機能を使用して特定のRAIDアレイを組み立てることはできますが、構成ファイルは必要ありませんか? 背景: カスタムセットアップのinitramfsを使用してシステム(dm-cryptなど)をセットアップしています。すべてはinitスクリプト内で行われ、構成されています。それが、私がそれを保持したい方法です。つまり、追加の構成ファイルはありません。 私の目標: initスクリプト内で、コマンドラインのみを使用して特定のRAIDアレイを1つ組み立てたいと思います。アレイはUUIDで識別され、mdデバイス名が指定され、アレイメンバーをスキャンする必要があります(たとえば、接続されているUSBスティックまたは故障したデバイスが/ dev / sdX名を台無しにするため)。他のすべてのデバイスと潜在的なRAIDアレイは無視されます。これは、ブート時にその1つのアレイのみが対象となるためです(ルートファイルシステムを実行します)。 mdadmのmanページを徹底的に読み、いくつかのテストを実行した結果、次のことがわかりました。 mdadm --assemble --uuid <uuid> /dev/md0 これは機能しているようですが、これは正しい方法ですか? manページから: 正確に1つのデバイスがリストされているが、-scanが指定されていない場合、mdadmは--scanが指定されているかのように動作し、識別情報が構成ファイルから抽出されます。
9 raid  mdadm  initramfs 

7
Linuxカーネル4.9.0、Debian 9で休止状態の再開が失敗する
最近、カーネルを3.16.4(Debian jessie)から4.9.0(Debian Stretch)にアップグレードしました。「ハイバネート」(ディスクにサスペンド)するまで、すべてが順調でした。 LXDEでHibernateオプションを使用すると、休止状態のように見えます。ディスクのスピンドルがカチカチとデータを書き込んでいるのが聞こえます。しかし、休止状態から再開するときに問題が発生します。カーネルはスワップからイメージを正常に復元しますが、フリーズして再起動し、すべての作業が失われます。インターネットのどこにも答えが見つかりませんでした。人々は/etc/initramfs-tools/conf.d/resumeを設定しない、またはカーネルパラメータを設定していない、または/ etc / fstabに間違ったエントリがあることに関するいくつかの間違いを解決しています。これらは正しいです。/etc/initramfs-tools/conf.d/resume内のUUIDを修正し、fstabを修正し、再開カーネルパラメータを設定しない。 スワップパーティションを拡張パーティションの外のプライマリに移動しました。UUIDが保存され、新しいスワップに適用されました。 システムは「イメージの復元100%」に達し、次に「コンソールの一時停止」に達した後、すべての作業が失われた状態で電源がオフになり、通常どおりに起動します。 クリーンインストールを試みましたが、運がありませんでした。 i386(32ビットx86)でのみ発生し、amd64(64ビットx86)は影響を受けません。 ディスクパーティションテーブルのレイアウト: NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 HDD <ROOT-UUID> / └─sda2 swap HDD-SWAP <SW-UUID> [SWAP] sr0 アップグレード前は、sda2は論理的(内部拡張)でした。 Fstab: UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1 UUID=<SW-UUID> none swap sw 0 0 /etc/initramfs-tools/conf.d/resume RESUME=UUID=<SW-UUID> カーネルコマンドライン BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet …

3
GRUBはUbuntuおよびArch Linuxインストールのカーネル/ initramfsを混同します
私は、Ubuntu(現在16.04)とWindows 7をデュアルブートするマシンを使用していて、UbuntuのGRUBをブートローダーとして使用しています。 公式のインストール手順に従って、Arch Linuxを3番目のOSとして追加しました。Ubuntuで制御されているものを使用したかったため、ArchからGRUBをインストールしませんでした。指示にはmkinitcpio -p linux、おそらく説明したように実行したいくつかのブートファイルを生成するコマンドが含まれていました。 ここで、デフォルトのエントリを介してGRUBからUbuntuを起動しようとすると、次の不愉快なエラーが表示されます(画面の写真で申し訳ありません)。 の出力がuname -a示すように、これはArchカーネルを起動しようとしています/dev/sda6が、Ubuntuルートパーティションです。 UbuntuをロードできるようにするにAdvanced options for Ubuntuは、いずれかのUbuntu, with Linux 4.4.0-*エントリに移動して選択する必要がありますが、Archを正しくロードするエントリが見つかりませんでした。 sudo update-grubUbuntuから実行しても(「update-grub実行grub-mkconfig -o /boot/grub/grub.cfgしてgrub2構成ファイルを生成するためのスタブです。」)、何も変更されません。grub-customizerこれまでのところ、このツールを修正しても役に立たなかった。 このGRUBの混乱の原因は何ですか?各Linuxバージョンが正しいカーネルと正しいパーティションから起動するように修正するにはどうすればよいですか? Ubuntuの/ bootがマウントされた状態でArchを愚かにインストールしたようですが、おそらくそこにブートファイルが置かれています。 私は、Ubuntuのブートローダーを再びまっすぐにして、後でArchのクリーンインストールを行うために、Arch関連のすべてのものを消去することに問題はありません。 アップデート(Ask Ubuntuチャットでのサポートについて@terdonに感謝): こちらが私/boot/grub/grub.cfgです。 すべてのLinuxエントリは、Ubuntuのルートである/ dev / sda6パーティションをポイントしているようです。 $ grep ' linux /' /boot/grub/grub.cfg linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro linux …

2
埋め込まれたinitramfsを抽出する
1つのinitramfsが埋め込まれたカーネルがあります。抽出したいです。 私がするx86 boot sectorときに出力を得ましたfile bzImage このカーネルイメージ用のSystem.mapファイルがあります。 System.mapファイルを使用して、または使用せずに、このカーネルから組み込みinitramfsイメージを抽出する方法はありますか? システムマップファイルにある興味深い文字列は次のとおりです(役立つ場合に備えて)。 57312:c17fd8cc T __initramfs_start 57316:c19d7b90 T __initramfs_size

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