2017年01月27日

kernelビルダー登場。APorteus

最新のaporteusには、
新しく、guiのkernelビルダーが入っています。

Screenshot from 2017-01-27 09-38-59.jpg

試してみました。使ってみた感じは、
ライブusb生成ツールでインストールした
状態を前提にしている、と思います。そして、
カーネル更新というよりは、
カーネルをバージョンアップした
新しいaporteusのisoを生成する、
という感じに近いでしょうかね。

試してみたとはいえ、じぶんの環境に合わせて、
やりたいことしかしていないです。

じぶんとしては、カーネルだけをアップグレードしたいのですが、
システム上の問題として、それを簡単にできるようにするには、
難しい面があるのかもしれません。

手作業で、カーネルのみを更新するには、
kernelビルダーを使って生成されたisoをdISOコマンドで
解凍し、必要なものをいま現に起動している
システムの第一パーティションに反映します。

まず、更新前の第一パーテーションにある、
boot/*.c32 を
解凍した側の/boot内にcpする。
更新前の第一パーテーションにある
boot/syslinux/porteus.cfgを
解凍した側の同じファイルに上書きcpする。
つづいて、逆方向に
解凍した側のboot/ を、更新前のboot/ に上書きcpする。
解凍した側のporteus/ を
更新前のporteus/ に上書きcpする。

これで再起動で、無事環境と設定が完全に
維持された状態で起動しました。

カーネルは、4.9.1-3 → 4.9.6(stable)

□ ワーク削除 にレ点を入れず、
□ 元のinitrd.xzとsng保持 にもレ点を入れず
にやりました。この場合、
カーネルがアップグレード済みのUP.Aporteusのisoは、
ワークディレクトリに出現します。

上書きcpするときなどは、元のディレクトリ、ファイルなどの
バックアップを必ず取ってから行ってください。

ライブusb生成ツールを使って
インストールしてあるデフォルト状態、
つまり、ISO/ にisoの本体が存在する場合、
上記の両方に、レ点を入れて実行すると、isoの差し替え
さらにはそれ以外の更新すべきところまで
すべて自動でやってくれるんだったら、サイコーですけどね。
どうなんでしょうか。


手作業インストールをやるときは、
情報取得を手っ取り早くするために
第一パーティションにporteusディレクトリを
設けて、base/ modules/ optional/ rootconpy/
kernel-v4.9.1-3-x86_64.sgn make_iso.sh などを
生で配置していました。つまり、live-cdにしたとき
と同じ状態するってことですね。

この場合、第一パーティションは、
1.5gbぐらいで設けたほうが無難ですけど。
そのおかげで、
やりたい作業がかなりスピーディにできるようには
なりますね。


posted by ブログ開設者 at 16:31| Comment(2) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
[カーネルビルダー]
早速のご利用ありがとうございます。
Porteusの投稿欄で簡単に機能を述べています。
各機能は繋がりが有りますが、単独使用も想定しました。

1. detect latest kernel version.
この機能だけ使用する場合は
"カーネルビルダー用ディレクトリ"選択
"カーネル版数"選択
が不要です。その他の機能ではこの2つの指定が必須です。

(Porteusで使用できる)カーネルの最新情報を見る事がでいます。
起動して"カーネル版数列"を開くと一覧が見れます。

未だ対象外の4.10の列もあります。
これは試作版でオーバレイFSを使ったPorteusで試す事がでいます。

2. download kernel source (compressed).
3. download and create the AUF patch that corresponds to the kernel version.
4. get prototype config.
"ソース取得"にチェックを入れると、上記2,3、4を行います。

(1)指定した版数の圧縮されたカーネルソースをダウンロードを行い、
そのチェックサムを検証します。

(2)その版数に対応したAUFSのパッチを取得します。
Porteusが採用しているAUFSはカーネルに取り込まれていない為、
必ずパッチを適用する必要があります。
版対応データベースからgit取得し、それを元にパッチを作成します。

(3)その版数に対応した32Bit用と64Bit用両方の
コンフィギュのプロトタイプを取得します。

5. expand kernel source and adapt AUF patch.
コンパイル対象のアーキテクチャ(32Bit/64Bit)を指定して、
"解凍&パッチ適用"にチェックを入れると、
圧縮カーネルソースを展開し、
その展開したディレクトリでAUFSのパッチをpatchコマンドで適用します。
更にこのデレクトリにプロトタイプコンフィギュを".config"としてコピーします。

6. build kernel.
コンパイル対象のアーキテクチャ(32Bit/64Bit)を指定して、
"コンパイル"にチェックを入れると、
カーネルソースを展開したディレクトリで以下のコマンドを実行します。
(COMPARCHは32又は64)

# make oldconfig
# make -j4
# cp arch/x86/boot/bzImage ../vmlinuz
# make modules_install INSTALL_MOD_PATH=../
# make firmware_install INSTALL_MOD_PATH=../
# cp .config ../${COMPARCH}bit.config

カーネルソース展開ディレクトリの上のディレクトリに
コンパイル結果のvmlinuzとモジュール/ファームのlibと、
使用したコンフィギュが${COMPARCH}bit.configとして置かれます。

7. replace kernel of ISO with new one.
"カーネルを更新するISO"を選択すると、
そのISOを分析して対象アーキテクチャ(32Bit/64Bit)と、
000-kernel.xzmの中へlibを入れる場所決めます。
Arch系(APorteus):libは/usr/lib
Slackware系(Porteus):libは/lib

対象版数の対象アーキテクチャ配下のvmlinuzとlibを使用して
ISO中のvmlinuz置換、000-kernel.xzm作り直しをします。

"元のinitrd.xzとsng保持"にチェックを入れると、
ISO中の
/boot/syslinux/initrd.xz
/porteus/XXXX.sgn
を変更しません。

チェックが無いと、この2つが変更されカーネル版数に対応した値に成ります。
(APorteus用)

[オーバレイFS]
4.10の列は"オーバレイFS"指定でコンパイルする事ができます。
カーネルビルダーを端末から起動すると、このチェック項目が出ます。
% export MENUMAKEUPCMD=yes ; guimkKernel

------------------------------------------
以上が詳細説明です。
1.「ライブusb」には特に関係はありません。

2.「カーネルだけをアップグレードしたい」
vmlinuz置換、000-kernel.xzm作り直しが必要です。
BIOS用ブートUSBで第一パーティションに全てが展開されてない場合、
ここにあるvmlinuz置換だけではカーネルのアップグレードはできません。
第二パーティションのISO内の000-kernel.xzm作り直しが必要です。

# ls
APorteus-XXX.iso
# dISO APorteus-XXX.iso
# dXZM APorteus-XXX/porteus/base/000-kernel.xzm
# rm -fr 000-kernel/usr/lib
# cp -a YourNewKernelDIR/lib 000-kernel/usr/
# mkXZM 000-kernel
# rm -fr 000-kernel
# mv 000-kernel.xzm APorteus-XXX/porteus/base/
# cp YourNewKernelDIR/vmlinuz APorteus-XXX/boot/syslinux
# mkISO APorteus-XXX
# rm -fr APorteus-XXX

"元のinitrd.xzとsng保持"にチェックを入れ
"カーネルを更新するISO"を選択して、
UP.APorteus-XXX.isoを得て、
これを第二パーティションへ元のAPorteus-XXX.isoの名前に変えて上かぶせコピーし
新vmlinuzを第一パーティションへ上かぶせコピーした方が簡便かと思います。

3. 独自のチューニングは
"ソース取得"、"解凍&パッチ適用"チェックで一度終了して、
ソース展開ディレクトリー下で

# make menuconfig

カーネルコンフィギュを変えてドライバー等必要なものを設定してから、
再度カーネルビルダーを起動し、
"コンパイル"にチェックを入れてコンパイルを実行するのが簡単だと思います。

4.9.6版を作られた時、AUFDの追加パッチを入れてない場合は、
この"make menuconfig"の代わりに"patch -p1 < 追加パッチ"をして下さい。

尚、"ワーク削除"にチェックして削除してない場合は、
その残っているディレクトリでパッチ適用してからコンパイルを実行するば、
変更のない、既にコンパイル済のものは飛ばされる為、短時間でビルドが終わります。

[追加パッチ]
http://forum.porteus.org/viewtopic.php?f=140&t=6548&start=30#p52448
の記事に説明があります。
又、この追加パッチを入れプロトタイプコンフィギュでビルドしたものがビルド例として
http://forum.porteus.org/viewtopic.php?f=75&t=6568#p52232
に上げてあります。
この記事にあるv4.9.6-2.tar.xz
http://www.mediafire.com/file/bxmad7ply36v317/v4.9.6-2.tar.xz
を展開すると

# xz -dc v4.9.6-2.tar.xz | tar -x
# ls v4.9.6-2/*
v4.9.6-2/a.patch v4.9.6-2/aufs.patch

v4.9.6-2/32:
32bit.config lib vmlinuz

v4.9.6-2/64:
64bit.config lib vmlinuz

追加パッチ v4.9.6-2/a.patch も収容してあります。

以上ご参考に成れば幸いです。
Posted by neko at 2017年01月28日 01:20
もつれた毛糸をほどく気分で読ませていただきました。
,またまた解る部分とそうもいかない部分がありますが、
がんばります。考えてみれば、カーネルモジュールも
入れ替わらないとだめでしたね。
Posted by ブログ開設者 at 2017年01月28日 10:47
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: