GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでBusyBoxを使用する方法

Linuxコマンドを当然のことと考えるのは簡単です。 Linuxをインストールすると、これらはシステムにバンドルされており、なぜそこにあるのか疑問に思わないことがよくあります。 cdなどの基本的なコマンドの一部 、kill 、およびecho 常に独立したアプリケーションであるとは限りませんが、実際にはシェルに組み込まれています。 lsなどのその他 、mv 、およびcat コアユーティリティパッケージの一部です(多くの場合、GNU coreutils 具体的には)。しかし、オープンソースの世界には常に選択肢があり、最も興味深いものの1つはBusyBoxです。

LinuxのBusyBoxとは何ですか?

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

BusyBoxはオープンソース(GPL)プロジェクトであり、lsを含む400近くの一般的なコマンドの簡単な実装を提供します。 、mvlnmkdirmorepsgzipbzip2tar 、およびgrep 。プログラミング言語awkのバージョンも含まれています 、ストリームエディタsed 、ファイルシステムチェッカーfsckrpm およびdpkg パッケージマネージャー、そしてもちろんシェル(sh )これらすべてのコマンドに簡単にアクセスできます。つまり、POSIXシステムが一般的なシステム保守タスクと多くのユーザーおよび管理タスクを実行するために必要なすべての重要なコマンドが含まれています。

実際、initも含まれています 他のすべてのシステムサービスの親プロセスとして機能するPID1として起動できるコマンド。つまり、BusyBoxは、systemd、OpenRC、sinit、init、およびその他の起動デーモンの代わりに使用できます。

BusyBoxは非常に小さいです。実行可能ファイルとしては1MB未満であるため、ドライブスペースが貴重な組み込み、エッジ、およびIoTスペースで人気を博しています。コンテナーとクラウドコンピューティングの世界では、最小限のLinuxコンテナーイメージの基盤としても人気があります。

ミニマリズム

BusyBoxの魅力の一部はそのミニマリズムです。そのすべてのコマンドは、単一のバイナリ(busybox)にコンパイルされます )、およびそのマニュアルページはわずか81ページです(私の計算によるとman prへ )ただし、400近くのコマンドをカバーしています。

比較例として、shadowの出力を次に示します。 useradd --helpのバージョン :

 -b, --base-dir BASE_DIR       base directory for home
 -c, --comment COMMENT         GECOS field of the new account
 -d, --home-dir HOME_DIR       home directory of the new account
 -D, --defaults                print or change the default config
 -e, --expiredate EXPIRE_DATE  expiration date of the new account
 -f, --inactive INACTIVE       password inactivity
 -g, --gid GROUP               name or ID of the primary group
 -G, --groups GROUPS           list of supplementary groups
 -h, --help                    display this help message and exit
 -k, --skel SKEL_DIR           alternative skeleton dir
 -K, --key KEY=VALUE           override /etc/login.defs
 -l, --no-log-init             do not add the user to the lastlog
 -m, --create-home             create the user's home directory
 -M, --no-create-home          do not create the user's home directory
 -N, --no-user-group           do not create a group with the user's name
 -o, --non-unique              allow users with non-unique UIDs
 -p, --password PASSWORD       encrypted password of the new account
 -r, --system                  create a system account
 -R, --root CHROOT_DIR         directory to chroot into
 -s, --shell SHELL             login shell of the new account
 -u, --uid UID                 user ID of the new account
 -U, --user-group              create a group with the same name as a user

そして、これが同じコマンドのBusyBoxバージョンです:

 -h DIR    Home directory
 -g GECOS  GECOS field
 -s SHELL  Login shell
 -G GRP    Group
 -S            Create a system user
 -D            Don't assign a password
 -H            Don't create home directory
 -u UID    User id
 -k SKEL   Skeleton directory (/etc/skel)

この違いが機能であるか制限であるかは、コマンドに20個のオプションを含めるか10個のオプションを使用するかによって異なります。一部のユーザーとユースケースでは、BusyBoxのミニマリズムは、実行する必要のあることを十分に提供します。他の人にとっては、フォールバックとして、またはBash、Zsh、GNUAwkなどのより堅牢なツールをインストールするための基盤として使用するのが適切な最小限の環境です。

BusyBoxのインストール

Linuxでは、パッケージマネージャーを使用してBusyBoxをインストールできます。たとえば、Fedoraなどの場合:

$ sudo dnf install busybox

Debianとその派生物について:

$ sudo apt install busybox

macOSでは、MacPortsまたはHomebrewを使用します。 Windowsでは、Chocolateyを使用します。

chsh --shellを使用して、BusyBoxをシェルとして設定できます。 コマンドの後に、BusyBox shへのパスが続きます 応用。 BusyBoxを/lib64に保管しています 、ただし、その場所はディストリビューションがインストールした場所によって異なります。

$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh

ほとんどのディストリビューションは特定のコマンドの特定のパッケージを探すために「ハードワイヤード」されているため、すべての一般的なコマンドをBusyBoxに置き換えるのは少し複雑です。つまり、技術的にはinitを置き換えることは可能ですが BusyBoxのinitを使用 、パッケージマネージャーは、initを含むパッケージの削除を拒否する場合があります システムが起動できなくなることを恐れて。 BusyBoxに基づいて構築されたディストリビューションがいくつかあるため、BusyBoxを中心に構築されたシステムを体験するには、おそらく最初からやり直すのが最も簡単な方法です。

BusyBoxをお試しください

試してみるだけで、シェルを恒久的にBusyBoxに変更する必要はありません。現在のシェルからBusyBoxシェルを起動できます:

$ busybox sh
~ $

ただし、システムにはまだBusyBox以外のバージョンのコマンドがインストールされているため、BusyBoxのツールを体験するには、busyboxへの引数としてコマンドを発行する必要があります。 実行可能ファイル:

~ $ busybox echo $0
sh
~ $ busybox ls --help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.

Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...

List directory contents

 -1  One column output
 -a  Include entries that start with .
 -A  Like -a, but exclude . and ..
 -x  List by lines
[...]

「完全な」BusyBoxエクスペリエンスのために、busyboxへのシンボリックリンクを作成できます コマンドごとに。 forループを使用している限り、これは思ったより簡単です:

$ mkdir bbx
$ for i in $(bbx --list); do \
ln -s /path/to/busybox bbx/$i \
done

startにシンボリックリンクのディレクトリを追加します パスを確認し、BusyBoxを起動します:

$ PATH=$(pwd)/bbx:$PATH bbx/sh

忙しくする

BusyBoxは楽しいプロジェクトであり、最小限の例です。 コンピューティングは可能です。 BusyBoxを、救助した古代のコンピューターの軽量環境として使用する場合でも、組み込みデバイスのユーザーランドとして使用する場合でも、新しいinitシステムを試すために使用する場合でも、好奇心として使用する場合でも、昔ながらの慣れ親しんだものに慣れることは楽しいことです。新しいコマンド。


Linux
  1. Linuxでcronを使用する方法

  2. LinuxでFINDを使用する方法

  3. LinuxでSuコマンドを使用する方法

  1. Linuxのアクセシビリティ設定の使用方法

  2. LinuxでUnzipを使用する方法

  3. LinuxでGoogleドライブを使用する方法

  1. Linuxでpkgsrcを使用する方法

  2. LinuxでDisownコマンドを使用する方法

  3. LinuxSSコマンドの使用方法