nekoさんが開示してくださったスクリプトコマンドは、
非常に良く出来ていることを理解しました。
カーネルビルダーは、言及なさっていないので、
APorteus上限定で動くものとして、考えておきます。
そして、APortesで生成したカーネルを、
他の、たとえば、archbangなどのisoに適用できるかも、
です。
APorteusでは、カーネルを変更したら、
取り替えることになっている、
firemwareの扱いがどうなのか、ちょっとわかりません。
表題の4つのコマンドは、
dSBコマンドは、archbang.iso内の、airootfs.sfsに対して
有効でしたので、カーネルも、カーネルモジュールも
取り替え可能ということですね。
nekoさんの貴重なコメントを投稿欄にも
掲載させていただき、永久保存といたします。
管理人の画面と違って、ブログのご来訪者には、
コメント欄がかなり見にくい状況のようです。
ここから----------------------------------------------------
カーネル更新手順は以下の通りです。
Porteusの"カーネルビルダー"を使用して作成されたもの。
===32Bit===
v5.17-rc5/32/vmlinuz
v5.17-rc5/32/lib/firmware
v5.17-rc5/32/lib/modules
置換。
% su
# ls
slax-32bit-11.2.0.iso v5.17-rc5
#
# dISO slax-32bit-11.2.0.iso
#
# cp v5.17-rc5/32/vmlinuz slax-32bit-11.2.0/slax/boot/
#
# dSB slax-32bit-11.2.0/slax/01-core.sb
# rm -fr 01-core/usr/lib/modules
# cp -a v5.17-rc5/32/lib/modules 01-core/usr/lib/
# mkSB 01-core
# rm -fr 01-core
# mv 01-core.sb slax-32bit-11.2.0/slax/
#
# dSB slax-32bit-11.2.0/slax/01-firmware.sb
# cp -a v5.17-rc5/32/lib/firmware/* 01-firmware/usr/lib/firmware/.
# mkSB 01-firmware
# rm -fr 01-firmware
# mv 01-firmware.sb 01-core.sb slax-32bit-11.2.0/
#
# mv 01-core.sb slax-32bit-11.2.0 01-core.sb slax-32bit-11.2.0-k5.17-rc5
# mkISO slax-32bit-11.2.0-k5.17-rc5
# rm -fr slax-32bit-11.2.0-k5.17-rc5
#
# ls
slax-32bit-11.2.0.iso slax-32bit-11.2.0-k5.17-rc5.iso v5.17-rc5
#
使用ツールはシェルスクリプトです。
===dISO===
DIR=`basename $1 .iso`
rm -fr ${DIR} /tmp/TMP$$
mkdir ${DIR} /tmp/TMP$$
mount -t iso9660 -o loop $1 /tmp/TMP$$ 2>/tmp/err$$
if [ $? -eq 0 ]
then
cp -a /tmp/TMP$$/* ${DIR}/.
cp -a /tmp/TMP$$/.[0-9A-Za-z]* ${DIR}/. 2>/dev/null
umount -f /tmp/TMP$$
if [ $? -ne 0 ]
then
sleep 1
umount -f /tmp/TMP$$
fi
rm -fr /tmp/TMP$$ /tmp/err$$
exit 0
fi
===mkISO===
CDLABEL=Slax
ISO=`basename $1`
ISO=${ISO}.iso
rm -fr $ISO
mkisofs -o ${ISO} -v -l -J -joliet-long -R -D -A ${CDLABEL} -V ${CDLABEL} \
-no-emul-boot -boot-info-table -boot-load-size 4 \
-b slax/boot/isolinux.bin -c slax/boot/isolinux.boot $1
===dSB===
DIR=`basename $1 .sb`
mkdir ${DIR} TMP$$
mount -t squashfs -o loop $1 TMP$$
cp -a TMP$$/* ${DIR}/.
umount -f TMP$$
if [ $? -ne 0 ]
then
sleep 1
umount -f TMP$$
fi
rm -fr TMP$$
===mkSB===
SQ=`basename $1`
SQ=${SQ}.sb
rm -f ${SQ}
mksquashfs $1/ ${SQ} -b 256K -comp xz -Xbcj x86 -noappend
SlaxのISOを弄るご参考に、もし、成れば幸いです。
ここまで----------------------------------------------------
ファイルを作ったら、シバン(#!/bin/sh)を
それぞれのファイルの1行目に書いて、
$ sudo chmod 755 <ファイル名>
をする必要があります。
APorteusと同じ状況にするなら、
$ sudo mv dISO /usr/local/bin/
その場で使うなら、
$ sudo ./dISO slax-32bit-11.2.0-k5.17-rc.iso
同じ場所にないのなら、pathを通して実行です。
眺めているだけでも、かなり勉強になります。
isoの解凍や再構築って、そんなに複雑なことを
していない、unix(linux)コマンドでぜんぶ
できちゃうんだ、なんて。
2022年02月25日
近づいているのか、遠ざかっているのか、不明。python日記-30
2つのlistの同順位の要素同士を掛け算して、
総和を求めるコードの件。いまだにクリア出来ないです。
python外からimportしなくても、
答えは出るようになりました。
入れる数値を1からではなく、2に変えています。
2x5+3x6+4x7= の回答を求める関数です。
これも連続している数字でなくても成り立っちゃいます。
range()とlen()を使って、最終行は、
print(inner_prod((2, 3, 4), (5, 6, 7)))
で、正解が出るようにするのは、
難しいですね。
本コードでの味噌は、zip()でして、
リスト、タプルなどから要素を順番に取り出せる
オブジェクト、と説明があったりします。
それが、リストだ、ということをpythonに
判らせる印のようなもののようです。
あと、forのすぐ後ろも()をつければ、
複数にできることを知りました。
関数というのは、値をどう変えても、
正しい答えが出る雛形です。
コードの上ほうにリストの中身が書けたら、
とてもラクなんですが、それができません。
プログラミングというのは、覚えることは、
比較的少なくて、アタマの使い方、
みたいに思っていました。覚えること、
知らないとできないことの多さに、
少々驚いています。記憶力は、
幼少よりだめなもので。
総和を求めるコードの件。いまだにクリア出来ないです。
python外からimportしなくても、
答えは出るようになりました。
#!/usr/bin/env python3
def inner_prod(li1,li2):
conbined2 = [x * y for (x, y) in zip(li1, li2)]
return sum(conbined2)
print(inner_prod((2, 3, 4), (5, 6, 7)))
入れる数値を1からではなく、2に変えています。
2x5+3x6+4x7= の回答を求める関数です。
これも連続している数字でなくても成り立っちゃいます。
range()とlen()を使って、最終行は、
print(inner_prod((2, 3, 4), (5, 6, 7)))
で、正解が出るようにするのは、
難しいですね。
本コードでの味噌は、zip()でして、
リスト、タプルなどから要素を順番に取り出せる
オブジェクト、と説明があったりします。
それが、リストだ、ということをpythonに
判らせる印のようなもののようです。
あと、forのすぐ後ろも()をつければ、
複数にできることを知りました。
関数というのは、値をどう変えても、
正しい答えが出る雛形です。
コードの上ほうにリストの中身が書けたら、
とてもラクなんですが、それができません。
プログラミングというのは、覚えることは、
比較的少なくて、アタマの使い方、
みたいに思っていました。覚えること、
知らないとできないことの多さに、
少々驚いています。記憶力は、
幼少よりだめなもので。