問題タブ [initrd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - initramfs、ルートファイルシステムのマウントになぜ必要なのですか?
OS で initramfs が必要な理由、このファイルがないとルート ファイルシステムをマウントできないのはなぜですか? ルート ファイルステムを直接マウントできないのに、仲介者 (intramfs) が必要なのはなぜですか? また、カーネル レベル (カーネル側) からファイル システムをマウントする方法は?
linux - Linux initrd イメージで、イーサネットが機能しない
私は、i.Mx6 クアッド コア プロセッサを使用する SABRE SD 開発ボードに取り組んでいます。このボードの initrd イメージを開発しました。カーネルが起動し、initrd イメージが正常にマウントされます。fec イーサネット ドライバーも適切にロードされます。
しかし、init プロセス中に、dhcp はイーサネット デバイスの IP を指定できません。
「dhcp」コマンドで strace ユーティリティを使用して分析すると、次のログが取得されました。ログの一部を以下に示します。
ただし、initrd イメージで使用されているのと同じ rootfs が SD カード ブートで使用されている場合、dhcp コマンドは失敗しません。
手がかりを教えてくれる人はいますか?
よろしく、
ヴィベク
linux - ARM Linux ブートに関する詳細
arm アーキテクチャでの Linux ブートの詳細を理解しようとしています。私はインターネットで多くの検索を行い、これまでのところいくつかの詳細を理解しましたが、記事を読むたびに他の多くの新しい用語がもたらされ、物事がより複雑になっていると感じています. Linux を実行しているボードが 2 つあります。olimex 9261 とビーグルボーン ブラックです。組み込みシステム、特にアームに関する私の専門知識はかなり優れていますが、Linux ではあまりプレイしませんでした (一部のユーザー空間プログラムとカーネルの char ドライバーを除く)。
ここに私の質問があります:
1 つのボードに次の uboot 出力があります (linux 2.6.30):
ボードには 64MB の RAM (0x20000000 にマッピング)、512MB の nand フラッシュ (これまでマッピングが見つかりませんでした)、および 2MB のデータ フラッシュ (0xc0000000 にマッピング) があります。
ここで理解できないこと:
- bootargs に mem=64 があるのはなぜですか? これは ATAG または DTB として与えられるべきではありませんか?
- コントロールをカーネルに渡すときに、引数としてコンソールが渡されるのはなぜですか? tty を使用するカーネルは、uboot によって既に構成されていますか?
- initrd と rootfs。これはまだ私にははっきりしていません。initrd は、カーネルにブロック デバイスとして、または uboot がアドレスの詳細をカーネルに渡さなければならない別のイメージとして含めることができることを知っています (本当ですか?)。initrd が含まれていないカーネルと、この jffs2 のような別のファイル システムを使用して、カーネルが残りのドライバーを実行することはできますか? 実際、起動時にカーネルが使用するファイル システムの詳細を完全に理解することはできません。私が持っているこのセットアップには、uImage、bootstrap、env.bin、および jffs2 ファイル システムの 4 つのファイルがあります。したがって、initrd はありません。これはどのように機能していますか?また、上記の bootargs で指定されたファイル システムをルート化するプロセスはどのようになっていますか? 私の理解では、カーネルは最初に jffs2 ファイル システムにアクセスし、次に /dev/mtdblock1 にあるイメージを取得してマウントする必要があります。私の理解が間違っているのかもしれません。実際、カーネルとファイル システムの間のこの相互作用は、私が理解していないようです。上記の bootcmd では、カーネルが nand から sdram にコピーされ、bootm がそれにジャンプします。しかし、カーネルは起動時にどのように jffs を見つけるのでしょうか? ブート中に次の出力行が表示されます: VFS: Mounted root (jffs2 filesystem) on device 31:1.
ボードのユーザーガイドで、私はこれを見つけました:
警告: AT91SAM9261 チップ エラッタにより、NAND フラッシュからの起動はサポートされていません。
...
512MB NAND フラッシュ (Linux ではシリコン ドライブと見なされます)。
- カーネルをコンパイルした後、System.map にすべてのシンボルが含まれていないことがわかりました。vmlinux を確認しましたが、同じです。誰かが理由を知っていますか?コンパイラが適切に構成されていない可能性がありますか?
どうもありがとう、ダニエル。
linux - initramfs Raspbian で Squashfs をルートとしてマウントする
現在、initramfs を使用して squashFS イメージからラズビアンを起動しようとしています。squashfs イメージはファイル システム /dev/mmcblk0p1 にあるため、イメージをマウントする前にこれをマウントします。
残念ながら、SquashFS イメージ ファイルのマウントに行き詰まっています。
を通してマウントしてみました
しかし、私はいつも得ます
そこで、手動でループを介してマウントしようとしました。問題は、/dev/loop0 のマウントが上記と同じエラーで失敗することです。
これはこれまでのところ私の初期化です:
チェック中
squashfs Image が loop0 にアタッチされていることを教えてくれます。
誰かがどこから始めればよいか知っていますか?
linux - モジュールは起動時にどのようにロードされますか? また、起動時にロードされる順序は何ですか? 変更方法は?
起動時にモジュールがどのようにロードされるかを探しています。
システムの起動時にモジュールをロードするのは誰か。
私はraspbain osを使用しています。
デバイス ツリーにアップグレードする前は、モジュールは適切に読み込まれますが、アップグレード後はモジュールの読み込みが異なります。
それを避けるために、私はsoftdepを使ってモジュールを好きなようにロードしました。
しかし今、私はこれらのsoftdepを削除し、デバイスツリーなしでロードした方法でモジュールをロードしたいと考えています。
ロードした方法と順序、およびブート時に誰がモジュールをロードするかについて、この疑問を明確にすることはできますか
linux - Preseed を使用して Debian のインストールが完了する直前にスクリプトを実行する
Debian Wheezy のインストールが完了する直前にスクリプトを実行しようとしています。私は「di preseed/late-command」、つまり知っています。インストールが完了する前に実行コマンドを使用しました。しかし、私は問題に直面しています。スクリプトを iso ファイルのどこにコピーすればよいかわかりません。次の2つのアプローチを試しました:
- initrd.gz (/install.386/initrd.gz) ファイルのルート ディレクトリ内にスクリプトをコピーしようとし、preseed.cfg で次の変更を行いました。
d-i preseed/late-command in-target sh /my_script.sh
- また、スクリプトを iso ファイルのルート ディレクトリにコピーして、preseed.cfg に次の変更を加えました。
d-i preseed/late-command in-target sh /media/cdrom/my_script.sh
では、ファイルをどこにコピーして (ここのスクリプトで)、後期コマンドで使用できるようにしますか?