Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。 ステップ1: ディレクトリ構造を作成する 主に以下のディレクトリを含むルートファイルシステムディレクトリを作成します。 /dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys #mkdir /home/rootfs #cd /home/rootfs #mkdir dev etc lib usr var proc tmp home root mnt sys ステップ2:busyboxを使用して/bin /sbin linuxrcをビルドする busybox-1.16.1ディレクトリに入り、実行します #defconfig を作成する #メニュー設定を作成する ビジーボックス設定 -----> ビルドオプション -----> //1 busyboxを静的にコンパイルすることを選択する [*]BusyBoxを静的バイナリとしてビルドする(共有ライブラリなし) //2. クロスコンパイラを (/usr/local/arm/4.3.2/bin/arm-linux-) として指定します。クロスコンパイラプレフィックス インストール オプション -----> (生成されたファイルを保存するディレクトリを選択するか、コピーせずに直接 rootfs に置くこともできます) //3. /usrを使用しないを選択する Busybox ライブラリのチューニング ---> [*]ユーザー名補完 [*]派手なシェルプロンプト [*]端末からカーソル位置を照会する //4. コンパイルされたbusyboxシェルコマンドインタープリタは、現在のパスとホスト情報の表示をサポートします。 保存して終了
busybox ディレクトリには、/bin、/sbin、linuxrc の 3 つのファイルを含む _install ディレクトリがあります。これらの 3 つのディレクトリまたはファイルを、最初の手順で作成した rootfs フォルダにコピーします。 bin ディレクトリのほとんどはリンクなので、-a パラメータを忘れずに指定してください。-a パラメータを指定しないと、コピー後にそれに応じてコピーされ、リンクの形式ではなくなります。 ステップ 3 etc ディレクトリを構築します (主に etc/inittab ファイル、etc/init.d/rcs、etc/fstab) 1) ルートファイルシステム rootfs の etc ディレクトリに入り、次の操作を実行します。 #cp –r busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc inittab を変更する (それに基づいて他のサブプロセスを作成する) 元のファイルは次のとおりです: 1 ::sysinit:/etc/init.d/rcS 2 ::respawn:-/bin/sh 3 tty2::askfirst:-/bin/sh 4 ::ctrlaltdel:/bin/umount -a -r 変更後: ---(1): ログインせずにコンピュータを起動し、直接シェルを開く(先頭の数字は行番号) 1 ::sysinit:/etc/init.d/rcS 2 #::respawn:-/bin/sh 3 #::respawn:-/bin/ログイン 4 コンソール::askfirst:-/bin/sh 5 #tty2::askfirst:-/bin/sh 6 ::ctrlaltdel:/bin/umount -a -r ---(2): 起動するにはログインが必要です(先頭の数字は行番号です) 1 ::sysinit:/etc/init.d/rcS 2 #::respawn:-/bin/sh 3 ::respawn:-/bin/ログイン 4 #console::askfirst:-/bin/sh 5 #tty2::askfirst:-/bin/sh 6 ::ctrlaltdel:/bin/umount -a -r 2) 仮想マシン上の/etc/passwd、/etc/group、/etc/shadowをrootfs/etcにコピーします。 # cp /etc/passwd ルートファイルシステム/etc # cp /etc/group ルートファイルシステム/etc # cp /etc/shadow 屋根/etc 以下の 3 つのファイルを変更し、ルートに関連する項目のみを保存します。内容は具体的な状況によって異なります。 passwd を root:x:0:0:root:/root:/bin/sh に変更します。これは、root に関連する項目のみを保存することを意味します。最後に、/bin/ash に変更します。 グループをroot:x:0:rootに変更する シャドウを 開発ボードにログインするときは、仮想マシンと同じユーザー名とパスワードを入力する必要があります。 3) プロフィールを変更する PATH=/bin:/sbin:/usr/bin:/usr/sbin //実行可能プログラム環境変数 export LD_LIBRARY_PATH=/lib:/usr/lib //ダイナミックリンクライブラリ環境変数 /bin/hostname osee USER="`id -un`" ログ名=$USER ホスト名='/bin/ホスト名' PS1='[\u@\h \W]# ' //ホスト名、現在のパス、その他の情報を表示します。 4) etc/init.d/rc.S ファイルを変更します (自動実行コマンドを追加します) #!バイナリ /bin/mount -n -t ramfs ramfs /var /bin/mount -n -t ramfs ramfs /tmp /bin/mount -n -t sysfs なし /sys /bin/mount -n -t ramfs なし /dev /bin/mkdir /var/tmp /bin/mkdir /var/modules /bin/mkdir /var/run /bin/mkdir /var/log /bin/mkdir -p /dev/pts //telnet サービスで必要 /bin/mkdir -p /dev/shm //telnet サービスで必要 #echo /sbin/mdev > /proc/sys/kernel/hotplug //USB 自動マウントには /sbin/mdev -s が必要です //mdev を起動して /dev の下にデバイス ファイル ノードを自動的に作成します /bin/mount -a #########ネットワークを構成する################################## /sbin/ifconfig lo 127.0.0.1 ネットマスク 255.0.0.0 /sbin/ifconfig eth0 192.168.1.70 /sbin/ifconfig eth0 ネットマスク 255.255.255.0 /sbin/route にデフォルトの gw 192.168.1.1 eth0 を追加します /sbin/ifconfig eth1 192.168.1.71 ネットマスク 255.255.255.0 /sbin/route にデフォルトの gw 192.168.1.1 eth1 を追加します 5) etc/fstabファイルを変更し、次のファイルを追加してproc tmpfsファイルシステムをマウントします。 #デバイス マウントポイント タイプ オプション ダンプ fsck 順序 なし /dev/pts devpts モード=0622 0 0 tmpfs /dev/shm tmpfs デフォルト 0 0 proc /proc proc デフォルト 0 0 ステップ 4 lib ディレクトリを構築します。 (~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib、このディレクトリに SO ファイルをコピーするだけです) 1 以下の動的ライブラリをrootfs/libにコピーします。 2 以下の動的ライブラリをrootfs/libにコピーします。 ステップ 5 lmdev ディレクトリを構築します。 方法1: デバイスファイルを静的に作成する cat /proc/devices mknod コンソール c 5 1 mknod ヌル c 1 3 mknod ttySAC0 c 204 64 mknod mtdblock0 b 31 0 方法2: mdevを使用してデバイスファイルを作成する カーネルが カーネルが起動すると、mdevが自動的に実行される。 etc/fstab を変更して、ルート ファイル システムを自動的にマウントします。etc/init.d/rcS を変更して、自動的に実行するコマンドを追加します。 要約する 上記は、編集者が紹介したbusyboxを移植して最小限のルートファイルシステムを構築する詳細な手順です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: MySQL は、あるテーブルのデータに基づいて別のテーブルの特定のフィールドを更新します (SQL ステートメント)
インターネットには、真実のように見える「噂」がたくさんあります。もちろん、悪意のあるものではありませ...
目次1. 解凍コマンド1.1 構文1.2 オプション2. 例1. 解凍コマンドunzip コマンドは...
目次1 現在のデータベースの内容を表示し、データベースをバックアップする2 bin_log関数を有効...
目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...
この記事では、例を使用して、MySQL スライディング集計/年初来集計の原理と使用方法を説明します。...
vue3.0 への最初の試みを記録します。プロジェクトを開始したときに、「モジュール 'wo...
問題を見つける今日、Docker コンテナ内のファイルを変更しようとしたところ、コンテナ内に vim...
この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...
前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...
Linux と Unix はマルチユーザー オペレーティング システムであるため、ファイルの権限と所...
前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...
この記事の例では、画像比較を実現するためのjQueryプラグインの具体的なコードを参考までに共有して...
目次Pagodaをインストールする管理塔Nginx サービス管理Apache サービス管理MySQL...
序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...
Windowsオペレーティングシステムでは、ポートの占有状況を照会し、ポートの占有状況をクリアするプ...