$30 off During Our Annual Pro Sale. View Details »

OSC2014do NetBSD Teokure liveimage

OSC2014do NetBSD Teokure liveimage

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

Izumi Tsutsui

June 15, 2014
Tweet

More Decks by Izumi Tsutsui

Other Decks in Programming

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 等々