Slide 1

Slide 1 text

NetBSDておくれLive Imageの 紹介と解説 オープンソースカンファレンス2014北海道 謎マシンネタじゃなくてすいません Izumi Tsutsui [email protected]

Slide 2

Slide 2 text

NetBSDておくれLive Image http://www.ceres.dti.ne.jp/tsutsui/netbsd/liveimage/

Slide 3

Slide 3 text

Live Image とは  Live CD の USBメモリ/エミュレータ版 USBメモリなどに書き込んでブート または エミュレータ用ディスクとしてブート すれば 「それなりの環境」 でNetBSDが起動するディスクイメージ

Slide 4

Slide 4 text

使い方

Slide 5

Slide 5 text

ておくれ NetBSD [検索]

Slide 6

Slide 6 text

イメージ ダウンロード

Slide 7

Slide 7 text

書き込みツール Rawrite32

Slide 8

Slide 8 text

Rawrite32 インストール

Slide 9

Slide 9 text

Rawrite32 実行

Slide 10

Slide 10 text

USBメモリ書き込み

Slide 11

Slide 11 text

USBメモリ起動

Slide 12

Slide 12 text

Welcome to teokure!

Slide 13

Slide 13 text

Firefoxも日本語で使えます

Slide 14

Slide 14 text

mikutterも動きます

Slide 15

Slide 15 text

mozcで日本語も打てます

Slide 16

Slide 16 text

簡単!! ✌('ω' ) ✌ 三✌('ω')✌三( 'ω') ✌ ✌

Slide 17

Slide 17 text

そんなの動いて当たり前ですか? ……NetBSDだと、 素のインストール状態から ここまで動くようにするのは 結構大変なのです J( 'ー`)し

Slide 18

Slide 18 text

Live Image 使用例 (1)  NetBSDのハードウェアサポート確認用 ・手持ちのPCでNetBSDが起動するか ・お友達のPCでNetBSDが(略 ・中古店の展示PCでNetBSDが(略

Slide 19

Slide 19 text

Live Image 使用例 (2)  お手持ちのNetBSDマシンのレスキュー用 https://twitter.com/isaki68k/statuses/176479549599662080

Slide 20

Slide 20 text

Live Image 使用例 (3)  mlterm の NetBSD での動作確認用 mlterm 3.3.6 の README より

Slide 21

Slide 21 text

Live Image 応用例  実機インストールでの環境構築への応用 Live Image の作成を自動化する ⇒アプリインストールと設定も自動化 ⇒実機での環境設定も自動化?

Slide 22

Slide 22 text

インストール実演デモ  ネットブックにインストールしてみます MSI U135DX ・2010年発売 ・Win7 Starter ・Atom N455 1.66GHz ・メモリ DDR3 1GB ・SSD 256GB(換装済) ・10インチ 1024x600

Slide 23

Slide 23 text

インストール実演デモ うまく進行していれば mikutterからツイートするところまで 動いているはずです……J( 'ー`)し

Slide 24

Slide 24 text

Live Image の作り方 ①クリーンインストール相当の ファイルシステム作成 ②起動可能なハードディスク形式作成 ③バイナリパッケージのインストールと 各種設定およびアカウント作成 過去のOSC2012北海道での発表資料もご覧ください http://www.ceres.dti.ne.jp/tsutsui/osc12do/NetBSD-cross-liveimage.html

Slide 25

Slide 25 text

Live Image の作り方解説 ①クリーンインストール相当の ファイルシステム作成 ②起動可能なハードディスク形式作成 ③バイナリパッケージのインストールと 各種設定およびアカウント作成

Slide 26

Slide 26 text

ファイルシステム作成  makefs(8)コマンド を使用 ・CD用の mkisofs(8) と同様のツール ⇒指定したディレクトリの中身をイメージ化 ・クロスビルドツールとして開発 ・iso9660, ffs, msdosfsにも対応 (msdosfs対応は -current のみ)

Slide 27

Slide 27 text

makefsでのイメージ作成  展開して実行するだけ ・base.tgz 他のバイナリセットを展開 % tar zxf base.tgz ... ・パラメータ指定して makefs(8) 実行 % makefs -M 4g -B le image.root targetroot とか

Slide 28

Slide 28 text

イメージ作成時の問題点(1)  ファイルのパーミッションは? ・mkisofsは実ファイルの uid/gid 使用 ⇒rootで実行しないといけない ・makefs(8) では各ファイルの属性を specファイルをオプションで指定可 ・NetBSDのビルドシステムでは ビルド時に属性を記録したspecも作成 ⇒ /etc/mtree/set.* にあります

Slide 29

Slide 29 text

イメージ作成時の問題点(2)  /dev 以下のデバイスノードは? ・mkisofs では実際のノード作成が必要 ⇒これも rootで実行しないといけない ・makefs(8) ではデバイスノードも specファイルをで指定可 ・NetBSDの MAKEDEV(8)は makefs(8)用の specファイル出力オプションあり % sh MAKEDEV -s >> spec とかするだけ

Slide 30

Slide 30 text

Live Image の作り方解説 ①クリーンインストール相当の ファイルシステム作成 ②起動可能なハードディスク形式作成 ③バイナリパッケージのインストールと 各種設定およびアカウント作成

Slide 31

Slide 31 text

ハードディスクの構成 MBR 空き NetBSD root パーティション (FFS) swap パーティション disklabel ブートローダ fdiskパーティションテーブル (歴史的シリンダ境界) NetBSDパーティション  いわゆる ID 169 (0xf9)

Slide 32

Slide 32 text

fdiskパーティションテーブル MBR 空き ・fdisk(8) コマンド ⇒build toolにあり % fdisk -f -u \ -b 487/255/63 -0 -a \ -s 169/2048/7821312 \ -i -c usr/mdec/mbr \ -F image.mbr 後ろのいらない部分はdd(8)で削除

Slide 33

Slide 33 text

ffsパーティション ・makefs(8) 先ほどの説明通り ・disklabel(8) ・installboot(8) それぞれイメージ先頭に書き込み ⇒いずれもbuild toolにあり NetBSD root パーティション (FFS) disklabel ブートローダ

Slide 34

Slide 34 text

swapパーティション ・dd(8) するだけ % dd if=/dev/zero \ of=image.swap \ count=1048576 swap パーティション

Slide 35

Slide 35 text

イメージ合成 ・何も考えずに cat(8) で合体 % cat \ image.mbr \ image.root \ image.swap \ >> liveimage.fs MBR 空き NetBSD root パーティション (FFS) swap パーティション disklabel ブートローダ

Slide 36

Slide 36 text

すでにあるコマンドで シェルスクリプト書いて ごそごそしてるだけ ヽ('ω')ノ三ヽ('ω')ノ FreeBSD は ちゃんとコマンド作ったみたいです

Slide 37

Slide 37 text

Live Image の作り方解説 ①クリーンインストール相当の ファイルシステム作成 ②起動可能なハードディスク形式作成 ③バイナリパッケージのインストールと 各種設定およびアカウント作成

Slide 38

Slide 38 text

インストール後の設定  なぜOSインストールとは別に設定するのか ・makefs にはパーミッション情報が必要 ・Live Image固有な方法だと応用できない ・通常インストールで使うコマンドだけで インストールしたい ⇒エミュレータ(QEMU)上で各種設定

Slide 39

Slide 39 text

設定する内容 ①バイナリパッケージインストール pkg_add で必要なパッケージを列挙 ②/etc 以下の各種設定ファイルの修正 /etc/rc.conf , /etc/ttys 等々 ③各種アプリのデフォルト設定 Firefoxの日本語設定 等 ④ユーザーアカウント作成 useradd(8) コマンドを使用 ~/.xsession 等の設定ファイルはテンプレを用意

Slide 40

Slide 40 text

QEMU実行  QEMU実行画面

Slide 41

Slide 41 text

イメージ設定の自動化 ①QEMU上でコマンドをポチポチ打つ 超めんどくさい。打ち間違えるとやり直し。 ②設定用シェルスクリプトを書く これでイメージをひとつ作るだけなら簡単に。 でも amd64/i386, エミュ/USB等 複数作るのは大変。 ③スクリプト自動起動イメージを作る HDD2に インストールターゲットのイメージ HDD3に パッケージと設定ファイル入りのイメージ HDD1で mount + chroot して設定スクリプト起動

Slide 42

Slide 42 text

全自動設定スクリプトon QEMU  i386 USB用イメージ pkg_add実行中画面 ⇒全自動イメージ作成スクリプトを叩いて 1時間放置すれば5種類のイメージが完成

Slide 43

Slide 43 text

日本語環境設定  Wnnの時代から20年以上が経ちましたが ・最初の Live Image は scim + anthy ・2012年3月から ibus + anthy scimがあまりに調子悪いので(´・ω・`) ・2013年から pkgsrc に入った mozc に ⇒pkgsrc-2013Q4から ibus が 1.5 に

Slide 44

Slide 44 text

ibus 1.5 問題  1月のNetBSD 6.1.2リリースを機に調査 ぐぐってみると、 ubuntu 13.10 では ibus 1.5 に変わったことで いろいろとあったらしい?

Slide 45

Slide 45 text

blog その1 http://cpplover.blogspot.jp/2013/10/ibus-15.html

Slide 46

Slide 46 text

なにかしら設計仕様上の問題がある?

Slide 47

Slide 47 text

blog その2 http://blog.goo.ne.jp/ikunya/e/995b1558ed787b64f770a5ef3498d0c2

Slide 48

Slide 48 text

デスクトップ環境依存の問題がある? 使い勝手の問題? ibusをやめて fcitx にすべきなの?

Slide 49

Slide 49 text

blog その3 http://mshio.b.sourceforge.jp/2013/10/20/about_ibus_1-5/

Slide 50

Slide 50 text

ちゃんと使えてる人もいる? 設定方法がややこしいだけ?

Slide 51

Slide 51 text

とりあえず NetBSD 6.1.2版の Live Imageを作ってみて 試してみる

Slide 52

Slide 52 text

ibus 1.5 初回トライ結果 ・ぐぐったページを見ながらやったけれど 何を押しても日本語モードにならない? ・mozc の設定もうまくできていない? ・なんか ibus-ui-gtk3.core とかできてる

Slide 53

Slide 53 text

設定が悪いのか バイナリがおかしいのか よーわからなくて挫折 ('A`)

Slide 54

Slide 54 text

ibus 1.5 再チャレンジ  4月: NetBSD 6.1.4 + pkgsrc-2014Q1 ibus の新しいバージョンも出ていたので OSunC2014香川の発表 が終わった後に再び調査

Slide 55

Slide 55 text

Google結果 その1 http://ja.opensuse.org/IBus

Slide 56

Slide 56 text

ibusは常に起動しっぱなしで mozcのキー設定により 日本語/直接入力を切り替えれば いいらしい?

Slide 57

Slide 57 text

Google結果 その2 http://nyaruru.hatenablog.com/entry/2014/01/02/120515

Slide 58

Slide 58 text

ibusは常に起動しっぱなしなので 起動直後に直接入力にするために mozc にパッチが必要らしい? ※最新のmozc 1.15.1785.102 ではパッチ不要です

Slide 59

Slide 59 text

さらに ibus デバッグ (gdb) bt #0 0xbaf3b9b3 in g_logv () from /usr/pkg/lib/libglib-2.0.so.0 #1 0xbaf3ba6e in g_log () from /usr/pkg/lib/libglib-2.0.so.0 #2 0xbb69c95f in _gdk_x11_display_error_event () from /usr/pkg/lib/libgdk-3.so.0 #3 0xbb6a5553 in gdk_x_error () from /usr/pkg/lib/libgdk-3.so.0#4 0xbb27ebca in _XError () from /usr/X11R7/lib/libX11.so.7 #5 0xbb255150 in ?? () from /usr/X11R7/lib/libX11.so.7 #6 0xbb255192 in ?? () from /usr/X11R7/lib/libX11.so.7 #7 0xbb255bd4 in _XReply () from /usr/X11R7/lib/libX11.so.7 #8 0xbb20973b in ?? () from /usr/X11R7/lib/libXi.so.7 #9 0xbb20998b in XIGrabKeycode () from /usr/X11R7/lib/libXi.so.7 #10 0x0805489a in keybinding_manager_grab_keycode (modifiers=64, keyval=32, display=, self=0xbacfa6c8) at keybindingmanager.c:922 #11 keybinding_manager_bind (self=0xbacfa6c8, keysym=32, modifiers=GDK_MOD4_MASK, handler=0x80570f3 <___lambda30__keybinding_manager_keybinding_handler_func>, handler_target=0xbaca80b8) at keybindingmanager.c:217 #12 0x08056d69 in panel_keybinding_manager_bind ( accelerator=0xba4c0470 "space", keybinding_manager=0xbacfa6c8, self=0xbaca80b8) at panel.c:943 #13 panel_bind_switch_shortcut (self=0xbaca80b8) at panel.c:1007 #14 0x08059527 in panel_load_settings (self=0xbaca80b8) at panel.c:1781

Slide 60

Slide 60 text

原因はよくわからないけれど 「次の入力メソッド」 の設定を空にすると落ちない?

Slide 61

Slide 61 text

ておくれ日本語入力  動いた わーい? というわけで、ようやく実用になる環境に

Slide 62

Slide 62 text

まとめ

Slide 63

Slide 63 text

Live Image作成効果 ・Live Imageを定期的に作る ⇒世間のアプリ動向を知るようになる ・楽にビルドできる方法を考える ⇒設定やスクリプトが進化していく ・実際に使ってもらえたりする ⇒なんかうれしい!! ✌('ω' ) ✌ 三✌('ω')✌三( 'ω') ✌ ✌

Slide 64

Slide 64 text

結論・謝辞 ・プレゼンできる環境まで即作成可能 ・常に新しい環境を知ることも大事 ・各種パッケージメンテナの方に感謝! ・おばたさん: ibus関連, ruby gem関連, mikutter 等々 ・小野寺さん:firefox一式, mozc, libreoffice4 等々