OSDN Git Service

[add] : Alteriso3について追記
authorhayao <hayao@fascode.net>
Tue, 23 Feb 2021 01:04:14 +0000 (10:04 +0900)
committerhayao <hayao@fascode.net>
Tue, 23 Feb 2021 01:04:14 +0000 (10:04 +0900)
buildmydist-2/pages/alteriso3/customize/images/splash.png [new file with mode: 0644]
buildmydist-2/pages/alteriso3/customize/index.php
buildmydist-2/pages/misc/create-config-file/index.php [new file with mode: 0644]

diff --git a/buildmydist-2/pages/alteriso3/customize/images/splash.png b/buildmydist-2/pages/alteriso3/customize/images/splash.png
new file mode 100644 (file)
index 0000000..5a708b8
Binary files /dev/null and b/buildmydist-2/pages/alteriso3/customize/images/splash.png differ
index 13a68b5..ed99de5 100644 (file)
@@ -233,16 +233,91 @@ install_dir="karaage"
         <p>それらのカスタマイズは通常のチャンネルでは必要ありませんが、より細かくカスタマイズをしたい場合は知っておくと良いでしょう。</p>
         <p>それらのパッケージの設定方法は<a href="https://github.com/FascodeNet/alterlinux/blob/dev/docs/jp/CHANNEL.md">チャンネルのの仕様</a>の「言語ごとのパッケージ」「カーネルごとのパッケージ」などを参照してください。</p>
 
+        <h2>ここまでのソースコード</h2>
+        <p>ここまででパッケージリストの定義といくつかの設定ファイルの変更を行いました。</p>
+        <p>どうしても文章ばかりになってしまってわかりにくい箇所も合ったと思うので、ここで一回現段階のソースコードを確認します。</p>
+        <p>以下のリンクでGitHub上に公開してあるので参考にしてみてください。</p>
+        <p><a href="https://github.com/Hayao0819/alterlinux-channels/tree/54a4bb37232fc2e316feabbc9a957dcea3d54aef/karaage.add">ソースコードはこちら</a></p>
+        <p>ここで完成ではなくこれからさらにいろいろといじっていきます。</p>
+
         <h2>イメージファイルに含める、上書きするファイルを配置する</h2>
+        <div class="box-warning">
+            このセクションがチャンネル開発の本質でもあり一番難しく、やることが多い部分です。<br>
+            そのため解説がめちゃくちゃ長くなっています。ここさえ抜ければかんたんなので頑張ってください。
+        </div>
         <p>airootfsディレクトリには上書きするファイルを含めることができます。</p>
         <p>airootfsを/に見立ててディレクトリ構造を維持しながらファイルを上書きします。</p>
         <p>例えば、全てのアーキテクチャで/etc/hostnameを上書きしたい場合は<code>karaage.add/airootfs.any/etc/hostname</code>にファイルを設置します。</p>
         <p>airootfsもpackagesと同様に拡張子でアーキテクチャを識別します。airootfsではanyアーキテクチャを指定可能です。</p>
 
+        <h3>ライブ環境の設定のためにchrootでコマンドを実行する</h3>
+        <p>AlterISOではパッケ0時のインストール後に様々なコマンドを実行してユーザー作成や言語設定などをこなっています。</p>
+        <p>そしてチャンネル開発者が、自由にコマンドをroot権限で実行できる仕組みが用意されています。</p>
+        <p>最初の準備で名前を変更したシェルスクリプトがあったはずです。あれこそがパッケージのインストール後にじっこうされるシェルスクリプトです。</p>
+        <p><code>/root/customize_airootfs_[チャンネル名].sh</code>というシェルスクリプトがじっこうされるようになっています。</p>
+        <p>ここで「コマンドによる」ライブ環境の設定を行うことができます。</p>
+        <p>また、ユーザー名やパスワード、言語、カーネルなどのビルド時に指定された設定は全て変数から利用可能です。利用可能な変数は後々に解説します。</p>
+        <p>ただし、注意することが2つあります。</p>
+        <p>1つ目は「基本的にファイル作成は行わない」ということです。ファイルの内容までシェルスクリプトに書いてしまうとすぐにスクリプトが大きくなってしまいます。</p>
+        <p>その場合はairootfsでファイルを設置しましょう。ユーザー名やカーネルなどのビルドされるまでわからない情報をファイルに含める場合、<code>sed</code>と変数を利用して置き換えるのが最もかんたんです。</p>
+        <p>2つめはスクリプトの厳格さです。未定義の変数やコマンドを参照してしまうとエラーでビルドが停止してしまいます。</p>
+        <p>また、実行したコマンドが失敗した場合にもビルドが停止してしまいます。それらに気をつけてスクリプトを作成してください。</p>
+
+        <h3>ディスプレイマネージャの設定を行う</h3>
+        <p>ここは少々複雑になってしまいます。(ハヤオもこの方法にたどり着くまで時間がかかりました。)</p>
+        <p>まずはライブ環境の起動から、パスワードなどの入力を飛ばしてGUIを起動する手順を説明します。</p>
+        <p>Arch Linux系のOSはまず、カーネルが起動し最低限のファイルやドライバなどの読み込みを行った後、systemdと呼ばれるソフトを起動します。</p>
+        <p>このsystemdはがシステムを本格的に起動して様々な設定やソフトの起動を行います。(難しいので省略します。)</p>
+        <p>そしてsystemdはディスプレイマネージャが設定されていない場合はそのままCLIで起動します。</p>
+        <p>ここで、OSが起動した後に自動でGUIを立ち上げる方法が2つあることがわかります。</p>
+        <p>1つはsystemdからディスプレイマネージャを起動し、自動ログインを利用してデスクトップ環境を起動すること。</p>
+        <p>もう1つはCLIでの起動後に<code>.profile</code>などの起動時に自動でじっこうされるシェルスクリプトを利用して起動する方法。</p>
+        <p>先に結論を述べます。<b>必ず前者を利用してください。</b>理由は色々とあるので今から説明します。</p>
+        <p>まず、シェルスクリプトで単純にGUIを起動することは出来ません。シェルスクリプトで起動を行う場合、<code>xinit</code>と呼ばれるツールを利用して起動を行います。</p>
+        <p>実のところAlter Linux Beta2まではこの方法を採用していました。しかし、一部の環境で起動できなかったり認証が正常に行われなかったりと様々なバグが報告されました。</p>
+        <p>シェルスクリプトでGUIを起動すると、本来ディスプレイマネージャが自動で行っていることを自分でやる必要が有ります。(もちろんそれをシェルスクリプトでやるのは大変です。)</p>
+        <p>そのため、正常にログインや起動処理が行われないことが有ります。それぞれのディスプレイマネージャの自動ログイン機能を利用しましょう。</p>
+
+        <h4>それぞれのディスプレイマネージャに自動ログインを設定する</h4>
+        <p>airootfsを利用して自動ログインを設定しましょう。ただし、ここにもまた落とし穴が有ります。</p>
+        <p>AlterISO3のビルドオプションをよく見るとライブ環境のユーザー名を自由に変更することが出来ます。</p>
+        <p>つまり、直接ユーザー名を設定ファイルに書くことは出来ません。</p>
+        <p>そこで先程軽く説明したスクリプトによる置き換えを利用します。</p>
+        <p>まず何も考えず普通にディスプレイマネージャの自動ログインを設定してください。</p>
+        <p>自動ログインの設定については<a href="">ディスプレイマネージャについて</a>を参照してください。</p>
+        <p>その後、自動ログインするユーザーを記述する部分に<code>%USERNAME%</code>と入れてください。</p>
+        <p>この<code>%USERNAME%</code>をシェルスクリプトでユーザー名に置き換えます。</p>
+        <br>
+        <p>もし<code>/etc/lightdm/lightdm.conf</code>にユーザー名を書いたのなら以下のようなコマンドを<code>customize_airootfs</code>に記述してください。</p>
+        <pre class="line-numbers"><code class="language-shell">
+# Replace auto login user
+sed -i "s|%USERNAME%|${username}|g" "/etc/lightdm/lightdm.conf"
+        </code></pre>
+        <p>設定ファイルのパスは各自で書き換えてください。</p>
+        <p>その後、ディスプレイマネージャを自動起動させるためのsystemdのコマンドも同じスクリプトに記述してください。</p>
+        <p>これで正常にディスプレイマネージャの自動ログインとGUIの自動起動の設定が出来ました。</p>
+        <p>この部分はとてもむずかしいので実際にAlter Linux Xfceなどのソースコードを参照してみてください。</p>
+
         <h3>ユーザーディレクトリのファイルを操作する</h3>
         <p>~/内のファイルを上書き、追加する場合は注意することが有ります。</p>
         <p>詳しくは<a href="/buildmydist-2/pages/misc/skeldir">ユーザーディレクトリのファイルを操作するには</a>を参照してください。</p>
 
+        <h3>様々な設定ファイルを作成する</h3>
+        <p>実際にディストリビューションにデフォルトで適用する設定ファイルを作成します。</p>
+        <p>詳しくは<a href="/buildmydist-2/pages/misc/create-config-file">GUIソフトの設定ファイルを作成する方法</a>を参照してください。</p>
+
+        <h2>ブートローダーの背景を設定する</h2>
+        <p>ここまでくればもう完成は目前です!</p>
+        <p>もうここまできた人は何度か自分のチャンネルをビルドしていると思いますが、必ず気になることが有ります。</p>
+        <p>isoを最初に起動したときのブートローダーの背景です。</p>
+        <p>ブートローダーはSysLinuxというもので構成されており、設定ファイルもちょっと複雑になっています。</p>
+        <p>しかしAlterISO3には背景をかんたんに変更できる仕組みがあります。</p>
+        <p>チャンネルディレクトリ直下に<b>640x480でpng形式</b>の画像を<code>splash.png</code>という名前で設置するだけです。</p>
+        <p>画像を作成する参考にAlter Linuxのものを載せておきます。</p>
+        <p><img src="/buildmydist-2/pages/alteriso3/customize/images/splash.png" alt="起動画面"></p>
+
+
+
         
         
     </main>
@@ -250,3 +325,4 @@ install_dir="karaage"
     <?php include("${commonhtml}/aftermain.php"); ?>
 </body>
 </html>
+
diff --git a/buildmydist-2/pages/misc/create-config-file/index.php b/buildmydist-2/pages/misc/create-config-file/index.php
new file mode 100644 (file)
index 0000000..6e1e59f
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html lang="ja">
+<head>
+
+    <?php
+        // ページ設定
+        $title = "GUIソフトの設定ファイルを作成する方法";
+        $commonhtml = "${_SERVER['DOCUMENT_ROOT']}/buildmydist-2/commonhtml";
+        $distro = "misc";
+        $description = "";
+
+        // 共通ファイルを読み込み
+        $domain = $_SERVER['HTTP_HOST'];
+        include("${commonhtml}/head.php");
+    ?>
+
+</head>
+<body>
+    <?php include("${commonhtml}/beforemain.php"); ?>
+
+    <main>
+        <h2>GUIソフトの設定ファイルを作成する</h2>
+        <p>nanoやVimなどの手動で設定ファイルを操作することを前提にしているソフトについては、どこの設定ファイルをいじったら良いのかが明確になっているためかんたんに編集できます。</p>
+        <p>しかし、デスクトップ環境やGUIソフトウェアなどは設定をGUIで行うことが前提な場合が多くなっています。(Linuxでは全ての設定が最終的にはファイルで保存されます。)</p>
+        <p>そのため、設定をどのように行い、どうやって必要なファイルだけを取り出して配置するかが重要になってきます。</p>
+        <p>今回はXfceやUlauncherといったツールの設定ファイルを取り出す方法を解説します。</p>
+
+        <div class="box-warning">
+            ブラウザやその系列のソフトウェア(Eletronを使用しているソフトウェアなど)のデータを保存することは大変危険です。<br>
+            思わぬところで個人情報は漏洩してしまう可能性が有ります。(ブラウザの設定ファイルは他のソフトよりダントツで複雑です。)
+        </div>
+
+        <h2>瀬底はいっそのことGUIでやる</h2>
+        <p>この記事を見ている人の大半がLFBSやArchiso、AlterISOなどでairootfsを設定するために来ていると思います。</p>
+        <p>まずは設定したいパッケージだけをパッケージリストに追加し、設定ファイルが不足している状態でビルドしてしまいましょう。</p>
+        <p>そしてビルドしたisoを仮想マシンで起動します。そしてそのまま普段どおりGUIソフトの設定を仮想環境内で行ってください。</p>
+        <p>後々でこの仮想環境内でGUIで作成した設定を取り出し、AlterISOやLFBSなどの適切な場所に配置します。</p>
+
+        <h2>まずはパッケージだけを追加する</h2>
+        <p>とりあえずパッケージだけを含めてビルドしましょう。ビルド方法についてはそれぞれのページの解説を参照してください。</p>
+        <p>その後、仮想環境で起動してください。</p>
+        <p>すなわち、この段階で最低限のGUIが仮想環境から起動可能である必要が有るということです。</p>
+        <p>もしGUIが起動できない場合はこの先に進むことが出来ないので注意してください。</p>
+
+
+    </main>
+
+    <?php include("${commonhtml}/aftermain.php"); ?>
+</body>
+</html>