Bedrock Linux:完璧なLinuxディストリビューションを構築するためのレゴキット





Linuxの登場以来、Slack、RedHat、Debian、SUSEなど、多くのディストリビューションが間もなく登場しました。その後、ディストリビューションを選択する際の問題が発生しました。それぞれに独自の特性と利点があり、特別なものであるためです。 RedHatとDebianはディストリビューションの中で最も安定していて保守的であり、Ubuntuは使いやすさに重点を置いており、優れたユーザーインターフェイスを備えています。Gentooには選択肢と柔軟性がありません。



すべてのLinuxユーザーは、他のディストリビューションに実装されている機能の一部が不足している瞬間がありました。多くの人々は、Debianがsystemdに切り替わったことを一度に嫌い、それに基づいて新しいディストリビューションを作成しました-Devuan。一部はGentooに切り替えており、ユーザーはopenrcとsystemdの両方の2つのinitシステムで環境を作成できます。



ディストリビューションが異なれば、この問題の処理も異なります。通常のリポジトリにないパッケージのインストールは、Dockerコンテナーを使用するか、snap andflatpak自己完結型パッケージシステムを使用して解決されます。DEBパッケージマネージャーを備えたシステムにRPMパッケージをインストールすることもできます。GentooはRPMおよびDEBパッケージをサポートしています。これはすべて機能しますが、拡張性が低く、安定性が低くなります。



Bedrock Linuxの作成者はさらに進んで、本格的なメタディストリビューションを作成しました。パッケージだけでなく、レゴブロックなどのさまざまなLinuxディストリビューションのコンポーネントも使用できます。1つの環境では、複数のLinux OSからシステムを作成できます。たとえば、基本的なDebianおよびArchコンポーネントの上に追加のUbuntuパッケージをインストールします。インストールスクリプトは、次のプラットフォームで使用できます。



  • aarch64;
  • armv7hl;
  • armv7l;
  • mips64el;
  • mips64;
  • mips;
  • ミプセル;
  • ppc64;
  • ppc64le;
  • ppc;
  • s390;
  • x86_64;
  • x86;


ちなみに、本格的なインストールディスクやイメージではなく、なぜインストールスクリプトなのか。その理由は、Bedrock Linuxには独自の正規のディストリビューションがなく、代わりに一連のコンポーネントからオペレーティングシステムを組み立てるための一連のレシピがあるためです。この点で、Bedrock Linuxは別のGentooメタディストリビューションに似ていますが、その広大さを受け入れようとして、正気の限界に達し、おそらくそれらを超えました。



Bedrockと基本的なコマンドのインストール



すでにインストールされている従来のLinuxディストリビューションとインストールスクリプトを使用して、Bedrockはそれをハイブリッドシステムに変換します。たとえば、Debianがすでにインストールされている場合、インストールスクリプトを使用すると、Ubuntuと同じ場所に配置された環境が得られます。まず、rootとして実行する必要があります。



sh ./bedrock-linux-<release>-<arch>.sh --hijack
      
      





スクリプトは、これらが演習ではないことを警告します。



* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                               *
* Continuing will:                                              *
* - Move the existing install to a temporary location           *
* - Install Bedrock Linux on the root of the filesystem         *
* - Add the previous install as a new Bedrock Linux stratum     *
*                                                               *
* YOU ARE ABOUT TO REPLACE YOUR EXISTING LINUX INSTALL WITH A   *
* BEDROCK LINUX INSTALL! THIS IS NOT INTENDED TO BE REVERSIBLE! *
*                                                               *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Please type "Not reversible!" without quotes at the prompt to continue:
> Not reversible!
__          __             __
\ \_________\ \____________\ \___
 \  _ \  _\ _  \  _\ __ \ __\   /
  \___/\__/\__/ \_\ \___/\__/\_\_\
          Bedrock Linux 0.7.19 Poki
      
      





Linuxディストリビューションの互換性テーブルについて理解するときが来まし 。おそらくOpenSUSEを除いて、主要な人気のあるディストリビューションはかなりのサポートを持っています。 Linux Mintでは、アンロードおよび無人インストールはサポートされていません。また、コンポーネント間の互換性テーブルも忘れないでください 。たとえば、バイナリはあるディストリビューションから別のディストリビューションにうまく転送されますが、フォントはそうではありません。



すべてのチェックが成功すると、スクリプトはOSに必要な変更を加えます。その後、変更を有効にするためにコンピューターを再起動する必要があります。この時点から、ユーザーはBedrockLinux環境になります。これで、ストラタムと呼ばれるコンテナに追加のOSをインストールできます。これはchroot環境のようなもので、他のストラタスと通信するために特別な穴が開けられています。

ただし、開始する前に、brlチュートリアルの基本を呼び出して、取扱説明書をよく理解しておくことをお勧めします。最も単純なBedrockコマンド、それぞれの目的は明らかです。



# brl update
# brl version
# brl ctatus
      
      





利用可能なディストリビューションのリストを表示してインストールします。



# brl fetch --list
# brl fetch alpine
# brl fetch void
      
      







岩盤分布はどのように相互作用しますか?



特定の状況では、同じ使い慣れたLinux OSの一部であるかのように、異なるストラタからコマンドを実行できます。たとえば、voidとalpineからのコマンドを同じパイプラインで使用できます。最初のコマンドはjqパッケージをalpineに設定し、2番目のコマンドは-joをvoidに設定します。パイプラインは2番目から読み取り、最初に転送します。すべてがユーザーに対して透過的に行われます。



$ sudo apk add jq
$ sudo xbps-install -y jo
$ jo "distro=bedrock" | jq ".distro"
      
      





--hijackの影響を受けた元のDebianLinux OSも、現在は単なる階層です。これらのコマンドのいくつかを実行することで、その存在を推測できます。



$ brl which ls	
debian
$ brl which /
debian
      
      





より具体的には、これらのコマンドの出力は、現在のシェルプロセスから見た場合、/ etc / os-releaseファイルの内容と一致します。各階層は独自のローカルファイルのみを参照するため、これは論理的です。そうでない場合、並列インストールされたDebianとUbuntuは/etc/apt/sources.listファイルの内容に遭遇します。



ただし、すべてのファイルがローカルである場合、異なるディストリビューションは相互に通信できません。これを可能にするには、グローバルファイルが必要です。そのようなファイルは存在します。



$ brl which /bedrock/etc/bedrock.conf	
global
$ brl which /run	
global
$ brl which /tmp
global

      
      





あるディストリビューションのプロセスが別のディストリビューションのローカルファイルに到達する必要がある場合は 、クロスパスが実装されます。たとえば、ある階層から別の階層にos-releaseファイルを読み取るには、パス/ bedrock / strata /を使用してファイルシステムのリソースにアクセスする必要があります。地層の岩盤自体は、ファイルの相互読み取りと書き込みにのみ機能します。内部的には、crossfsはFUSEファイルシステムであり、異なる階層間の互換性を確保するために、要求されたファイルがその場で上書きされます。



$ brl which /bedrock/strata/bedrock/etc/os-release 
bedrock
$ cat /bedrock/strata/bedrock/etc/os-release
NAME="Bedrock Linux"
ID=bedrock
ID_LIKE=bedrocklinux
VERSION="0.7.19 (Poki)"
VERSION_ID="0.7.19"
PRETTY_NAME="Bedrock Linux 0.7.19 Poki"
HOME_URL="https://bedrocklinux.org"
$ brl which /bedrock/strata/my-alpine/etc/os-release 
my-alpine
      
      





特定の階層の内部コマンドを実行する必要がある場合は、適切なプレフィックスを使用する必要があります。



$ strat void sh -c 'apk --help'
      
      





岩盤の更新



Bedrockは、更新が簡単で簡単です。すべてのLinuxディストリビューションと同様に、rootとしてbrlupdateを実行するだけです。このコマンドは、Bedrock階層のみを更新し、残りの階層は、独自の標準ツール(yum update、RedhatおよびCentOSのdnf updateなど)で更新されます。



層の削除



それほど複雑なことはありません。最初に配布がオフになり、次にアンインストールが続きます。



$ sudo brl disable alpine
$ sudo brl remove alpine
$ sudo remove -d void
      
      





最後のコマンドは、無効化操作と削除操作を組み合わせたものです。



Bedrock Linuxは本当に何のためにあるのですか?



この時点で、多くの読者が質問をしている可能性が最も高いです。Linuxワークステーション自体は、特に閉じたグラフィックカードドライバを使用した場合、または ウェイランドセッションBedrockLinuxを実際に使用するためのいくつかのシナリオをリストしてみましょう。



  • RedHatやDebianなどの安定したLinuxディストリビューションを好みますが、新しいハードウェア(CPU、または新しく購入したプリンター)のサポートも必要です。このサポートを受けるには、最新のカーネルとカップのパッケージであるhplipsをインストールする必要があります。このタスクは一度解決できますが、不安定なパッケージを持つ安定したシステムはもはや同じではありません
  • , . , systemd openrc, runit, Ubuntu.
  • , Linux, . sh bash Debian, /bin/sh /bin/bash. Bedrock Linux stratum Debian Linux.
  • Linux OS. .





All Articles