OSDN Git Service

Merge branch 'dev' into dev-stable
[alterlinux/alterlinux.git] / docs / jp / BUILD.md
1 ## Alter Linuxをビルドする
2 ビルドは実機のArch Linuxを利用する方法とDocker上でビルドする方法があります。  
3 Dockerでビルドする方法は[この手順](DOCKER.md)を参照してください。  
4   
5 実機でビルドする場合は、OSがArch LinuxかAlter Linuxでなければなりません。  
6 (Manjaroや他のディストリビューションでも必要なコマンドをインストールすれば理論上は可能ですが動作は保証されません。)
7 以下では実機でビルドする方法を解説します。  
8   
9 ArchやAlter上で直接ビルドする場合、ビルドはいくつかの方法で行うことができます。
10
11 ## アーキテクチャについて
12 現在Alter Linuxは主に`i686`と`x86_64`をサポートしています。限定的に`i486`のサポートも行っています。  
13 また、現在`aarch64`のサポートもテストされています。  
14 ビルドを行うホスト環境と互換性のあるアーキテクチャでしかビルドできませんので十分注意してください。  
15 (x86_64上でi686のビルドはできますがaarh64上でi486のビルドを行うといったことはできません。)  
16
17 ### 準備
18
19 ソースコードを取得します。  
20
21 ```bash
22 git clone https://github.com/FascodeNet/alterlinux.git
23 cd alterlinux
24 ```
25
26 Alter Linuxのリポジトリを利用するための鍵を追加します。  
27
28 ```bash
29 sudo ./tools/keyring.sh --alter-add --arch32-add
30 ```
31
32 ビルドに必要なパッケージをインストールします。
33
34 ```bash
35 sudo pacman -S --needed curl dosfstools git libburn libisofs lz4 lzo make pyalpm squashfs-tools libisoburn xz zlib zstd qt5-base
36 ```
37
38 ### TUIを使用する
39 `menuconfig`を使用して設定を行いビルドできます。  
40
41 ```bash
42 make menuconfig
43 ```
44
45 設定が完了したら以下のコマンドでビルドできます
46
47 ```bash
48 sudo make build
49 ```
50
51 ### GUIを使用する
52 GUIで設定を行ってビルドできます。GUIには`python-gobject`が必須です。  
53
54 ```bash
55 python ./tools/build-helper.py
56 ```
57
58 ### ビルドウィザードを使用する
59 実機で直接ビルドする場合、wizard.shを使用して簡単に思い通りの設定でビルドできます。  
60 下記の鍵の追加や依存関係のインストールなどを全て自動で行います。  
61 bashで書かれていますのでターミナルから実行してください。  
62 「はい」か「いいえ」の質問は`y`か`n`で応えてください。数値を入力する場合は半角で入力してください。  
63 ウィザードの使い方の詳細は[公式ブログ](https://blog.fascode.net/2020/04/17/build-alterlinux/)で紹介しています。  
64
65 ```bash
66 sudo make wizard
67 ```
68
69 ### 手動でオプションを指定してビルドする
70
71 `build.sh`を実行して下さい。  
72
73 ```bash
74 sudo ./build.sh [options] [channel]
75 ```
76
77 ### build.shの使い方
78
79 主なオプションは以下のとおりです。完全なオプションと使い方は`./build -h`を実行して下さい。  
80 (以下のオプション以外にもデバッグ用の様々なオプションが用意されています。)  
81
82 用途 | 使い方
83 --- | ---
84 ブートスプラッシュを有効化 | -b
85 カーネルを変える | -k [kernel]
86 ユーザ名を変える | -u [username]
87 パスワードを変更する | -p [password]
88 日本語にする | -l ja
89 圧縮方式を変更する | -c [comp type]
90 圧縮のオプションを設定する | -t [comp option]
91 出力先ディレクトリを指定する| -o [dir]
92 作業ディレクトリを指定する | -w [dir]
93
94 また引数では設定できない細かい挙動を変更する方法もあります。詳しくは[CONFIG.md](CONFIG.md)を参照してください。  
95
96 #### 例
97 以下の条件でビルドするにはこのようにします。
98
99 - Plymouthを有効化
100 - 圧縮方式は`gzip`
101 - カーネルは`linux-lts`
102 - パスワードは`ilovearch`
103 - チャンネルは`xfce`
104
105 ```bash
106 ./build.sh -b -c "gzip" -k "lts" -p 'ilovearch' xfce
107 ```
108
109
110 ### 注意事項
111 #### チャンネルについて
112 チャンネルは、インストールするパッケージと含めるファイルを切り替えます。  
113 この仕組みにより様々なバージョンのAlter Linuxをビルドすることが可能になります。  
114 2021年5月07日現在でサポートされているチャンネルは以下のとおりです。  
115 完全なチャンネルの一覧は`./build.sh -h`を参照して下さい。  
116
117 名前 | 目的
118 --- | ---
119 basic | 様々なチャンネルの基礎となるGUIの無いチャンネル
120 cinnamon | 多くのアプリケーションを備えた豪華なシナモンデスクトップのチャンネル
121 gnome | カスタマイズされたGnomeデスクトップ環境のチャンネル
122 i3 | i3とカスタマイズ可能なpolybarを搭載したrelengを除いて最も軽量なチャンネル
123 lxde | LXDEと最小限のアプリケーションのみが入っている軽量なチャンネル
124 plasma | PlasmaとQtアプリを搭載した現在開発中のチャンネル
125 releng | 純粋なArchLinuxのライブ起動ディスクをビルドできるチャンネル
126 serene | Serene Linuxを移植したチャンネル
127 xfce | デスクトップ環境にXfce4を使用し、様々なソフトウェアを追加したデフォルトのチャンネル
128 xfce-pro | xfceチャンネルのウィンドウマネージャを変更し、多くのソフトを追加したチャンネル
129
130
131 #### カーネルについて
132 `i686`アーキテクチャと`x86_64`アーキテクチャでは共にArchLinuxの公式カーネルである`linux`や`linux-lts`、`linux-zen`をサポートしています。  
133 また`x86_64`では公式カーネルに加えて以下ようなカーネルをサポートしています。  
134 カーネルの説明は[ArchWiki](https://wiki.archlinux.jp/index.php/%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB)を引用しています。  
135 AlterISO3からは非公式なカーネルはyayによりコンパイル、インストールされます。カーネルのコンパイルに時間がかかる場合が有るので注意してください。  
136 この一覧に無いカーネルもサポートしています。完全な一覧は`./build.sh -h`を参照して下さい。  
137
138 名前 | 特徴
139 --- | ---
140 ck | linux-ck にはシステムのレスポンスを良くするためのパッチが含まれています。
141 lqx | デスクトップ・マルチメディア・ゲーム用途に Debian 用の設定と ZEN カーネルソースを使ってビルドされたディストロカーネル代替
142 rt | このパッチを使うことでカーネルのほとんど全てをリアルタイム実行できるようになります。
143 zen-letsnote | Let's Noteでサスペンドの問題が発生しないようにパッチを当てた`linux-zen`カーネル(Alter Linux独自)
144
145 ##### 注意
146 `-k`のオプションは必ず`linux-foo`の`foo`の部分のみを入れてください。例えば`linux-lts`の場合は`lts`が入ります。
147
148
149 #### 圧縮方式について
150 圧縮方式と詳細のオプションは`mksquashfs`のヘルプを参照してください。
151 2019年2月12日現在で、`mksquashfs`が対応している方式とオプションは以下の通りです。
152
153 ```
154 gzip
155     -Xcompression-level <compression-level>
156     <compression-level> should be 1 .. 9 (default 9)
157     -Xwindow-size <window-size>
158     <window-size> should be 8 .. 15 (default 15)
159     -Xstrategy strategy1,strategy2,...,strategyN
160     Compress using strategy1,strategy2,...,strategyN in turn
161     and choose the best compression.
162     Available strategies: default, filtered, huffman_only,
163     run_length_encoded and fixed
164 lzma (no options)
165 lzo
166     -Xalgorithm <algorithm>
167     Where <algorithm> is one of:
168         lzo1x_1
169         lzo1x_1_11
170         lzo1x_1_12
171         lzo1x_1_15
172         lzo1x_999 (default)
173     -Xcompression-level <compression-level>
174     <compression-level> should be 1 .. 9 (default 8)
175     Only applies to lzo1x_999 algorithm
176 lz4
177     -Xhc
178     Compress using LZ4 High Compression
179 xz
180     -Xbcj filter1,filter2,...,filterN
181     Compress using filter1,filter2,...,filterN in turn
182     (in addition to no filter), and choose the best compression.
183     Available filters: x86, arm, armthumb, powerpc, sparc, ia64
184     -Xdict-size <dict-size>
185     Use <dict-size> as the XZ dictionary size.  The dictionary size
186     can be specified as a percentage of the block size, or as an
187     absolute value.  The dictionary size must be less than or equal
188     to the block size and 8192 bytes or larger.  It must also be
189     storable in the xz header as either 2^n or as 2^n+2^(n+1).
190     Example dict-sizes are 75%, 50%, 37.5%, 25%, or 32K, 16K, 8K
191     etc.
192 zstd
193     -Xcompression-level <compression-level>
194     <compression-level> should be 1 .. 22 (default 15)
195 ```