osgeo-liveをハックする

33
OSGeo-Live をハックする OSC2015 Hokkaido 2015年6月13日(土) 15:15~ 札幌コンベンション・センター 羽鳥 健太郎

Upload: kentaro-hatori

Post on 21-Aug-2015

22 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: OSGeo-Liveをハックする

OSGeo-Live をハックする

OSC2015 Hokkaido

2015年6月13日(土) 15:15~札幌コンベンション・センター

羽鳥 健太郎

Page 2: OSGeo-Liveをハックする
Page 3: OSGeo-Liveをハックする

3

OSGeo-Live日本語化の背景

● SlackwareベースのLive版の日本語化● Slax/Porteus

● Debian/UbuntuベースのLive版に挑戦● OSGeo-Live7.9(ちょっと古い)● 日本語入力ができない● Remastersysで自動化してるのか● Ubuntuで手動方法が解説● トライ&エラーでやってみたら成功● 日本語環境でOSGeo-Live7.9が利用

Page 4: OSGeo-Liveをハックする

4

OSGeo-Live8.0がリリース

Page 5: OSGeo-Liveをハックする
Page 6: OSGeo-Liveをハックする

6

OSGeo-Live8.0での印象

● 各国語対応の数が増えた● 英語表記の部分が増えた● 起動直後の言語&キーボード選択が面倒● やっぱり日本語入力できない● 日本語フォントが間延びして美しくない

Page 7: OSGeo-Liveをハックする

7

使えるように早速

OSGeo-Live8.0を日本語化

Page 8: OSGeo-Liveをハックする

8

基本的な作業工程

1. 必要なツールのインストール

2. CDの.isoの内容を抽出

3. デスクトップ・システムを抽出

4. 準備とchroot

5. カスタマイズ

6. デフォルトのキーボードの変更

7. クリーンアップ

8. gfxbootのデフォルト言語を変更

9. isoイメージの作成

Page 9: OSGeo-Liveをハックする

9

必要なツールのインストール

● 作業環境はできるだけベースと同じ● OSGeo-Live8.0:Lubuntu14.04LTS● 自分の環境:Ubuntu14.04LTS(64bit)

● 必要なパッケージをインストール

$ sudo apt-get install squashfs-tools genisoimage

Page 10: OSGeo-Liveをハックする
Page 11: OSGeo-Liveをハックする

11

いい仕事をしたなと思ったら

OSGeo-Live8.5がリリース

Page 12: OSGeo-Liveをハックする
Page 13: OSGeo-Liveをハックする

13

再び使えるように

OSGeo-Live8.5を日本語化

Page 14: OSGeo-Liveをハックする

14

必要なツールのインストール

● 作業環境はできるだけベースと同じ● OSGeo-Live8.5:Lubuntu14.04.02LTS● 現在の環境:Ubuntu15.04(64bit)

● 必要なパッケージはインストール済

$ sudo apt-get install squashfs-tools genisoimage

あとはやるだけ (のはず)

エンジンがかからない...

Page 16: OSGeo-Liveをハックする

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

Page 17: OSGeo-Liveをハックする

17

デスクトップ・システムを抽出

● 圧縮してあるファイルを解凍

$ sudo unsquashfs mnt/casper/filesystem.squashfs

$ sudo mv squashfs-root edit

Page 18: OSGeo-Liveをハックする

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

Page 19: OSGeo-Liveをハックする

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

ここでまさかのエラー

Page 20: OSGeo-Liveをハックする

20

構築するプラットフォームの変更

● 現在の環境● OSGeo-Live8.5:Lubuntu14.04.02LTS● プラットフォーム:Ubuntu15.04(64bit)

● 環境を合わせる● OSGeo-Live8.5:Lubuntu14.04.02LTS● プラットフォーム:Lubuntu14.04.02LTS

Page 21: OSGeo-Liveをハックする

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

Page 22: OSGeo-Liveをハックする

22

カスタマイズ(3)

● 次のディレクトリ以下にある.desktopまたは.directoryファイルを日本語訳を追加● /etc/skel/Desktop● /usr/share/applications● /usr/share/desktop-directories

# vi hoge.desktop

# vi hoge.directory

Name[ja]=hogehoge を追加

注)あまりに多いのでちょっと手抜き (^^ゞ

Page 23: OSGeo-Liveをハックする

23

カスタマイズ(4)

● /local/share/osgeo-desktop/welcome_message-ja.txt に日本語訳を追加

# vi welcome_message-ja.txt

注)Google翻訳にほとんど手伝ってもらいました (^^ゞ

● /etc/skel にもあるのでとりあえずコピー

Page 24: OSGeo-Liveをハックする

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

Page 25: OSGeo-Liveをハックする

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

Page 26: OSGeo-Liveをハックする

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

Page 27: OSGeo-Liveをハックする

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 -

Page 28: OSGeo-Liveをハックする

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

Page 29: OSGeo-Liveをハックする

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

Page 30: OSGeo-Liveをハックする

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

Page 31: OSGeo-Liveをハックする

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 .

Page 32: OSGeo-Liveをハックする
Page 33: OSGeo-Liveをハックする

33

参考文献

● LiveCD Customizationhttps://help.ubuntu.com/community/LiveCDCustomization