2017年04月14日

カーネルアップグレード後のsgnファイルの扱い。APorteus-XFCE_ja-v17.01.08-x86_64

だいぶまえにやって、もうどうやったか覚えていない
カーネルアップグレード時の不明点。

カーネルは、$ uname -rで見るに、確かにアップグレードされた
けれど、ブートスプラッシュの表示が以前のまま。
アップグレード時の操作抜けで、新しいものに変わらないのか、
ちょっとわからないんだけど、、、。

古い kernel-v4.9.1-3-x86_64.sgn を
kernel-v4.9.6-x86_64.sgnにリネームしたりして、
porteus.cfgのAPPEND行にcheatcodeを追加すればよさげな
記述がkernel-v4.9.1-3-x86_64.sgnの中に書いてあったので、
' sgnfile=kernel-v4.9.6-x86_64.sgn 'を
initrd.xz retry の後ろに挿入したところ、
ブートスプラッシュの表示も
カーネルバージョン通りの表示になった。


創り主のnekoさんがもしご覧になっていたら、
ちょっと教えていただきたいのですが、
kernel.sgnファイルを呼んでいるものの正体は、
initrd.xzでいいのでしょうか。また、
正しい手順でカーネルアップグレードすれば、
新しいkernel.sgnファイルが生成されて、
いちいちcheatcodeで指定しなくても
よかったのでしょうか。

cheatcodeなしで、sgnファイルの名前を
変更しただけでは、システムが起動しなくなりました。
たしかにカーネル更新されたはずなのに、
依然として古いカーネルの名前を呼ぶ側で欲するということは、
ちゃんと更新できていない可能性がありますか。

以上、よろしくお願い申し上げます。


aporteusにご用の方は、
http://forum.porteus.org/viewtopic.php?f=75&t=4997
のページのかなり下のほうへどうぞ。
ビルダーによるiso作成例がありますし、
デスクトップ環境、主要ソフトが選択できるisoビルダー自体も
ダウンロードできます。
二度手間がいやならば、isoビルド例の
http://www.mediafire.com/file/3c2b4evxdvbnglu\
/APorteus-MULT_ja-v17.04.01-x86_64.iso#!
を落とせばいいでしょう。シンプル系の
lxde,e16,openboxのマルチデスクトップ環境が
実現できるisoです。仕上がり状態はいいですよ。


posted by ブログ開設者 at 14:00| Comment(2) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
[ご質問]1.
kernel.xgnファイルを呼んでいるものの正体は、
initrd.xzでいいのでしょうか。
--->
はい。その通りです。
ISO@/porteus/kernel-NNNN.sgnを読んでいるのは
ISO@/boot/syslinux/initrd.xzです。
説明は
ISO@/boot/docs/cheatcodes-ja.txt
に以下の様に記述しました。
-------------------------------
sgnfile=some_name.sgn
識別ファイル名(*.sgn)指定。当指定が無い場合、initram処理を行うinitrd.xz中の
shellファイルlinuxrcにハードコーディングされている値を使用。
モジュール収容源検出の確証に識別ファイルの存在確認をする。
"モジュール収容源/porteus/識別ファイル"
例: sgnfile=porteus-usb.sgn
-------------------------------

直接確認や修正は以下の様に行います。
(1)initrd.xzの展開
% ls
APorteus-MULT_ja-v17.04.12-x86_64.iso
% su
# dISO APorteus-MULT_ja-v17.04.12-x86_64.iso
# ls APorteus-MULT_ja-v17.04.12-x86_64/porteus
base kernel-v4.9.22-1-x86_64.sgn make_iso.sh modules optional rootcopy
# dINIT APorteus-MULT_ja-v17.04.12-x86_64/boot/syslinux/initrd.xz
# ls -1
APorteus-MULT_ja-v17.04.12-x86_64.iso
initrd
# ls -1 initrd/
bin
dev
etc
fatal
init
init_conf
lib
linuxrc
m
memory
mnt
opt
persist
porteus
proc
run
sys
tmp
union
usr
var
# cat initrd/init_conf
SGN_ID=kernel-v4.9.22-1
LIB=usr/lib
SYSTEMDDEF=/usr/lib/systemd/systemd
OVERLAY=

initrd.xzに収容されているコンフィギュinit_confの中で
SGN_ID=kernel-v4.9.22-1を指定しています。
64Bitの場合"-x86_64.sgn"が付き、
"kernel-v4.9.22-1-x86_64.sgn"と言う名の識別ファイルが有るものを対象とします。

[ご質問]2.
正しい手順で...cheatcodeで指定しなくてもよかったのでしょうか。
--->
はい。その通りです。
GUIメニュ--->Kernelビルダー
でISOを指定してそのkernel部分(vmlinuz,000-kernel.xzm)を更新した場合、
initrd.xzのinit_confの内容を書き換え、kernel-NNNN.sgnを置換しています。

[ご質問]3.
古いカーネルの名前を呼ぶ側で欲するということは、
ちゃんと更新できていない可能性がありますか。
--->
ブートスプラッシュの表示は適合した識別ファイル名を表示しています。

「この名前にカーネル版数を使用した為実際のカーネルの版数と誤解を与えています。」

実際のカーネル版数はunameコマンドで得た値です。
ちゃんと更新できているかの判定はこのコマンドで判定して下さい。

[問題]
システムが起動しなくなりました。
--->
原因はinitrd.xzが指定する名前の識別ファイルが存在してなかった為です。
既に対処されている様に、initrd.xzに対しその名前を変更する様に、チートコード
sgnfile=some_name.sgn
で指示する事で変更できます。
又、initrd.xzが指定する名前をその内部に在るコンフィギュinit_conf内容を変える事でも対処できます。
SGN_ID=自分の決めた名前
この場合(64Bit例)
ISO@/porteus/自分の決めた名前-x86_64.sgn
の識別ファイルを設定して置く必要があります。

尚コンフィギュinit_confその他内容の意味は
LIB=usr/libカーネルlib収容位置(slackwareはlib)
SYSTEMDDEF=/usr/lib/systemd/systemd初期起動プロセス(slackwareはinit)
OVERLAY=OVERLAY使用時設定

initrdディレクトリからinitrd.xz作成は
# mkINIT initrd
が使用できます。

以上ご参考に成れば幸いです。
Posted by neko at 2017年04月15日 09:31
わかりやすくまたかみくだいて、
ご説明くださいまして
ほんとうにありがとうございます。
お手数をおかけくださっていることは
まことに恐縮ですが、
おかげさまで理解が一歩進みました。

dINITとmkINITのあることを知ったことが
大いなる収穫です。ドキュメントを
もっとしっかり読まないとだめですね。
拡張子のsdnは、検索すると、
Slax Boot Fileと出ますが、
独特のファイルのようですね。
Posted by ブログ開設者 at 2017年04月16日 08:04
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: