debootstrap、linux そしてu-boot。
あまり人気のないシングルボードデバイスを購入した場合は、お気に入りの配布キットのイメージが不足していることに直面する可能性があります。計画されたフリッパーワンでも同じことが起こりました。IMX6用のKaliLinux(私は料理をしています)がないので、自分で作成する必要があります。
ダウンロードプロセスは非常に簡単です。
- Ironが初期化されます。
- ストレージデバイス(SDカード/ eMMCなど)のある領域から、ブートローダーが読み取られて実行されます。
- ローダーはオペレーティングシステムカーネルを探し、それをメモリ領域にロードして実行します。
- カーネルは残りのOSをロードします。
このレベルの詳細は私のタスクには十分です。詳細は別の記事で読むことができます。上記の「いくつかの」領域はボードごとに異なり、インストールが困難になります。彼らはUEFIを使用してサーバーARMプラットフォームのロードを標準化しようとしていますが、これがすべての人に利用可能でない限り、すべてを個別に収集する必要があります。
ルートファイルシステムの構築
まず、セクションを準備する必要があります。Das U-Bootはさまざまなファイルシステムをサポートしています。
/bootルートにはFAT32とext3を選択しました。これは、ARMでのKaliの標準イメージマークアップです。GNU Partedを使用しますが、同じことをもっと身近なものにすることができますfdisk。また、ファイルシステムを作成する必要がdosfstoolsありe2fsprogsますapt install parted dosfstools e2fsprogs。
SDカードをマークアップします。
- SDカードをMBRマークアップを使用するものとしてマークします。
parted -s /dev/mmcblk0 mklabel msdos /boot128メガバイトでセクションを作成しますparted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB。最初に失われたメガバイトは、マークアップ自体とブートローダーのために残しておく必要があります。- 残りの容量全体のルートファイルシステムを作成します。
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100% - 突然パーティションファイルが作成または変更されていない場合は、 `partprobe`を実行する必要があります。その後、パーティションテーブルが再読み込みされます。
- 次のラベルを使用してブートパーティションファイルシステムを作成します
BOOT。mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1 - 次のラベルを使用してルートファイルシステムを作成します
ROOTFS。mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
これで、入力できます。これを行うには
debootstrap、ルートファイルシステムDebianベースのオペレーティングシステムを作成するための追加のユーティリティが必要になりますapt install debootstrap。
FSを収集します。
- パーティションを次の
/mnt/場所にマウントします(より便利なマウントポイントを使用します)。mount /dev/mmcblk0p2 /mnt - :
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali.--include, QEMU.chrootARM-.man debootstrap. , ARM-armhf. - -
debootstrap, :chroot /mnt/ /debootstrap/debootstrap --second-stage - :
chroot /mnt /bin/bash -
/etc/hosts/etc/hostname. , . - .
locales( ), (dpkg-reconfigure locales tzdata).passwd. rootコマンドのパスワードを設定しますpasswd。- 私のための画像の準備は、
/etc/fstab中の塗りつぶしで終わり/mnt/ます。
以前に作成したタグに従ってロードするため、コンテンツは次のようになります。
LABEL = ROOTFS /自動エラー=再マウント-ro0 1
LABEL = BOOT /ブート自動デフォルト00
最後に、ブートパーティションをマウントできます。カーネルに必要です: `mount / dev / mmcblk0p1 / mnt / boot /`
Linuxの構築
Debian Testingでカーネル(およびブートローダー)を構築するには、ターゲットアーキテクチャ(I
armhf)のGCC、GNU Make、GNU Cライブラリヘッダーファイルの標準セット、およびOpenSSLヘッダー、コンソール計算機bc、bisonおよびflex:を確立する必要がありますapt install crossbuild-essential-armhf bison flex libssl-dev bc。ブートローダーはデフォルトでzImageブートパーティションのファイルシステム上のファイルを検索するため、USBフラッシュドライブをパーティション分割するときが来ました。
- コアのクローンが長すぎるため、ダウンロードするだけです
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz。それを開梱し、ソースディレクトリに移動します。tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1 - コンパイル前に構成します
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig。構成はディレクトリにありarch/arm/configs/ます。ない場合は、準備ができているものを見つけてダウンロードし、このディレクトリ内のファイルの名前をパラメータに渡すことができますKBUILD_DEFCONFIG。最後の手段として、次のポイントに直行します。 - オプションで、設定を調整できます。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig - そして、画像をコンパイルします。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- - これで、カーネルを使用してファイルをコピーできます。
cp arch/arm/boot/zImage /mnt/boot/ - およびDeviceTreeを含むファイル(ボードで使用可能なハードウェアの説明):
cp arch/arm/boot/dts/*.dtb /mnt/boot/ - そして、別々のファイルとして組み立てられたモジュールをインストールします。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
カーネルの準備ができました。すべてをアンマウントできます:
umount /mnt/boot/ /mnt/
Das U-Boot
ブートローダーはインタラクティブであるため、ボード自体、ストレージデバイス、およびオプションのUSB-UARTデバイスで、その動作をテストできます。つまり、カーネルとOSを後で延期することができます。
大多数のメーカーは、初期起動にDasU-Bootを使用することを提案しています。通常、完全なサポートは独自のフォークで提供されますが、アップストリームに貢献することを忘れないでください。私の場合、ボードはメインラインでサポートされているので、フォークは無視しました。
ブートローダー自体を収集します。
- :
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10 - :
cd u-boot - :
make mx6ull_14x14_evk_defconfig. Das U-Boot,.config, . - -
armhf:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
その結果、ファイルを取得します
u-boot.imx。これは、USBフラッシュドライブに書き込むことができる既製のイメージです。最初の1024バイトをスキップして、SDカードに書き込みます。なぜターゲットを選んだのu-boot.imxですか?なぜ正確に1024バイトスキップしたのですか?これは、ドキュメントが示唆していることです。他のボードの場合、イメージのビルドと書き込みのプロセスが少し異なる場合があります。
完了しました。起動できます。ブートローダーは、独自のバージョンといくつかのボード情報を報告し、パーティション上のカーネルイメージを見つけようとする必要があります。失敗した場合は、ネットワーク経由で起動しようとします。一般的に、出力は非常に詳細であり、問題が発生した場合にエラーを見つけることができます。
結論の代わりに
イルカの額が骨ではないことをご存知ですか?それは文字通り第三の目、エコーロケーションのための脂肪質のレンズです!
