試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ReactOSの日本語フォントの追加と設定をソースビルドをすることなく行ってISOイメージを作り直す(Cabinet更新とCDイメージ作成)

  1. Cabinetの更新
    1. 一時ディレクトリ作成と、既存のCabinetファイルからの展開
    2. Cabinetファイルに含めるファイルリストを編集
    3. フォントのコピー
    4. cabmanによるCabinetの作成
    5. 一時ディレクトリの削除
  2. ISOイメージの作成
  3. 終わりに

Cabinetの更新

幾つかの注意点がある。全て重要項目。

  • cabmanは、Cabinet作成時、ReactOSのソースツリーに含まれるreactos.dffというファイルの情報を使用するが、これはソースツリーから取ってくるしかない*1
  • コピーしてきたreactos.dffには、ソースツリーにおけるパス情報(ディレクトリ名を含む)が含まれているが、1つの一時ディレクトリに全て展開されるため、ファイル名部分のみにする必要がある
  • cabmanは、一度reactos.infを作成するだけのために-Iオプション付きで実行した後、予約領域にこのreactos.infを含めるように-RCオプションで指定する

一時ディレクトリ作成と、既存のCabinetファイルからの展開

$ pwd
/tmp/work
$ ls
autorun.inf  icon.ico  image1.bin  loader  reactos  readme.txt
$ mkdir tmp; cd tmp/
$ cabextract ../reactos/reactos.cab
$ sed -e 's/^[a-z].*\\\(.*\)/\1/' [ReactOSのソースツリー]/boot/bootdata/packages/reactos.dff > reactos.dff

最後のsedで、Cabinetファイルに入れるファイルのリストの中でディレクトリ名部分を消している。

Cabinetファイルに含めるファイルリストを編集
日本語フォントをCabinetファイルに含めるように、リスト(reactos.dff)に追加する。

$ sed -i 's/\(; Media\)/\1\r\nipag-mona.ttf                           3\r\nipagp-mona.ttf                          3\r\nipagui-mona.ttf                         3\r\nipam-mona.ttf                           3\r\nipamp-mona.ttf                          3/' reactos.dff

差分形式*2で表記すると

--- reactos.dff
+++ reactos.dff.new
@@ -330,6 +330,11 @@
 wmilib.sys                              2

 

 ; Media

+ipag-mona.ttf                           3

+ipagp-mona.ttf                          3

+ipagui-mona.ttf                         3

+ipam-mona.ttf                           3

+ipamp-mona.ttf                          3

 DejaVuSans.ttf                          3

 DejaVuSans-Bold.ttf                     3

 DejaVuSans-BoldOblique.ttf              3

となる。

フォントのコピー
該当する日本語フォントファイルをコピーする。コピー元は環境によって異なるので参考として。

$ cp /usr/share/fonts/ipamonafont/*.ttf .

cabmanによるCabinetの作成
下の流れで作成し、既存のCabinetファイルを上書きする。

$ cabman -C reactos.dff -I > /dev/null
$ cabman -C reactos.dff -RC reactos.inf
ReactOS Cabinet Manager - Version 0.9
(中略)
Adding winver.exe
Adding write.exe
Adding lake.bmp

Done.
$ mv reactos.cab ../reactos/ -f

一時ディレクトリの削除

$ cd ../
$ rm tmp/ -fr

ISOイメージの作成

最後にmkisofsでイメージを作成。このCDイメージを使用して日本語ロケールでインストールを行うことで、日本語フォントが表示されることを確認済み。

$ mkisofs -b image1.bin -V 'ReactOS Foundation' -hide image1.bin -no-emul-boot -o ReactOS.iso .

image1.binの部分はブートイメージファイルの名前に合わせる。

終わりに

ソースをビルドすることなくCDイメージの(特にCabinetファイルの)中身を変更するのは面倒で、ビルドするわけでもないのにソースツリーの中のファイルを使用する部分などは、改善の余地がある(cabmanは必要なので仕方ない)。
日本語フォントを欧文フォントのファイル名で上書きしてしまうほうが手っ取り早い気もするが...

使用したバージョン:

  • ReactOS 0.3.3, 0.3.4 / cabman 0.9
  • cabextract 1.2
  • mkisofs 2.01.01a34 (cdrtools 2.01.01_alpha34)

*1:展開されたファイルの一覧から作成することもできなくはないが、面倒

*2:「@@」の次の行から行末に「CR」文字がある