CentOS、Ubuntu、Debianリポジトリをダウンロードする人、既存のディストリビューションに基づいてディストリビューションを構築する人、LFS(Linux From Scratch)とBLFS(Beyond Linux From Scratch)の本を手にした人はすでにソースからディストリビューションのコンパイルを開始しています彼は、「主権のある」インターネットハッカー攻撃、ウイルスの発生、データリークが確実に発生し、しばらくするとバイナリが古くなると考えています。
最近、彼らはLinux From Scratch Systemd Edition v.8.3ブックの指示に基づいて、ソースから仮想マシンを完全にコンパイルすることに取りかかりました。 急いで結果を共有します。
Linuxビルドプロセス
ソースからLinuxを構築するプロセスは、3つの段階に分けることができます。
- 既存のオペレーティングシステムに基づいて、LFSビルド環境が構築されます。
- ビルド環境は、LFS仮想マシンのイメージをビルドします。
- 仮想マシンは、LFSブックにない追加のパッケージをBLFSブックからインストールします。
静的スクリプトファイル
ビルド環境で作業する場合、クリップボードとSSHを使用すると便利です。コマンドをブックからコピーして、ビルド環境コンソールに貼り付けます。
作成した仮想マシンを起動すると、深刻な問題が発生しました。 端末ウィンドウとは異なり、コードを仮想マシンのクライアントウィンドウに挿入することはできません。 キーボードでコマンドを入力するのは不便であり、タイプミスの大きなリスクがあります。 タイプミスの危険性は、すぐにではなく、しばらくしてから深刻な問題につながる可能性があるという事実にあります。
コマンドはキーボードだけでなく、標準ストリーム(STDIN)からも入力できることが知られています。 標準ストリームのソースは、シリアルポートと、いわゆる標準出力(STDOUT)というスクリプトプログラムの結果を使用できます。
多くの人々は、wgetコマンドがダウンロードされたファイルの内容を標準出力(STDOUT)に出力できることを知っています。
wget http://example.com -O -
wgetコマンドの出力をインタープリターに送信すると、任意のコードを実行できます。 コードは、キーボードで入力されたか、クリップボードからコピーされたかのように実行されます。
wget http://umvirt.com/linux/helloworld.sh -O - | bash
したがって、コマンドを使用してファイルをWebサーバーに配置し、その内容をインタープリターに送信することができます。
動的スクリプトファイル
静的ファイルは、何をする必要があるかを正確に知っていて、パッケージがインストールされている場合、依存関係が明確にインストールされていないかどうか、そして何を知っている場合、もちろん良いことです。
LAMP Webサーバー (Linux-Apache-MySQL-PHP)に基づいた動的サイトが助けになります。 サイトがページ(HTMLファイル)と画像を動的に生成できる場合、通常のテキストファイルに対応できる必要があります。
そしてそれが起こった。 Bashインタープリター用のスクリプトを生成するUmVirt LFSパッケージの Webサイトを作成しました。 サイトデータベースには、パッケージ、依存関係、パッチ、追加、ビルドコマンドに関する情報が含まれています。
さて、mcパッケージ(真夜中の司令官)をインストールするには、次のコマンドを記述できます。
wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash
サイトスクリプト自体がデータベースからデータを受け取り、依存関係をチェックするためのコードとパッケージをインストールするためのスクリプトコードを生成します。 インタープリターは、スクリプトからの指示を処理します。
これを可能にするために、データベースにインストールされたパッケージに関する情報は仮想マシンのディスクに保存されます。
インストールされたパッケージのデータベースは、ディレクトリ/ var / cache / ulfs-packagesにあります。パッケージの名前に対応する名前を持つ空のファイルのリストです。
パッケージがデータベースで見つからない場合、依存関係が再帰的にインストールされます。
アメニティ
パッケージのインストールをより便利にするため、 UMVirt LFSパッケージデータベースを使用する別のUmVirt LFS Assistant Webサイトchimpスクリプトを作成しました。 UmVirt LFS Assistantの主なタスクは、他のコマンドの実行です。
chimpを使用すると、パッケージのインストールがさらに簡単になります。
chimp install mc
デモンストレーション
サービスUmVirt LFSパッケージおよびUmVirt LFS Assistantの作業に慣れるために、基本イメージInitial UmVirt LFS v.0.1 Update 1をダウンロードできます。 1つのコマンドを実行してXorgをインストールします。
chimp install X
スクリプトの実行プロセスでは、141個のパッケージが自動モードでインストールされます。 コンパイル時間を節約するために、/ etc / profileファイルの値を、「-j1」(1つのストリーム)から「-j6」(6つのスレッド)などのMAKEFLAGS変数に置き換えることができます。
分散化とカスタマイズ
セキュリティ、自律性、カスタマイズを確保するために、UMVirt LFSパッケージとUmVirt LFS Assistantサービスのソースコードがパブリックドメインで公開されています。 誰でもダウンロードして展開し、インフラストラクチャ内でサービスを調整できます。