問題タブ [rootfs]

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.

0 投票する
1 に答える
8067 参照

linux-kernel - Linuxを実行するためのiMX6 saber liteボード用の新しいSDカードを準備する方法

最近 i.MX6 Sabrelite ボードを購入し、カーネルのクロス コンパイルとボードの立ち上げについて学習しています。

u-boot は既にフラッシュにあり、SD カードからカーネルをロードするように構成されています。ビルド済みのイメージをいくつか試してみたところ、dd を使用してこれらのイメージを SD カードにフラッシュした後、ボードが正常に起動しました。

さて、この SD カード全体をカーネルと rootfs で準備する方法を学びたいと思います。

ここに記載されている次の手順を使用して、カーネルの uImage をビルドできます: http://boundarydevices.com/cross-compile-i-mx6-kernel-using-ltib-toolchain/

さて、問題は次のとおりです。

  1. rootfs を作成するにはどうすればよいですか?

  2. SD カードを分割するにはどうすればよいですか?

0 投票する
2 に答える
2085 参照

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 を確認しましたが、同じです。誰かが理由を知っていますか?コンパイラが適切に構成されていない可能性がありますか?

どうもありがとう、ダニエル。

0 投票する
1 に答える
2269 参照

linux - RAM ディスクを rootfs として起動すると、init プロセスが見つからない

AT91SAM9261 と 2.6.30 カーネルを使用したセットアップ用の RAM ディスクをセットアップしようとしています。なぜinitramfsを使わないのですか?私もそれを使用します。今のところ、rootfsとしてRAMディスクで起動できるかどうかを確認したいと思います。

このシステムでは、ルート fs が jffs2 形式で正常に動作しています。以下のチュートリアルを使用しました:

http://www.ibm.com/developerworks/library/l-initrd/

そこで、埋め込みターゲットに 4MB のサイズで RAM ディスクを直接作成しました。「dd」と「mkefs」を使用しましたが、rootfs が jffs2 の場合にループとしてマウントすると、RAM ディスク イメージは正常に動作します。mount_point をブラウズして内部で何かをすることができます。内容は上記リンク先の「初期RAMディスクの手動構築」を参考に作成しました。

/dev に null とコンソールを配置し、/bin に busybox をコピーしてリンクを作成しました。実行属性を init スクリプトにも設定しました。これは、ここで実行すると正常に動作します (jffs2 を rootfs として使用するループ デバイスとして)。

私のカーネル構成では、次のように RAM ディスクのサポートを有効にしました。

tftp を使用して、RAM ディスク イメージを 0x21100000 にダウンロードします。0x20008000 でカーネルを圧縮解除し、0x22000000 で zImage をコピーしました。

ただし、init プロセスのチェック中にハングするため、システムを正常に起動できません。前述したように、init が実行できることを何度か確認しましたが、

また、bootargs init=/bin/busybox または他のスクリプト/バイナリで使用して、init として使用できるものがあるかどうかを確認しました。

私が今使っているコマンドライン:

bootargs=64M console=ttyS0,115200 root=/dev/ram0 rw initrd=0x21100000,4194304 init=/init

違いがあるかどうかを確認するためだけに、所有権を「nobody」に設定する人もいます。ログ出力でわかるように、ramdisk はマウントされていますが、init は失敗しています。コピーする前に行ったext2イメージを確認するよう警告が表示され、エラーは報告されていません。

TFTP サーバーは Windows7 上にあります。RAM ディスク イメージを Linux から Windows にコピーし、Windows サーバーから tftp を実行すると、互換性がなくなる可能性があります。そのため、イメージを Windows から Linux に再度コピーしてマウントし、FS がエラーを報告してスクリプトを実行できるかどうかを確認しました。すべて正常に見えます。

したがって、すべてのファイルが配置され、属性が設定されています。ramdisk は rootfs として正常にマウントされていると報告されていますが、init が見つかりません。

busybox を再構築して再試行する予定ですが、ループとしてマウントすると現在の RAM ディスク イメージが機能するため、何かが変わるとはあまり確信が持てません。私はアイデアがありません。私はこれを機能させるために一日中努力してきました。

助けていただければ幸いです。

ありがとう。

0 投票する
3 に答える
7734 参照

linux - rootfs を変更する (zynq 上の petalinux)

Zynq ボードに Petalinux 2014.4 をインストールしましたが、ボードを起動しても NAND フラッシュがマウントされません。パッケージを抽出して rootfs.cpio を変更し、次に fstab を変更して cpio アーカイブを元に戻すことができるかどうか疑問に思っています。はいの場合、その後 petalinux-build を実行するだけで十分ですか?

ありがとう :)

0 投票する
1 に答える
375 参照

linux-kernel - 静的にコンパイルされた C ファイルを rootfs として使用する

通常の rootfs ではなく、静的にコンパイルされたhello_world.cファイル、つまりhello_world_static.outを使用して imx53-qsb ボードを起動したいと考えています。これを実現するために、hello_world.cファイルを作成して静的にクロス コンパイルし、SD カードのmmcblk0p1 ext4パーティションに配置しました。uImageu-boot.imxを mmcblk0に配置しました。システムを起動した後、カーネル パニックが発生しました。

カーネル パニック - 同期していません: 初期化が見つかりません。init= オプションをカーネルに渡してみてください。ガイダンスについては、Linux Documentation/init.txt を参照してください。

解決策はありますか?ありがとう