1126100_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1126100_ja-JP

1126100_ja-JP

i.MX6 sabre SDプラットフォーム上のbusyboxをいくつかのコマンドで<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

busybox-sabresd.png

ここでは、i.MX6 sabre sdプラットフォーム用の BusyBoxを使用して、最小限のルートファイルシステムをかなり迅速に生成する方法を示します。

このドキュメントは、すでにプラットフォーム上で Linux カーネルを起動できることを前提としています。その方法の詳細については、 この投稿 を参照してください。これは 、ARMクロスコンパイラ(Debian + Emdebianなど)が手元にある「動作する」Linux開発環境がすでにある ことを意味します 。


busybox は非常に小さいため、メインのルートファイルシステムとしてRAMディスクを使用します。

busybox のソースを取得する

git を使用して busybox のソースを取得します。


  $ git clone git://git.busybox.net/busybox


これにより、 すべての最新のソースを含む busybox ディレクトリが作成されます。


安定性を高めるために、最新バージョンの代わりにリリースをチェックアウトする場合もあることに注意してください。そのためには、利用可能なリリースタグを git tag -l git checkout などでリストアップします


コンパイル

あなたのクロスコンパイラが例えばarm-linux-gnueabihf-gccの場合、次のようにしてコンパイルできます。

$ cd busybox

$ export ARCH=arm

$ export CROSS_COMPILE=arm-linux-gnueabihf-

  $ make defconfig

$ sed -i.orig 's/^#.*CONFIG_STATIC.*/CONFIG_STATIC=y/'.configの

$作る

$ make install

これにより、バイナリとリンクを含む _install フォルダ階層が作成されます。静的バイナリのビルドを sed コマンドで強制することに注意してください。

ルートファイルシステムの設定

_installフォルダを最小ファイルシステムと呼ぶ前に、さらにいくつかの構成を追加する必要があります。


フォルダをいくつか作成する


いくつかのマウントポイントとフォルダを作成する必要があります。


$ mkdir _install/dev

  $ mkdir _install/proc

  $ mkdir _install/sys

$ mkdir -p _install/etc/init.d

設定ファイルとスクリプトを追加

次の内容で、メインの init 設定ファイル _install/etc/inittab を準備する必要があります。

  ::sysinit:/etc/init.d/rcS
  ::askfirst:/bin/sh
  ::ctrlaltdel:/sbin/reboot
  ::shutdown:/sbin/swapoff -a
  ::shutdown:/bin/umount -a -r
  ::restart:/sbin/init

これは、 inittab ファイルがない場合の busybox init のデフォルトの動作に非常に近いです。tty が欠落しているという警告を抑制するだけです。

利便性のために、起動時にいくつかのファイルシステムをマウントするための設定を追加する必要があります。これは、以下を含む _install/etc/fstab ファイルを使用して行われます。

  proc     /proc proc     defaults 0 0

sysfs /sys sysfs デフォルト 0 0

  devtmpfs /dev  devtmpfs defaults 0 0


また、実際に _install/etc/init.d/rcS でマウントをトリガーする必要がありますスクリプトは、 inittab から呼び出されます。次のものが含まれている必要があります。


#!/bin/sh

マウント-a


そして、それを実行可能にする必要があります。


$ chmod +x _install/etc/init.d/rcS


RAM ディスクの内容を生成する


ルートファイルシステムの内容を調整したので、次のコマンドを使用して u-boot busybox RAMディスクイメージを生成できます。


  $ (cd _install ; find |cpio -o -H newc |gzip -c > ../initramfs.cpio.gz)

  $ mkimage -A arm -T ramdisk -d initramfs.cpio.gz uInitrd


これにより、 u-boot に適した uInitrd ファイルが作成されます。


ブートスクリプトを準備する

デフォルトの u-boot コマンドはシステムを起動するのに十分ではないため、次の内容で boot.txt ファイルを編集する必要があります。

  run loaduimage

loadfdt を実行します

  setenv rdaddr 0x13000000

  fatload mmc ${mmcdev}:$mmcpart $rdaddr uInitrd

  setenv bootargs console=${console},${baudrate} rdinit=/sbin/init

  bootm $loadaddr $rdaddr $fdt_addr


次に、 u-boot でロードできる boot.scr スクリプトを生成します。


$ mkimage -A arm -T スクリプト -d boot.txt boot.scr


SDカードに入れる

この投稿 で説明されているように、 u-boot Linux を使用してSDカードを準備したと仮定すると、カーネルとdtbを含むカードには単一のFATパーティションがあります。ブートスクリプトとRAMディスクイメージを一緒にコピーする必要があります。


  $ mount /dev/ /mnt

  $ cp uInitrd boot.scr /mnt/

$ umount /mnt


SDカードの最初のパーティションは、通常 、/dev/sd 1 または /dev/mmcblk p1 にあります 。コマンドを成功させるには SD カードへの書き込み権限が必要なため、 ユーザーに権限を付与するには、 su - root として実行するか、 sudo を使用するか、 SD カードデバイスノードで root として chmod a+w を実行する 必要があることに注意してください。


ブート!


SDカードを起動する準備ができました。i.MX6 sabre sdプラットフォームのSDカードスロットに挿入し、シリアル端子を115200ボー、パリティなし、8ビットデータに設定したUSBからUARTポートに接続し、プラットフォームの電源を入れます。Y busybox システムはプロンプトで起動するはずです。

  ...

未使用のカーネルメモリの解放: 292K (806d5000 - 8071e000)

Enter キーを押して、このコンソールをアクティブにしてください。

Enterキーを押した後、ターゲット上には機能 的なbusybox シェルがあるはずです。

お楽しみください!

関連項目...

  • より機能的なルートファイルシステムとしては、 この記事で説明しているように、2つ目のSDカードパーティションでDebianファイルシステムを試してみるか、 Buildrootでファイルシステムを生成するとよいでしょう。
  • busybox を頻繁にコンパイルする予定がある場合は、C コンパイラのキャッシュを使用することをお勧めします。こちらの記事をご覧ください。
i.MX6_Alli.MX6DLi.MX6Duali.MX6Quadi.MX6SLinux
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-05-2026 10:58 AM
更新者: