Puppy Linuxで教育用教材作り

大学院の講義で量子化学に関する話をし最後に実際にパソコンで量子計算を行わせレポートを提出させることを行っています。今年は新型コロナウイルスの影響もあり講義に関して不透明な状態が続いていますが、そんなときにLinux環境を与えて課題を行わせるのにポイントとなる方法論を自分自身の備忘録としてもまとめておこうと思います。

以前こちらのホームページでもPuppy Linuxを使ってLiveCDを配布して課題を与えていることを書きましたが、日本語版のPuppyのバージョンアップが行われずに、セキュリティー上さすがに良くないと考えていましたが、よく調べてみると、最近は海外版のPuppy Linuxに日本語用のバッチプログラムを追加して使用する方式に変わっておりました。そこで、新しいPuppy Linuxで大学院講義用の課題を作成したのですが、少々手こずったので方法論をまとめておきます。

カスタマイズしたPuppy Linux

まず、前回がすごく簡単にLiveCDを作成できたので安直に考えていたのですが、無料の量子化学ソフトGAMESSなどをインストールして、課題用のインプットファイルも作成し、オリジナルのLinuxを作るのですから、やっぱり高度なことをしていたのでした。ここまで読んでPuppy Linuxとは何か知らない方に簡単に説明すると、軽量なLinuxディストリビューションの1つで容量も小さいのでCDなどで簡単に配布でき、カスタマイズも簡単に行えます。つまり、教育用に配布する場合に最適なLinuxといえるでしょう。

Puppy Linuxのホームページから64bit版の新しい “Ubuntu Bionic 64” をダウンロードして作業用のUSBへとインストールしました。日本語化するためには “lang_pack_jp-2.1.sfs” を探してきて追加したり、GAMESSをインストールするために開発環境の “devx_bionicpup64_8.0.sfs” も入れてコンパイルして・・・まずはUSBでPuppy Linuxの実習環境を作成します。

ここで、「パピーシンプルCDリマスター」というプログラムを走らせればオリジナルのカスタマイズされたPuppyが完成するのですが、つまずきました。結局は、作業用のディレクトリーとして用意した別のUSBのフォーマットがntfsだったりfat16,fat32だったのがまずかったみたいで、ext2,ext3,ext4のディレクトリーで作業すると動きました。しかし、これに気付くのに時間がかかり、より細かなことができるこちらのページを参考に手動でLive CDを作成しました。

作業用にext2,ext3,ext4のいずれかでフォーマットしたUSBを準備してsdc1などとしてマウントさせます。そのディレクトリーで

cd /mnt/sdc1
mkdir puppyfilesystem

このディレクリーにカスタマイズしたPuppy Linuxのファイルシステムを構築していきます。まずは、ベースとなるファイル群をコピーします。

cp -a  /initrd/pup_ro2/* puppyfilesystem
cp -a /initrd/pup_ro1/* puppyfilesystem

pup_ro2の方には最初にダウンロードした”Ubuntu Bionic 64″に含まれるpuppy_bionicpup64_8.0.sfsに収録されているファイルが入っています。pup_ro1の方は “cat /etc/rc.d/PUPSTATE” などのコマンドで現在動いているPuppyの状態を確認し、PUPMODE=13だったのでpup_ro1を選びましいたが、PUPMODE=12であればpup_rwと変更して下さい。こちらの方にはカスタマイズして新たに保存したファイルなどが含まれます。別の言い方をするとPuppy LinuxをUSBなどでカスタマイズした際に保存されるpupsaveファイル(.3fs)の中身となります。

これだけだと日本語フォントなどのファイルとして追加した “lang_pack_ja-2.1.sfs” が含まれないため、こちらもコピーして追加します。GUIでファイルをクリックして中身を見れる状態にして(マウントして)

cp -a /mnt/+mnt++sdc1+lang_pack_ja-2.1.sfs/* puppyfilesystem

エラーが1件出ましたが、おこまいなしに進めました。さらに、教育用として配布するLive CDでパソコンの環境を変えないようにpupsaveファイルを作成しないように変更しています。具体的には、コピーしたファイルの中で /mnt/sdc1/puppyfilesystem/etc/profile を編集し、最後に次の1行を加えました。

sed -i "s/PUPMODE=5/PUPMODE=99" /etc/rc.d/PUPSTATE

Live CDとして立ち上げたときのPUPMODE=5に対して、強制的に保存しないようにPUPMODEを上書きしています。ここまで、進めたら、sfsファイルの作成に進みます。

cd /mnt/sdc1
mkdir puppylivediscbuild
mksquashfs puppyfilesystem puppylivediscbuild/puppy-remastered.sfs -noappend

最後の処理は若干時間が掛かりますが、ここまで上手く進められると、puppy-remastered.sfsというカスタマイズしたPuppy Linuxのファイルシステムが出来上がっています。続いて、Live CDを作成するためのファイルをコピーするために “Ubuntu Bionic 64” としてダウンロードした isoファイルをクリックしてマウントさせ

cp -a /mnt/+mnt+home+bionicpup64-8.0-uefi.iso/* puppylivediscbuild/
mv puppylivediscbuild/puppy-remastered.sfs puppylivediscbuild/puppy_bionicpup64_8.0.sfs

カスタマイズしたPuppyをLive CDから読み込ませるために名前を puppy_bionicpup64_8.0.sfs に上書き変更しています。後は、Live CDを作成するだけで

mkisofs -b isolinux.bin -c boot.cat -D -l -R -v -no-emul-boot -boot-load-size 4 -boot-info-table -o "puppy_remaster.iso" puppylivediscbuild

出来上がったpuppy_remaster.isoファイルをCDに焼けば完成です。お疲れ様でした。

雑記