問題タブ [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.
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/
さて、問題は次のとおりです。
rootfs を作成するにはどうすればよいですか?
SD カードを分割するにはどうすればよいですか?
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 - 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 ディスク イメージが機能するため、何かが変わるとはあまり確信が持てません。私はアイデアがありません。私はこれを機能させるために一日中努力してきました。
助けていただければ幸いです。
ありがとう。
linux - rootfs を変更する (zynq 上の petalinux)
Zynq ボードに Petalinux 2014.4 をインストールしましたが、ボードを起動しても NAND フラッシュがマウントされません。パッケージを抽出して rootfs.cpio を変更し、次に fstab を変更して cpio アーカイブを元に戻すことができるかどうか疑問に思っています。はいの場合、その後 petalinux-build を実行するだけで十分ですか?
ありがとう :)
linux-kernel - 静的にコンパイルされた C ファイルを rootfs として使用する
通常の rootfs ではなく、静的にコンパイルされたhello_world.cファイル、つまりhello_world_static.outを使用して imx53-qsb ボードを起動したいと考えています。これを実現するために、hello_world.cファイルを作成して静的にクロス コンパイルし、SD カードのmmcblk0p1 ext4パーティションに配置しました。uImageとu-boot.imxを mmcblk0に配置しました。システムを起動した後、カーネル パニックが発生しました。
カーネル パニック - 同期していません: 初期化が見つかりません。init= オプションをカーネルに渡してみてください。ガイダンスについては、Linux Documentation/init.txt を参照してください。
解決策はありますか?ありがとう