osgeo-liveをハックする
TRANSCRIPT
OSGeo-Live をハックする
OSC2015 Hokkaido
2015年6月13日(土) 15:15~札幌コンベンション・センター
羽鳥 健太郎
3
OSGeo-Live日本語化の背景
● SlackwareベースのLive版の日本語化● Slax/Porteus
● Debian/UbuntuベースのLive版に挑戦● OSGeo-Live7.9(ちょっと古い)● 日本語入力ができない● Remastersysで自動化してるのか● Ubuntuで手動方法が解説● トライ&エラーでやってみたら成功● 日本語環境でOSGeo-Live7.9が利用
4
OSGeo-Live8.0がリリース
6
OSGeo-Live8.0での印象
● 各国語対応の数が増えた● 英語表記の部分が増えた● 起動直後の言語&キーボード選択が面倒● やっぱり日本語入力できない● 日本語フォントが間延びして美しくない
7
使えるように早速
OSGeo-Live8.0を日本語化
8
基本的な作業工程
1. 必要なツールのインストール
2. CDの.isoの内容を抽出
3. デスクトップ・システムを抽出
4. 準備とchroot
5. カスタマイズ
6. デフォルトのキーボードの変更
7. クリーンアップ
8. gfxbootのデフォルト言語を変更
9. isoイメージの作成
9
必要なツールのインストール
● 作業環境はできるだけベースと同じ● OSGeo-Live8.0:Lubuntu14.04LTS● 自分の環境:Ubuntu14.04LTS(64bit)
● 必要なパッケージをインストール
$ sudo apt-get install squashfs-tools genisoimage
11
いい仕事をしたなと思ったら
OSGeo-Live8.5がリリース
13
再び使えるように
OSGeo-Live8.5を日本語化
14
必要なツールのインストール
● 作業環境はできるだけベースと同じ● OSGeo-Live8.5:Lubuntu14.04.02LTS● 現在の環境:Ubuntu15.04(64bit)
● 必要なパッケージはインストール済
$ sudo apt-get install squashfs-tools genisoimage
あとはやるだけ (のはず)
エンジンがかからない...
16
CDの.isoの内容を抽出
● 作業ディレクトリを作って抽出
$ mkdir livecdtmp
$ cd livecdtmp
$ mv ~/Donwload/osgeo-live-8.5.iso .
$ mkdir mnt
$ sudo mount -o ro,loop osgeo-live-8.5.iso mnt
$ mkdir extract-cd
$ rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
17
デスクトップ・システムを抽出
● 圧縮してあるファイルを解凍
$ sudo unsquashfs mnt/casper/filesystem.squashfs
$ sudo mv squashfs-root edit
18
準備とchroot
● 解凍した環境を変更するための下準備
$ cp /etc/resolv.conf edit/etc/
$ cp /etc/hosts edit/etc/
$ sudo mount --bind /dev/ edit/dev
$ sudo chroot edit
# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts
# export HOME=/root
# export LC_ALL=C
19
カスタマイズ(1)
● パッケージをアップグレードして日本語環境をインストール・設定
# apt-get update
# apt-get upgrade
# apt-get install ibus-mozc im-config
# apt-get font-takao-gothic font-takao-mincho font-takao-pgothic
# locale-gen ja_JP.UTF-8
# update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8
# export LANG=ja_JP.UTF-8
ここでまさかのエラー
20
構築するプラットフォームの変更
● 現在の環境● OSGeo-Live8.5:Lubuntu14.04.02LTS● プラットフォーム:Ubuntu15.04(64bit)
● 環境を合わせる● OSGeo-Live8.5:Lubuntu14.04.02LTS● プラットフォーム:Lubuntu14.04.02LTS
21
カスタマイズ(2)
● 日本語・英語以外の言語パックを削除
# dpkg -l | grep language-pack
# apt-get purge language-pack-hoge
注)言語数が多いので丹念に削除
● 日本語の言語パックを追加
# apt-get install language-pack-gnome-ja
# apt-get install fonlanguage-pack-gnome-ja
# apt-get install firefox-locale-ja
22
カスタマイズ(3)
● 次のディレクトリ以下にある.desktopまたは.directoryファイルを日本語訳を追加● /etc/skel/Desktop● /usr/share/applications● /usr/share/desktop-directories
# vi hoge.desktop
# vi hoge.directory
Name[ja]=hogehoge を追加
注)あまりに多いのでちょっと手抜き (^^ゞ
23
カスタマイズ(4)
● /local/share/osgeo-desktop/welcome_message-ja.txt に日本語訳を追加
# vi welcome_message-ja.txt
注)Google翻訳にほとんど手伝ってもらいました (^^ゞ
● /etc/skel にもあるのでとりあえずコピー
24
カスタマイズ(5)
● usr/local/share/osgeo-desktop/welcome_message.sh を編集
# vi welcome_message.sh
if [ "$LANG" = "ja_JP.UTF-8" ] ; then
gxmessage -file /usr/local/share/osgeo-desktop/welcome_message-ja.txt -title "ようこそ" -center
else
gxmessage -file /usr/local/share/osgeo-desktop/welcome_message.txt -title "Welcome" -center
fi
25
デフォルトのキーボードの変更
● 次の2つのファイルのmodelとlayoutを日本語仕様のために行を追加
# cd /etc/skel
# vi .xinitrc
setxkbmap -layout jp -model jp106
# cd /etc/skel/gisvm/desktop-conf/menus/
# vi xkb-plugin-363.rc
model=jp106
layouts=jp
26
クリーンアップ
● 作成するDVDに余計なファイルを入れないためにクリーンアップ
# apt-get clean
# rm -rf /tmp/*
# rm /etc/hosts
# rm /etc/resolv.conf
# umount /proc || umount -lf /proc
# umount /sys
# umount /dev/pts
# exit
$ sudo umount edit/dev
27
デフォルト言語を変更
● gfxboot でデフォルトの言語を ja に変更
$ sudo apt-get install dpkg-dev uck
$ sudo apt-get source gfxboot-theme-ubuntu gfxboot
$ cd gfxboot-theme-ubuntu*/
$ sudo make DEFAULT_LANG=ja
$ sudo cp -af boot/* ../extract-cd/isolinux/
$ cd -
28
Live用ファイル圧縮の前処理
● filesystem.manifest を生成
$ sudo chmod +w extract-cd/casper/filesystem.manifest
$ sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
$ sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
29
Live用ファイルを圧縮
● filesystem.squashfs を生成
$ sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
$ sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
$ sudo rm extract-cd/casper/filesystem.squashfs
$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -comp gzip -b 131072
30
Live用ファイル圧縮の後処理
● filesystem.size を生成
$ sudo -i
# cd /home/user/livecdtmp
# printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size
# exit
31
isoイメージの作成
● md5sum を生成して isoイメージを作成
$ cd extract-cd
$ sudo rm md5sum.txt
$ sudo find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
$ sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../osgeo-live-8.0-ja.iso .
33
参考文献
● LiveCD Customizationhttps://help.ubuntu.com/community/LiveCDCustomization