OSC2014do NetBSD Teokure liveimage

OSC2014do NetBSD Teokure liveimage

OSC2014北海道のNetBSDセミナーで発表した
「NetBSDておくれLive Imageの紹介と解説」
のスライドです。

7fe50ce1ac047336d7804e47aec56391?s=128

Izumi Tsutsui

June 15, 2014
Tweet

Transcript

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

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

  3. Live Image とは  Live CD の USBメモリ/エミュレータ版 USBメモリなどに書き込んでブート または

    エミュレータ用ディスクとしてブート すれば 「それなりの環境」 でNetBSDが起動するディスクイメージ
  4. 使い方

  5. ておくれ NetBSD [検索]

  6. イメージ ダウンロード

  7. 書き込みツール Rawrite32

  8. Rawrite32 インストール

  9. Rawrite32 実行

  10. USBメモリ書き込み

  11. USBメモリ起動

  12. Welcome to teokure!

  13. Firefoxも日本語で使えます

  14. mikutterも動きます

  15. mozcで日本語も打てます

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

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

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

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

  20. Live Image 使用例 (3)  mlterm の NetBSD での動作確認用 mlterm

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

  22. インストール実演デモ  ネットブックにインストールしてみます MSI U135DX ・2010年発売 ・Win7 Starter ・Atom N455

    1.66GHz ・メモリ DDR3 1GB ・SSD 256GB(換装済) ・10インチ 1024x600
  23. インストール実演デモ うまく進行していれば mikutterからツイートするところまで 動いているはずです……J( 'ー`)し

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

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

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

    ffs, msdosfsにも対応 (msdosfs対応は -current のみ)
  27. makefsでのイメージ作成  展開して実行するだけ ・base.tgz 他のバイナリセットを展開 % tar zxf base.tgz ...

    ・パラメータ指定して makefs(8) 実行 % makefs -M 4g -B le image.root targetroot とか
  28. イメージ作成時の問題点(1)  ファイルのパーミッションは? ・mkisofsは実ファイルの uid/gid 使用 ⇒rootで実行しないといけない ・makefs(8) では各ファイルの属性を specファイルをオプションで指定可

    ・NetBSDのビルドシステムでは ビルド時に属性を記録したspecも作成 ⇒ /etc/mtree/set.* にあります
  29. イメージ作成時の問題点(2)  /dev 以下のデバイスノードは? ・mkisofs では実際のノード作成が必要 ⇒これも rootで実行しないといけない ・makefs(8) ではデバイスノードも

    specファイルをで指定可 ・NetBSDの MAKEDEV(8)は makefs(8)用の specファイル出力オプションあり % sh MAKEDEV -s >> spec とかするだけ
  30. Live Image の作り方解説 ①クリーンインストール相当の ファイルシステム作成 ②起動可能なハードディスク形式作成 ③バイナリパッケージのインストールと 各種設定およびアカウント作成

  31. ハードディスクの構成 MBR 空き NetBSD root パーティション (FFS) swap パーティション disklabel

    ブートローダ fdiskパーティションテーブル (歴史的シリンダ境界) NetBSDパーティション  いわゆる ID 169 (0xf9)
  32. 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)で削除
  33. ffsパーティション ・makefs(8) 先ほどの説明通り ・disklabel(8) ・installboot(8) それぞれイメージ先頭に書き込み ⇒いずれもbuild toolにあり NetBSD root

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

    swap パーティション
  35. イメージ合成 ・何も考えずに cat(8) で合体 % cat \ image.mbr \ image.root

    \ image.swap \ >> liveimage.fs MBR 空き NetBSD root パーティション (FFS) swap パーティション disklabel ブートローダ
  36. すでにあるコマンドで シェルスクリプト書いて ごそごそしてるだけ ヽ('ω')ノ三ヽ('ω')ノ FreeBSD は ちゃんとコマンド作ったみたいです

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

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

  39. 設定する内容 ①バイナリパッケージインストール pkg_add で必要なパッケージを列挙 ②/etc 以下の各種設定ファイルの修正 /etc/rc.conf , /etc/ttys 等々

    ③各種アプリのデフォルト設定 Firefoxの日本語設定 等 ④ユーザーアカウント作成 useradd(8) コマンドを使用 ~/.xsession 等の設定ファイルはテンプレを用意
  40. QEMU実行  QEMU実行画面

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

    HDD2に インストールターゲットのイメージ HDD3に パッケージと設定ファイル入りのイメージ HDD1で mount + chroot して設定スクリプト起動
  42. 全自動設定スクリプトon QEMU  i386 USB用イメージ pkg_add実行中画面 ⇒全自動イメージ作成スクリプトを叩いて 1時間放置すれば5種類のイメージが完成

  43. 日本語環境設定  Wnnの時代から20年以上が経ちましたが ・最初の Live Image は scim + anthy

    ・2012年3月から ibus + anthy scimがあまりに調子悪いので(´・ω・`) ・2013年から pkgsrc に入った mozc に ⇒pkgsrc-2013Q4から ibus が 1.5 に
  44. ibus 1.5 問題  1月のNetBSD 6.1.2リリースを機に調査 ぐぐってみると、 ubuntu 13.10 では

    ibus 1.5 に変わったことで いろいろとあったらしい?
  45. blog その1 http://cpplover.blogspot.jp/2013/10/ibus-15.html

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

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

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

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

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

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

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

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

  54. ibus 1.5 再チャレンジ  4月: NetBSD 6.1.4 + pkgsrc-2014Q1 ibus

    の新しいバージョンも出ていたので OSunC2014香川の発表 が終わった後に再び調査
  55. Google結果 その1 http://ja.opensuse.org/IBus

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

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

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

  59. さらに 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=<optimized out>, 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 "<Super>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
  60. 原因はよくわからないけれど 「次の入力メソッド」 の設定を空にすると落ちない?

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

  62. まとめ

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

    ) ✌ 三✌('ω')✌三( 'ω') ✌ ✌
  64. 結論・謝辞 ・プレゼンできる環境まで即作成可能 ・常に新しい環境を知ることも大事 ・各種パッケージメンテナの方に感謝! ・おばたさん: ibus関連, ruby gem関連, mikutter 等々

    ・小野寺さん:firefox一式, mozc, libreoffice4 等々