川俣 吉広

河豚板とは

河豚板(ふぐいた)はOpenBSDというオペレーティングシステム(Operating System: OS)を基に作成されたライブシステムです。

河豚板は無償で入手・利用することができ、CD-R/CD-RWやUSBメモリに書込んだ河豚板をPCで起動するだけで手軽にOpenBSDを活用することができます。

さらに、河豚板はバラエティに富んだ起動方法をサポートしていますので単にLiveCD/LiveUSBとして使うだけでなく、ネットワークのテスト環境を簡単・迅速に運用したり、電源を投入するだけでアプリケーションソフトを使用できるターンキーシステムを構築したりといった用途にも用いることができます。

この河豚板ガイドでは、記録メディアへの河豚板の書込み方法、起動方法、基本的な使用方法に始まり、進んだ応用のための使用手順や設定方法に至るまで、河豚板を活用するためのノウハウを一通り解説致します。

Unix系OSの使用経験があまりなく、Unixの基本的な事柄について知りたい方は Unixの使い方を調べる をご覧下さい。
LinuxやFreeBSDなど他のUnix系OSの使用経験がありOpenBSDについて詳しく知りたい方は OpenBSDの使い方を調べる を参照願います。


【河豚板ガイド 目次】


【おことわり】
この文書は無保証です。
この文書を作成するにあたり著者は正確な内容と明確な表現を心掛けておりますが、この文書に書かれた内容を実施した結果生じた損害等について著者は責任を負うものではないことを了承のうえ、ご利用下さい。
なおこの文書に関して、不明瞭な表現、不足している部分、事実と異なる点などございましたら、著者のメールアドレス kaw@on.rim.or.jp 宛て、お知らせ下されば幸甚に存じます。

河豚板を作る

この章では、河豚板が起動するCDやUSBメモリを作成する方法を紹介します。

河豚板を使うには、主に2つの方法があります。

1つはCD-RやCD-RWに河豚板を書込み、これを起動する方法で「LiveCD」などと呼ばれます。
もう1つはUSBメモリに書込んだものを起動する方法で、こちらは「LiveUSB」という呼び名があります。

河豚板はLiveCD版とLiveUSB版のどちらを使用しても同じように利用できますが、それぞれ特徴がありますので用途によって使い分けるのがよいと思います。

  • 一般的にはUSBメモリの方がCDよりデータの読み出し速度が早いので、システムやアプリケーションの起動が完了するまでの時間はLiveUSB版の河豚板の方が短かくなる場合が多いです。
  • PCの機種によってはUSBメモリからうまく起動できないものもあります。また、USBメモリからの起動そのものがサポートされていないPCもあります。
    対してCDやDVDのドライブは標準化された規格に準拠して製造されているものが殆どなので、それらはほぼ全て問題なく河豚板が起動します。
  • 河豚板などの「ライブシステム」は、ハードディスクなどにインストールされないため、データを全てメモリ上に保持しています。このため、通常はシステムを終了するとそれまでのデータはすべて消えてしまいます。
    LiveUSB版の河豚板にはデータの保存領域が確保されており、この領域に各種設定、ファイルなどを保存し、次回のシステム起動時に復帰させることができます。
  • 記録メディアの単価はUSBメモリに比べCD-Rなどの光学メディアの方が安いため、同時に多数のマシンで動作させたり、メディアをセットしっぱなしの状態で使う、あるいは大量に作成して配布する、といったような使い方にはLiveCD版の方が向いています。

総じて「動作の確実性や経済性を求めるのであればLiveCD版が、性能や利便性を重視するならLiveUSB版が向いている」と言えます。

【メモ】
LiveCD版とLiveUSB版の両方を同時に使う「いいとこ取り」な使いかたもできます。
このテクニックを使うと、例えば「USB起動に対応していないPCでLiveUSB版の河豚板を使う」ことや「LiveCD版の河豚板でデータの保存と読み込みをする」ことなどもできます。

最初に河豚板を使い始めるには、以下の手順を踏みます;

  1. 河豚板の配布サイトからファイルをダウンロードする
  2. ダウンロードしたファイルは圧縮されているので、それを展開する
  3. 展開したファイルをCD-RやUSBメモリに書き込む

以下、それぞれの手順について説明をします。

河豚板をダウンロードする

dlsite.png

河豚板はフリーソフトウェアです。河豚板の最新版を始めとした全ての版はインターネットで公開され、自由にダウンロードして使用することができます。

河豚板のダウンロードサイトは2つあります。

サイトの内容は同じなので、どちらのサイトからでも同じようにダウンロードできます。
これらのサイトにアクセスすると、右図のような内容が表示されます。

このうち、「FuguIta-」で始まる名前のファイルが河豚板の配布物です。

このファイル名の意味は、次のようになっています。

FuguIta-6.0-amd64-201612251.iso.gz
        --- ----- --------- --- --+->ファイルの圧縮形式です。
         |    |       |      |       ・gz ... gzipコマンドを使って圧縮
         |    |       |      |       ・xz ... xzコマンドを使って圧縮
         |    |       |      +->ファイルの種類です
         |    |       |         ・iso ... CD-R/CD-RW書込み用のISOイメージです
         |    |       |         ・img ... USBメモリ書込み用の生イメージです
         |    |       |
         |    |       +->河豚板のリリース(バージョン)です
         |    |          ・「年月日」「一連番号」 の形式となっています
         |    |          ・一連番号は、一日のうち2つ以上の河豚板を作成した場合、
         |    |            一つづつ増えて行きます
         |    |
         |    +->対応プラットフォームです。
         |       河豚板は現在、i386とamd64の2種類のプラットフォームに対応しています
         |       お使いのPCのCPU型式に対応したものを選択して下さい。
         |
         +->この河豚板の元となっているOpenBSDのバージョンです

作成するのがLiveCDか、あるいはLiveUSBか、PCのがインテル系の32ビットCPU、あるいは64ビットCPUか、そして手元で使えるファイル圧縮/展開ソフトがgzipかxzかでファイルを選択してダウンロードします。

【メモ: 対応アーキテクチャについて】
上で説明したように、使用しているPCのCPUの種類によってi386かamd64のどちらかを選択する必要がありますが、amd64は従来のi386に対して互換性を持つアーキテクチャです。どちらを使ってよいかわからない場合はi386を選択すれば動作させたいPCがamd64のCPUであっても動作します。

【メモ: 圧縮ソフトについて】
ファイル圧縮/展開ソフトはgzip形式に対応したものの方が普及しています。一方、xzはgzipよりも圧縮率が高くファイルがより小さいので、ダウンロード時間が短くて済みます。
Windowsでは、7-Zipなどが両形式のファイル展開に対応しています。

ダウンロードが完了したら、圧縮されているファイルを展開します。
以下は、Unix系のOSでシェルのコマンドラインからCD-R/CD-RW用のファイルを展開する場合の例です;

  • gzip形式のファイルを展開する場合
    gunzip FuguIta-6.0-amd64-201612251.iso.gz
  • xz形式のファイルを展開する場合
    unxz FuguIta-6.0-amd64-201612251.iso.xz

展開が完了するとファイルサイズが約700メガバイトになり、ファイル名も.gzあるいは.xzの拡張子が取れたものになります。

河豚板のLiveCDを作る

LiveCD版の河豚板を作るには700MB以上の容量を持つCD-R/CD-RWメディアを用意し、ダウンロード・展開済みのISO形式のファイルを書き込みます。
以下は、OpenBSDのcdioコマンドを使用して書き込みを行う場合の例です;

cdio -f /dev/rcd0c blank     ←CD-RWの内容を消去する。CD-Rの場合は実行しなくてよい。
cdio -f /dev/rcd0c tao FuguIta-6.0-amd64-201612251.iso

【メモ】
他のOSでもISOイメージ書き込みソフトが公開されているので、そのようなソフトを使って河豚板のLiveCDを作成できます。

河豚板のLiveUSBを作る

LiveUSB版の河豚板を作るには1ギガバイト以上のサイズのUSBメモリを用意し、ダウンロード・展開済みのIMG形式のファイルを書き込みます。
以下は、OpenBSDを使用して書き込みを行う場合の例です;

dd if=FuguIta-6.0-amd64-201612251.img of=/dev/rsd0c

【ご注意】
!!上の例の「/dev/rsd0c」の部分は書き込み先となる機器の指定です。これはあなたが使用するPCの周辺機器の接続状態、あるいはddコマンドを実行するオペレーティングシステムの種類によって変ってきます。このコマンドを実行すると指定した機器に記録されているデータは全て消えてしまいますので、書き込み先が正しいかどうかの確認は事前に十分に行って下さい。

【メモ】
ISOイメージ書込みソフト同様、生イメージ書き込み用のソフトも種々公開されていますので、そのようなソフトも利用可能です。
1ギガバイト以上のUSBメモリを使用しても、1ギガバイトを超える部分は使用されません。
USBメモリのサイズに合ったLiveUSB版河豚板を作成したい場合は 動作中の河豚板から河豚板のLiveUSBやデータ保存用USBを作る を参照して下さい。

河豚板を起動する

この章では河豚板の起動方法、およびその途中で行う設定値の入力について説明します。

起動デバイスの選択

河豚板を書き込んだCDやUSBメモリをPCにセットして起動すると、河豚板のシステムが起動します。

【メモ】
CDやUSBメモリをセットして起動しても、すでにインストールされているWindowsやLinuxなどが起動してしまう場合があります。これは、PCにはどの機器を使用して起動するかの優先順設定があり、この設定がCDやUSBメモリより内蔵ハードディスクの方が優先的に起動するようになっているためです。
河豚板を起動できるようにするにはPCのBIOSメニューの設定を変更し、CDやUSBメモリの優先順位を内蔵ハードディスクより高くします。
PCのBIOSメニューは機種により異なりますので、お使いのPCの取扱説明書をご参照頂くか、ネット上で検索を行い、調べてみて下さい。

河豚板が起動すると、以下のようなメッセージが表示されます;

Booting from DVD/CD...
CD-ROM: E0
Loading /CDBOOT
probing: pc0 com0 apm pci mem[639K 254M a20=on]
disk: fd0 hd0+* cd0
>> OpenBSD/amd64 CDBOOT 3.26
boot>
booting cd0a:/bsd-fi.mp: 6952132+2194352+2216968+0+663552|[72+732408+486807]=0xca3d58
entry point at 0x1001000 [7205c766, 34000004, 24448b12, 1be0a304]
[ using 1219928 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2016 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 6.0-stable (RDROOT.MP) #3: Sat Oct 29 14:03:04 JST 2016
    root@nimbus12.localnet:/opt/fi/6.0/sys/arch/amd64/compile/RDROOT.MP
real mem = 251518976 (239MB)
avail mem = 237576192 (226MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
〜略〜
softraid0 at root
scsibus4 at softraid0: 256 targets
root on rd0a swap on rd0b dump on rd0b

【メモ】
実際には画面表示が途中から青地に白になります。
このメッセージはカーネル(オペレーティングシステム本体)が表示しています。

fuguboot.png

これらの表示にはPCのメモリや周辺機器の接続状態などの認識結果が示されており、起動がうまくいかない場合などのトラブルを解決する際に重要な情報源となります。

OpenBSDカーネルの起動が完了すると、河豚板のバナーが表示されます。

============================================
=     ______               __   _
=    / ____/              |  |_| |__
=   / /____  ______  __  _|  /_   _/_____
=  / ___/ / / / __ \/ / / |  | | | /  _  |
= / /  / /_/ / /_/ / /_/ /|  | | |_| (_) |__
=/_/   \____/\__  /\____/ |__| \___/____/__/
=            __/ /
=           /___/
=
= Welcome to FuguIta - OpenBSD Live System!
=                 http://fuguita.org/?FuguIta
=============================================

河豚板のバナー表示に続きこのPCに接続されているディスク機器の調査が行われ、そのうちどれに河豚板のシステムがインストールされているかの表示が行われます。

以下の例では「FuguIta's operating device(s): cd0a.」とあるので、LiveCD版の河豚板がCD-R/RWやBlu-Rayなどの光学ドライブにセットされていることがわかります。

よって、「Which is FuguIta's operating device?」(河豚板の運用機器はどれですか?)のプロンプトに対し cd0a と入力します。

【メモ】
これ以降、様々な値を入力してゆきますが、それらのプロンプト中に「[default: xxxx]」という表示がある場合は xxxx がデフォルト値であることを示しています。この場合は下の例のように<Enter>キーを入力するだけでもxxxx<Enter>と入力されたものと見なされます。

scanning partitions: wd0i wd0j cd0a
FuguIta's operating device(s): cd0a.
Which is FuguIta's operating device? [default: cd0a] ->      ← <Enter>のみ入力

【メモ】
OpenBSDオペレーティングシステムでは、ディスク機器に対して以下のようなルールで名前がつきます。

  • 最初のアルファベット数文字 ... 機器の種類
    • cd ... CD, DVDやBlu-Rayなどの光学ドライブ
    • wd ... ハードディスク(IDE, SATA接続)
    • sd ... USBメモリ、SDカード、メモリスティック、SATA接続、SCSI接続、USB接続のハードディスクなど
    • fd ... フロッピーディスク
  • それに続く数字 ... その種類の機器が複数接続されてる場合、0から増えてゆきます
  • 最後のアルファベット ... その機器内の区画(パーティション)
    パーティションは概ね、以下のように使用されています;
    • c ... その機器全体を表します
    • b ... その機器内のOpenBSDスワップパーティションを表します
    • a, d〜h ... OpenBSDのファイルが格納されるパーティションです。aパーティションはルートファイルシステムとして用いられることが多いです
    • i, j など ... WindowsやLinux用のパーティションはこのi, jパーディションとされることが多いです。
  • 注)cパーティション、bパーティション以外は慣習的にそのようなパーティション名が付けられている場合もあり、上の説明に従わないケースもあります。

メモリ使用量の設定

続いて、メモリに関する設定を行います。

以下の例ではまず、このPCには約255メガバイトのメモリが装着されていることを報告しています。
そして、その255MBのメモリの内、何メガバイトをtmpfsに割り当てるかをユーザが入力します。

LiveCDやLiveUSBなどのシステムはPCに内蔵されたハードディスクを使用しないため、その替わりにメモリ上にディレクトリやファイルを保持する領域を確保します。OpenBSDではそのための仕組みとしてtmpfs (Temporary File System)というものがあり、河豚板もこのtmpfsを使用しています。

tmpfsの割当てサイズとして0を指定すると、装着されているメモリに応じて自動で割当てが行われます。
0は入力時のデフォルト値でもあるので<Enter>キーを押すだけで、0が入力されたと見做されます。
通常はこの<Enter>キーだけの入力で問題ありません。

【メモ】
0ではない数値を入力した場合はその値がtmpfsが保持できるファイルの最大値となります。例えば下の例で100<Enter>と入力したとすると、ファイルやディレクトリは合計で最大約100メガバイトまで保持でき、残りの約155メガバイトはプログラムの実行のために確保されます。

user memory: 255 MB
Enter tmpfs size in MB. (0MB is auto)
[default: 0MB] ->                                            ← <Enter>のみ入力
tmpfs size will be automatically allocated

起動モードの選択

続いて起動モードの選択に移ります。

起動モードはモード0からモード5までの6種類がありますが、まずは標準的なモード0を選択します。

【メモ】
他のモードについては 河豚板を使う【一般編】河豚板を使う【応用編】 で説明します。

Select boot mode;
  0: fresh boot (normal)
  1: fresh boot (lower memory, faster boot than mode 0)
  2: fresh boot (works only on tmpfs)
  3: retrieve user data from USB flash memory
  4: retrieve user data from floppy disk
  5: interactive shell for debugging
->0
Running manual setup.
Copying system files to /ram ... done
Extracting symlinks from /ram to /fuguita ... done

キーボードレイアウトの設定

次はキーボードの言語設定です。

日本語キーボードの場合は「jp」又は「jp.swapctrlcaps」を入力します。

「jp.swapctrlcaps」を入力すると、<Control>キーと<Caps>キーの位置が入れ替わり、<Control>キーはアルファベット「A」キーの左隣となります。
EmacsエディタやBashシェルなどのキー割り付けに慣れている方はこちらのほうがよいかも知れません。

【メモ】
キーボード設定はX Window Systemの環境にも引き継がれます。

Keyboard type;
be      be.swapctrlcaps br      cf
cf.nodead       de      de.nodead       dk
dk.nodead       es      fr      fr.dvorak
fr.swapctrlcaps fr.swapctrlcaps.dvorak  hu      is
is.nodead       it      jp      jp.swapctrlcaps
la      lt      lv      nl
nl.nodead       no      no.nodead       pl
pt      ru      sf      sf.nodead
sg      sg.nodead       si      sv
sv.nodead       tr      tr.nodead       ua
uk      uk.swapctrlcaps us      us.declk
us.dvorak       us.iopener      us.swapctrlcaps us.swapctrlcaps.dvorak
us.swapctrlcaps.iopener                 
-> jp
kbd: keyboard mapping set to jp

管理者パスワードの設定

キーボード設定に続き、管理者パスワードの設定を行います。

OpenBSDなどのUnix系OSでは、システム管理者のことを「スーパーユーザ (super user)」と呼び、それ以外のユーザを「一般ユーザ (ordinary user)」と呼びます。
スーパーユーザには、あらかじめ「root」というユーザ名が割当てられていますので、そのrootに対してパスワードを設定します。

【メモ】
OpenBSDでは入力したパスワードが短かすぎたり単純過ぎたりすると、警告文が出てそのパスワードは受け入れられません。
設定するパスワードには以下のようなものが推奨されています;

  • 半角6文字以上
  • アルファベットの大文字と小文字を混在させる
  • 数字や記号文字、制御文字なども混ぜる
Please wait ... 
Changing local password for root.
New password:                                 ← パスワード入力は表示されません
Retype new password:                          ← 確認のため、もう一回入力します

ネットワーク関連の設定

最後に、ネットワーク関連の設定を入力します。

【メモ】
ネットワークの設定内容は接続するネットワークの環境によって異なります。
ネットワークの環境に合致しない設定をされたコンピュータが接続された場合、そのネットワークや接続されたコンピュータに思わぬ影響を及ぼすことがあります。
企業内や公共施設などに河豚板を接続する場合は、そのネットワークの管理者に接続設定について前もって相談することをお勧めします。

ホスト名の設定

最初に、河豚板を走らせるPCに名前(ホスト名: host name)を付けます。
この例ではホスト名として「fugu-demo」という名前を付けています。

host name (without domain) -> fugu-demo

IPプロトコルバージョンの選択

次は使用するIPプロトコルバージョンの設定です。

IP version(s) to use: 4, 6, 46, 64 or n
  46: IPv4 preferred over IPv6 in address resolution
  64: reversed to 46
   n: stand alone operation
[46]->

IPv4プロトコルだけを使用して通信を行う場合は「4」を、IPv6プロトコルだけの場合は「6」を、IPv4、IPv6両方を使用する場合は「46」または「64」を入力します。

「n」を入力するとIPネットワークに関する設定は行なわれず、ログイン画面に移行 します。

<Enter>キーのみを入力した場合は、「46」を入力したものとみなされます。

【メモ】
IPv4、IPv6両方を使用する場合は「46」と「64」のどちらも指定できますが、DNSの問い合せ順序が異なります。
「46」ではIPv4を優先してアドレスの問合せを行い、逆に「64」ではIPv6の問い合せが優先されます。

ネットワークインターフェースの設定

続いてネットワークインターフェースの設定を行います。

まず、このPCに接続されているネットワークインターフェースとその状態の一覧が表示されます。

以下の表示はifconfigというネットワーク設定コマンドの出力ですが、この例ではlo0、em0、enc0という3つのネットワークインターフェースが表示されています。

これに続き、「Available network interface(s): em0」と表示されているため、利用できるネットワークインターフェースが em0 であることがわかります。

今までの例と同様、 入力のデフォルトとして em0 が表示されているため、em0を指定するのに<Enter>キーのみを押しています。

==[ifconfig -a]=========================
lo0: flags=8008<LOOPBACK,MULTICAST> mtu 32768
        priority: 0
        groups: lo
em0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        lladdr 52:54:00:12:34:56
        priority: 0
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
enc0: flags=0<>
        priority: 0
        groups: enc
        status: active
========================================
Available network interface(s): em0
network interface to setup [em0] ->                          ← <Enter>のみ入力

【メモ】
lo0, enc0は特殊なインターフェースなので、設定候補からは外されています。
「em」はインテル社製のギガビットイーサネットインターフェースに付けられている名前です。
em以外のイーサネットインターフェースやWiFiインターフェースが接続されている場合なども、それらがifconfigの表示に出力されます。
個々のネットワークインターフェースについてはOpenBSDに内蔵されている オンラインマニュアルで調べること ができます。

ドメイン名の設定

次はこのPCのFQDN (Fully Qualified Domain Name)を入力します。FQDNとは先程入力した、このコンピュータの名前にドメイン名を付加したものです。
このコンピュータの「ホスト名.」がすでに表示されているので、残りのドメイン部分を入力します。

FQDN of this host -> fugu-demo.localnet

【メモ】
家庭内のネットワークなどでは、ドメイン名は正式に登録・管理されているわけではないので、適当な名前を付けます。一般に .local.localnet などが使われることが多いようです。
組織によって管理されているネットワークの場合は、そのネットワークの管理者に相談して下さい。

WiFiの設定

このあと、ネットワークインターフェースとしてWiFiデバイスを選択した場合にのみ、以下のような設定項目が表れます。

Wi-Fi SSID -> my-wifinet          ← 接続したいWiFiのSSIDを入力
   WPA Key -> my-wpa-secrect-key  ← WPAの鍵を入力

なお、WPAの鍵をENTERのみ入力し、設定を行わなかった時にWEPの鍵を訊いてきます。
WEP方式は現在では簡単に暗号を解読されてしまうため、WEPは使用せずWPA方式を使用することを強くお勧めします。

Wi-Fi SSID -> my-wifinet
   WPA Key -> 
   WEP Key -> my-wep-unsecured-key

【メモ】
WiFiデバイスには、デバイスメーカーが供給するファームウェア(firmware)が必要で、動作のためにはファームウェアのダウンロードとインストールが必要な場合があります。
この場合は有線LANを設定してインターネットに接続した後、ファームウェアのダウンロードが必要なWiFiデバイスを使う の項を参照し、WiFiの設定を行って下さい。

IPアドレスとDNSの設定

最後にDNSやIPアドレス関連の設定があります。

【メモ】
DNS (Domain Name System)とは、「fuguita.org」のようなドメイン名から「152.152.211.70」のようなIPアドレスを検索するための仕組みです。コンピュータが通信を始める時、まずDNSサーバと呼ばれるコンピュータに検索を依頼し、その検索結果として返されたIPアドレスを使用して通信します。

DNSの設定には3パターンあります。

  • 手動設定 ... 問い合せを依頼するDNSサーバのIPアドレスを直接指定します。
  • DHCP ... DHCP (Dynamic Host Configuration Protocol) と呼ばれる仕組みを使用してDNSサーバの自動的に設定します。
  • DNSなし ... DNSを使用せず、IPアドレスを直接指定して通信を行う場合にこれを選択します。

以下の例のように<Enter>キーだけを入力するとDHCPによる設定となり、DNSサーバは自動で設定されます。
DHCPはこのPCのIPアドレス関連の設定も併せて行いますので起動時の設定はこれで完了です。後はログイン画面に移行します。

【メモ】
DHCPを使用するには、そのネットワークにあらかじめDHCPサーバが設置されている必要があります。
家庭用のネットワーク機器や公共のWi-FiスポットではDHCPサーバが設置されていることが多いです。

DNS setup;
  Manual : Enter up to three IPv4/IPv6 addresses, separated by spaces
  DHCP   : Just press ENTER .
  no DNS : Enter "none".
-> 
========================================

一方、以下のようにDNSサーバのIPアドレスを手動設定した場合は、その後にこのPC自身のIPアドレス関連の設定も行います。
(noneを指定してDNSなし運用を選択した場合も同様にIPアドレス関連を設定します)

DNS setup;
  Manual : Enter up to three IPv4/IPv6 addresses, separated by spaces
  DHCP   : Just press ENTER .
  no DNS : Enter "none".
-> 172.16.1.16                             ←DNSサーバのIPアドレス
IPv4 addr of this host -> 172.16.1.23      ←このPCのIPアドレス
netmask                -> 255.255.0.0      ←このネットワークのネットマスク
default route          -> 172.16.1.95      ←このネットワークのデフォルトルート
========================================

起動時の設定は以上です。残った初期化処理を行った後はログイン画面に移行します。

Automatic boot in progress: starting file system checks.
setting tty flags
kbd: keyboard mapping set to jp
pf enabled
machdep.allowaperture: 0 -> 2
machdep.lidsuspend: 1 -> 0
machdep.userldt: 0 -> 1
starting network
DHCPDISCOVER on em0 - interval 3
DHCPOFFER from 10.0.2.2 (52:55:0a:00:02:02)
DHCPREQUEST on em0 to 255.255.255.255
DHCPACK from 10.0.2.2 (52:55:0a:00:02:02)
bound to 10.0.2.15 -- renewal in 43200 seconds.
openssl: generating isakmpd/iked RSA key... done.
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 
starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: can't find device 17/1
checking quotas: done.
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd smtpd sndiod.
Path to firmware: http://firmware.openbsd.org/firmware/6.0/
No devices found which need firmware files to be downloaded.
starting local daemons: cron.
Fri Dec 30 16:39:58 UTC 2016

OpenBSD/amd64 (fugu-demo.localnet) (tty00)

login: 

ログインプロンプト「login:」が表示されると、このPCはユーザが利用可能な状態になっています。
以降は 河豚板を使う にて説明を致します。

河豚板を使う【一般編】

河豚板を起動する では起動及びその設定方法について説明しました。
この章ではシステムが起動完了し、実際に使用する時の基本的な手順について説明します。

また、Unix系OSになじみのない人、そして他のUnix系OSを使用経験がある人が参照すると役に立つ情報源をそれぞれ紹介します。

システム管理者としてログイン・ログアウトする

河豚板の起動が完了すると、OpenBSDオペレーティングシステムのログイン画面が表示されます。
最初はスーパーユーザのアカウントのみがログインできる状態ですので「login:」のプロンプトに対し root、「Password:」のプロンプトに対し起動時に設定したパスワードを入力します。

OpenBSD/amd64 (fugu-demo.localnet) (tty00)

login: root
Password:
Last login: Fri Dec 30 16:40:09 on ttyC0
OpenBSD 6.0-stable (RDROOT.MP) #3: Sat Oct 29 14:03:04 JST 2016

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

You have new mail.
#

ログインに成功するとシェルのプロンプト「#」が表示され、コマンドが実行可能な状態になります。
例としてpsというコマンドを実行してみます。

# ps -aux
USER       PID %CPU %MEM   VSZ   RSS TT  STAT  STARTED       TIME COMMAND
root         1  0.0  0.0   764     4 ??  Is    11:13PM    0:01.01 /sbin/init
root     16321  0.0  0.0   620     4 ??  Is    11:15PM    0:00.01 dhclient: em0
_dhcp    15024  0.0  0.0   716     4 ??  Is    11:15PM    0:00.00 dhclient: em0
_syslogd   356  0.0  0.0   940     4 ??  I     11:15PM    0:00.03 /usr/sbin/sys
root     12915  0.0  0.0   940     4 ??  Is    11:15PM    0:00.01 syslogd: [pri
root     32600  0.0  0.0   616     4 ??  Is    11:15PM    0:00.01 pflogd: [priv
_pflogd  29838  0.0  0.0   680   348 ??  S     11:15PM    0:00.26 pflogd: [runn
root      4197  0.0  0.0   600     4 ??  I<s   11:15PM    0:00.01 ntpd: [priv]
_ntp     28802  0.0  0.2   996  2124 ??  S<    11:15PM    0:00.33 ntpd: ntp eng
_ntp     10091  0.0  0.0   884     4 ??  I     11:15PM    0:00.04 ntpd: dns eng
root     11122  0.0  0.0   920     4 ??  Is    11:15PM    0:00.00 /usr/sbin/ssh
root      9211  0.0  0.0  1384     4 ??  Is    11:15PM    0:00.02 smtpd: [priv]
_smtpd   17619  0.0  0.0  1436     4 ??  I     11:15PM    0:00.01 smtpd: contro
_smtpd   25681  0.0  0.0  1164     4 ??  I     11:15PM    0:00.03 smtpd: schedu
_smtpd   19326  0.0  0.0  1368     4 ??  I     11:15PM    0:00.03 smtpd: pony e
_smtpd   32520  0.0  0.0  1232     4 ??  I     11:15PM    0:00.04 smtpd: klondi
_smtpd    2987  0.0  0.0  1308     4 ??  I     11:15PM    0:00.02 smtpd: lookup
_smtpq   13491  0.0  0.0  1384     4 ??  I     11:15PM    0:00.01 smtpd: queue
_sndio    4822  0.0  0.0   528     4 ??  I<s   11:15PM    0:19.63 /usr/bin/sndi
root     11581  0.0  0.0   656   460 ??  Is    11:15PM    0:00.03 /usr/sbin/cro
root     14855  0.0  0.0   280     4 C0  Is+   11:15PM    0:00.01 /usr/libexec/
root     24959  0.0  0.1   656   684 C0  Ss    11:19PM    0:00.03 -ksh
root      1699  0.0  0.0   388   372 C0  R+    11:21PM    0:00.00 ps -aux
root     11287  0.0  0.0   276     4 C1  Is+   11:15PM    0:00.01 /usr/libexec/
root     28547  0.0  0.0   280     4 C2  Is+   11:15PM    0:00.01 /usr/libexec/
root     12101  0.0  0.0   284     4 C3  Is+   11:15PM    0:00.01 /usr/libexec/
root     27847  0.0  0.0   280     4 C5  Is+   11:15PM    0:00.01 /usr/libexec/

psは、現在どのようなプログラム(プロセス)が動いているかを表示するコマンドです。
システムが起動直後、しかも画面表示上動きのない様子であっても内部ではすでに沢山のプロセスが起動されていることがわかります。

ログアウトするにはシェルのプロンプト「#」が出ているときに <Control>-D を押すか、「exit」と入力します。

【メモ】
<Control>-Dは「<Control>キーを押したままの状態でアルファベットの「D」キーも押す」という意味です。<Control>-Dはまた、「^D」と表記されることもあります。

# exit

OpenBSD/amd64 (fugu-demo.localnet) (tty00)

login: 

ログアウトすると「login:」が表示され、再度ログインできる状態になります。

一般ユーザを登録する

起動直後の河豚板は、スーパユーザ(システム管理者)用のアカウントrootでのみログインできます。

Unix系のOSでは、通常は一般ユーザとしてログインし、日常の利用を行います。
システム管理の時には一般ユーザから一時的にスーパユーザになるか、あるいは一般ユーザからログアウトした後、スーパユーザとしてログインし直して管理作業を行います。

【ご注意】
!!スーパユーザでログイン中はシステムを動作不能にしてしまうような操作を容易に実行できてしまいます。勿論、故意にではない誤操作の場合も例外ではありません。このようなリスクを防ぐため、一般ユーザのアカウントを作成し、通常はそのアカウントで使用することを強くお勧めします。

以下、一般ユーザとしてyoshiというアカウントを作成してみます。
ユーザアカウントの作成もシステム管理ですので、rootで行います。

ユーザアカウントを追加するにはadduserというコマンドを使用します。
まず、ユーザアカウント追加時のデフォルト値を訊かれます。これはadduserの初回の実行時にだけ訊かれます。通常は全て<Enter>キーのみの入力で問題ありません。

# adduser
Couldn't find /etc/adduser.conf: creating a new adduser configuration file
Reading /etc/shells
Enter your default shell: bash csh ksh nologin nsh sh [ksh]:    ←<Enter>を入力
Your default shell is: ksh -> /bin/ksh
Default login class: authpf bgpd daemon default pbuild staff unbound
[default]:                                                      ←<Enter>を入力
Enter your default HOME partition: [/home]:                     ←<Enter>を入力
Copy dotfiles from: /etc/skel no [/etc/skel]:                   ←<Enter>を入力
Send welcome message?: /path/file default no [no]:              ←<Enter>を入力
Do not send message(s)
Prompt for passwords by default (y/n) [y]:                      ←<Enter>を入力
Default encryption method for passwords: auto blowfish [auto]:  ←<Enter>を入力
Use option ``-silent'' if you don't want to see all warnings and questions.

Reading /etc/shells
Check /etc/master.passwd
Check /etc/group

以降は、一般ユーザのアカウント「yoshi」を作成してみます。
最初に表示されているように、入力内容は最後に訂正でき(入力しなおせ)ます。

Ok, let's go.
Don't worry about mistakes. There will be a chance later to correct any input.
Enter username []: yoshi                        ←アカウント名(半角アルファベット半角数字)
Enter full name []: KAWAMATA Yoshihiro          ←ユーザの本名
Enter shell bash csh ksh nologin nsh sh [ksh]:  ←<Enter>を入力 (ログインシェル)
Uid [1000]:                                     ←<Enter>を入力 (ユーザID)
Login group yoshi [yoshi]:                      ←<Enter>を入力 (ログイングループ)
Login group is ``yoshi''. Invite yoshi into other groups: guest no
[no]: wheel                                     ←(ログイングループ以外に加入するグループ)
Login class authpf bgpd daemon default pbuild staff unbound
[default]:                                      ←<Enter>を入力 (ログインクラス)
Enter password []:                              ←パスワードを入力 (表示されません)
Enter password again []:                        ←確認のためのパスワード再入力

Name:        yoshi
Password:    ****
Fullname:    KAWAMATA Yoshihiro
Uid:         1000
Gid:         1000 (yoshi)
Groups:      yoshi wheel
Login Class: default
HOME:        /home/yoshi
Shell:       /bin/ksh
OK? (y/n) [y]: y                                ←入力内容の確認
Added user ``yoshi''
Copy files from /etc/skel to /home/yoshi
Add another user? (y/n) [y]: n                  ←他にもユーザアカウント作成するなら「y」
Goodbye!
# 

【メモ】
この例ではアカウントyoshiをwheelというグループにも加入させています。
wheelに加入しているユーザは、システム管理作業を行うために、一時的にrootになることができます。

以上で、yoshiという一般ユーザアカウントが作成されましたので、実際にログインできるか確認してみます。

# exit

OpenBSD 6.0-stable (RDROOT.MP) #3: Sat Oct 29 14:03:04 JST 2016

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
 
$ pwd
/ram/home/yoshi
$ ls
$ ls -a
.            .config      .fvwm2rc     .mailrc      .ssh         .xsession
..           .cshrc       .fvwmrc      .mew         .twmrc
.Xdefaults   .cvsrc       .icewm       .mplayer     .w3m
.Xresources  .emacs       .login       .profile     .xinitrc
$ ^D

OpenBSD/amd64 (fugu-demo.localnet) (tty00)

login:

【メモ】
rootでログインしたときのシェルのプロンプトは「#」になりますが、一般ユーザの場合は「$」となります。
以降の例示箇所でもこの表記に従います。
OpenBSDではrootアカウントでのSSHによるログインは許可されていません。SSHによるリモートログインを行ないたい場合も一般ユーザのアカウントを作成しておく必要があります。

X Window Systemを起動してみる。

OpenBSDはX Window Systemというグラフィック環境を含んだ形で出荷されており、河豚板もこのX Window Systemを使用することができます。

【メモ】
X Window Systemは「X」や「X11」などと略して呼んでもよいことになっています。以下、X Window SystemをXと表記することにします。

Xを起動するには、シェルのプロンプトが出ている状態で startx と入力します。

$ startx

Xの起動が完了すると以下のような画面になります。

startx.png

画面左上の白いウィンドウは「端末エミュレータ」というもので、X上でシェルとのセッションなど、文字端末での作業を行うためのプログラムです。
右上には時計が表示されています。
左下にあるものは「xconsole」といい、システムのログ情報を表示するプログラムです。起動直後はこのプログラムはアイコン化されています。
右下の表のようなものは、「仮想デスクトップ」といい、複数のデスクトップ画面を切り替えて使用できるようにするものです。標準の設定では3列×3行=9面のデスクトップ画面を切り替えられます。

【メモ】
河豚板は、5.9から6.0にバージョンアップした時点でいままでのIceWMとROX Filerによるデスクトップ環境はなくなり、OpenBSDのXがそのまま起動するようになりました。
河豚板6.0以降用の説明は、今後執筆予定です。今、OpenBSDのXについてお知りになりたい場合は、http://www.openbsd.org/faq/faq11.html をご参照下さい。

壁紙部分(Xでは、「ルートウィンドウ」と呼びます)でマウスの左ボタンを押すとメニューが表われます。このメニューからXのアプリを選択して実行できます。メニューにないものは端末エミュレータからコマンドを投入して実行することもできます。

以下の画面は、実際にアプリを実行してみた例です。

various-xclt.png

ルートウィンドウではマウスの中ボタンや右ボタンを押すことで、別のメニューが表示されます。

【メモ】
Xの操作は3ボタンマウスによる操作を想定して設計されています。 中ボタンのないマウスの場合は、左右のボタンを両方同時に押すか、あるいはホイールを押します。

Xを終了するには、マウスの左ボタンのメニュー中、「Exit」を選択し、さらに本当に終了するかを確認するウィンドウに対し「Exit」を選択します。

quit-verify-win.png

河豚板を終了する

河豚板の運用を終了するにはrootでログインし、shutdownコマンドを実行します。

# shutdown -h -p now
Shutdown NOW!
shutdown: [pid 22103]
#
*** FINAL System shutdown message from root@fugu-demo.localnet ***
System going down IMMEDIATELY



System shutdown time has arrived

# syncing disks... done

上の例では、shutdownコマンドへの指定として -h オプションを指定しているので、システムは停止(halt)します。 また、-p オプションを指定しているので停止直後に電源が自動的にOFF (power off)になります(PCによっては -p オプションによる電源OFFに対応していない機種もあります。この場合は手動で本体の電源をOFFにします)。

-h オプションや -p オプションの替わりに -r オプションを指定すると、システムは再起動(reboot)します。

システムの停止や再起動を行うと、今回の起動後に行った設定や作成したユーザアカウント、また、ファイルやディレクトリの作成や編集、削除などの一切の結果は消えてなくなります。

【メモ】
これら各種の設定やデータを保存・復帰させることもできます。この方法は 保存した設定やファイルを起動時に読み込む で説明します。

河豚板上で行った操作がシステムを停止すると消えてしまうということは、見方を変えると内蔵ハードディスクにインストールされている既存のシステムなどに影響を及ぼしにくいということでもあります。
つまり、rootでファイルの消去やプロセスの停止などを行ってもその影響は限定的なので、システム管理の練習などを安心して行うことができます。

設定やファイルを保存する

河豚板ではユーザが作成したファイル、設定の変更、追加されたパッケージ、システムのログなど一切のファイルをLiveUSB版の河豚板に作成されているデータ保存用パーティションに保存し、以降の起動時に呼び出すことができます。

データの保存にはrootでログインし、usbfadmコマンドを実行します。

【メモ】
usbfadmは(USB Flash drive ADMinistration tool)の略です。

# usbfadm
Welcome to usbfadm.
USB flash drive administration tool for FuguIta

  Version/Arch: 6.0/amd64  (FuguIta-6.0-amd64-201612291)
     Boot mode: manual
Data stored in: not set
 Data Saved as: not set

Type ? for help.

まず、targetコマンドを使用して保存先のパーティションを指定します。
保存用のデバイスが装着されていることを確認した後、ENTERを押下するとデバイスのスキャンが行われます。
デバイス名の前に+記号がついているものが、保存に使用することができるデバイスです。

? : ? --> target

Searching USB flash drives
Please make sure the device inserted.
Then press ENTER ->
cd0a sd0a +sd0d

targe device--> sd0d

次に、saveasコマンドを使用して保存するデータに名前を付けます。
名前を省略した場合、ホスト名が保存名として使用されます。

sd0d : ? --> saveas
Name of saved data --> fugu-demo

Your data will be saved as ``fugu-demo''.

当初「?:?」だったプロンプトの文字列が変化していることにご注目下さい。 今ほどのtargetコマンドとsaveasで設定した値がプロンプト内に表示され、確認ができるようになっています。

最後にsyncコマンドを実行し、データを実際に保存します。

 /dev/sd0d : fugu-demo -> sync

Sync current mfs as fugu-demo, OK? -> y

building file list ... done
created directory /mnt/livecd-config/fugu-demo
./
etc/
etc/bgpd.conf
etc/boot.conf
   :
   :
var/yp/Makefile.yp
var/yp/Makefile.yp.dist
var/yp/README

sent 16455591 bytes  received 232568 bytes  180412.53 bytes/sec
total size is 15492096  speedup is 0.93

infoコマンドで保存されたデータの情報を表示してみます。

/dev/sd0d : fugu-demo -> info

Filesystem     Size    Used   Avail Capacity  Mounted on
 /dev/sd0d     218M   18.9M    179M   9.6%    /mnt

scanning...

18.9M   6.0/amd64/fugu-demo

データは問題なく保存されているようなのでusbfadmを終了します。

/dev/sd0d : fugu-demo -> bye

#

【メモ】
usbfadmコマンドで作成したパーティションでなくとも、OpenBSDのFFS形式でフォーマットされていて、/livecd-configというディレクトリが作成されているパーティションであれば使用できます。

保存した設定やファイルを起動時に読み込む

設定やファイルを保存する で説明した方法で保存されたデータは以降の起動時に読み込ませ、環境を復帰させることができます。
データを復帰させるには、ブートモード3「retrieve user data from USB flash memory」を選択します。

Select boot mode;
   0: fresh boot (normal)
   1: fresh boot (lower memory, faster boot than mode 0)
   2: fresh boot (works only on tmpfs)
   3: retrieve user data from USB flash memory
   4: retrieve user data from floppy disk
   5: interactive shell for debugging
-->3
scanning partitions: sd0a sd0d sd0i
FuguIta's storage device(s): sd0d.
Which is FuguIta's storage device? [default: sd0d] -> 
/dev/sd0d : available data;

fugu-demo

config name -> fugu-demo
Copying files from flash to mfs ... done

保存したデータ名を指定すると退避させていたデータを復帰し、起動が再開されます。
各種設定値もすべて復帰するため、最初に説明した起動モード0と違いネットワークの設定などは訊かれません。

ログイン後、さらにデータを保存することもできます。手順は 設定やファイルを保存する で説明した方法と同じですが、 すでにLiveUSB上にファイルが保存されているため、変更したファイルやディレクトリのみが対象となります。
そして、保存デバイス名と保存名はすでに設定済みなので、いきなりsyncコマンドを実行してもOKです。

シャットダウン時、データの退避は自動的には行われないので、その都度手動でusbfadmコマンドを実行する必要があります。 これを自動化したい場合は 終了時にデータが自動で保存されるようにする をご参照下さい。

Unix の使い方を調べる

本ガイドの冒頭で説明したように、河豚板はUnix系OSの一種である OpenBSD をベースにして作成されています。

Unixは約半世紀前の1969年に開発され、以降さまざまなコンピュータ向けの実装が作成されてきました。今ではUnix系のOSはスーパーコンピュータからスマートフォンや家電製品、あるいは小さな組込み機器までさまざまな環境で使用されるに至っています。

Unix系OSはMicrosoft WindowsなどのOSとは操作方法が大きくことなっており、最初はどのように使ってよいか見当がつかない方もいるかも知れません。

Unix系OSの基本的な部分はコンシューマユーザ向けに作られてはいません。OpenBSDも例外ではなく、予備知識を持たないユーザを想定した親切なユーザインターフェースなどは初期状態ではほとんど用意されていません。言い替えると「なんとなくあちこちいじっているうちに使い方がわかった」ということにはなりません。

そんなUnix系OSを理解し、活用するにはどのようなアプローチを取ればよいのでしょうか。

書籍を用意しましょう

Unix系OSに関する基本を解説している書籍を用意しましょう。
様々な実装が存在するUnix系OSですが、それらにはUnix哲学とも呼ばれる共通した考え方があります。この考え方を理解し、実践できるようになることがUnix系OSを習得する上でのキーになります。
書籍の内容としては特定の実装だけを対象とせず、基本的な概念から応用の入口までを網羅的・体系的に解説しているものがよいでしょう。

「これ一冊読めばすべてOK」というような書籍はなかなかないのですが、定評のあるものをいくつか挙げておきます;

  • はじめてUNIXで仕事をする人が読む本 / 木本雅彦 他 著 / KADOKAWA アスキーメディアワークス
  • 新 The Unix Super Text [上] / 山口和紀・古瀬一隆 著 / 技術評論社

以下のものは副読本として読むと、より理解が進むかもしれません;

  • Unixという考え方−その設計思想と哲学 / Mike Gancarz著 芳尾桂訳 / オーム社
  • Linuxを「読む」 / こじまみつひろ著 / 毎日コミュニケーションズ

とにかく自分でやってみましょう
オンライン・マニュアルを活用しましょう

やはり自分で手を動かすことが、効果的なスキル習得の基本になります。
その際、やみくもにやってみるのではなく、オンラインマニュアル(manコマンド)を活用しましょう。オンラインマニュアルはそのシステムに即していますから書籍やネットが持つ弱点、記述が古くなっていたりとか、違う実装に基いて説明している、というようなことがありません。

【メモ】
Unixのマニュアルページは幾つかの章に別れています。
同じ名前の項目が複数の章にある場合があります。例えば「sleep」は、1章(一般コマンド)と3章(ライブラリ)の両方にあり、それぞれsleep(1)、sleep(3)の様に記述します。ですので、sleepコマンドのコマンドラインを知りたい場合は、

$ man 1 sleep

C言語でプログラミングをしていて、sleep関数の使い方を知りたい場合は、

$ man 3 sleep

として第3章にあるsleep関数の説明を表示します。

ですので、これ以降「ls(1)」のような表記が出てきますが、これは「"man 1 ls"を実行してオンラインマニュアルの1章にある"ls"の項を参照して下さい」という意味になります。

オンラインマニュアルとは別に、Unixのコマンドの多くは自分自身の使用説明を表示する機能を持っています;

$ man
usage: man [-acfhklw] [-C file] [-I os=name] [-K encoding] [-M path] [-m path]
           [-O option=value] [-S subsection] [-s section] [-T output] [-W level]
           [section] name ...
$ cp -?
cp: unknown option -- ?
usage: cp [-fip] [-R [-H | -L | -P]] source target
       cp [-fip] [-R [-H | -L | -P]] source ... directory

上の例ではmanコマンドとcpコマンドのヘルプメッセージを表示させています。
このようにコマンドのヘルプメッセージは非常に簡素な説明なので、忘れてしまったコマンドラインオプションを思い出すため、といったような備忘録的な役割で使用されます。

ネットは「参考情報」として活用しましょう

インターネットを活用するとUnix系OSに関連する情報も、簡単に得ることができます。
しかし、前項で説明したような弱点もあります。特に検索エンジンでの検索結果については目の前の実機にもあてはまるかどうかは自分で判断する必要があります。検索サイトの結果は「参考情報」として活用するのがよいでしょう。
さらに、現在では多くのUnix系OSが開発コミュニティなどによる「公式サイト」を持っています。公式サイトの情報は一次情報として活用できます。

この節のまとめ

以上述べたことを例えば「ファイルの属性」というトピックにあてはめて考えると、次のようになるでしょう;

  • 書籍で基礎事項を押さえる
    →ファイルのオーナ・グループ・パーミッションとは何か、どのようなコマンドで操作するかを調べる。
  • オンラインマニュアル等で確認しながら実際に操作
    →実際にchown, chgrp, chmodコマンドなどを実行し、結果を確認してみる。どのようなコマンドラインオプションがあるかなどをmanコマンドで調べる。
  • ネットで関連情報・参考情報をゲット
    →ネットの検索などで注意点、はまりやすい点、色々な応用法などを調べてみる。
    →公式サイトで関連情報を調べる ... 仕様の変更やセキュリティホール情報がないか、など。

河豚板は以上で述べたようなUnix系OSの習得にも向いています。つまり、インストール作業不要というライブシステムの特徴を活かし、ユーザが気軽に色々と試せる環境、失敗しても容易にやりなおせる環境を提供しています。

OpenBSDの使い方を調べる

前節の Unix の使い方を調べる ではUnix系OSの使用経験のあまりない人がUnix系OSの使い方を習得するためのヒントについて説明しましたが、この節ではOpenBSDを使う場合の情報源やそれらを活用する上でのポイントについて説明します。

導入

rootでログインすると、OpenBSDプロジェクト開発リーダーTheo de Raadt氏からのメールが届いています。

# mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/root": 1 message 1 new
>N  1 deraadt@do-not-re  Sun Oct 18 07:58   86/4565  Welcome to OpenBSD 5.8!
& more 1
Message 1:
From deraadt@do-not-reply.openbsd.org Sun Oct 18 07:58:58 MST 2015
Date: Oct 18 07:58:58 MST 2015
From: deraadt@do-not-reply.openbsd.org (Theo de Raadt)
To: root
Subject: Welcome to OpenBSD 5.8!

This message attempts to describe the most basic initial questions that a
system administrator of an OpenBSD box might have.  You are urged to save
this message for later reference.
....(以下略)....

このメールでは、OpenBSDをインストールした人が最初に持つと思われる疑問について説明しています。メール本文に書いてある情報源をたどってゆくことで、OpenBSDを使用する上での様々なノウハウを得ることができます。

以下このメールの内容と重複する部分もありますが、システム上の各種情報源について触れていきます。

オンラインドキュメント

Unixの使い方を調べるで述べたようにマニュアルページはUnix系OSの重要な情報源ですが、OpenBSDにおいても例外ではありません。
そのことはインストール直後のroot宛てメールにおいても、以下のように強調されています;

Again, PLEASE READ THE MANUAL PAGES.  Our developers have spent countless
hours improving them so that they are clear and precise.

マニュアルページには、特に導入のためのエントリも幾つか用意されています。

help
Unix初心者向けのエントリです。コマンドラインでhelpコマンドを実行した場合もこのエントリが表示されます。
man
manコマンドの説明です。OpenBSDではmandocというプログラムによってマニュアルページのシステムが再実装されていますが、manコマンドの使い方は他のUnix系OSとほぼ同じです。
afterboot
インストール直後にチェックを行ったほうがよい項目について解説しています。この文書の 河豚板を使う【一般編】 より詳しく網羅的な内容ですので、ご一読をお勧めします。
intro
マニュアルページはカテゴリごとに章に別れていますが、その各章に関する説明です。例えば、
man 1 intro
とすると、一般コマンドカテゴリについての説明が、
man 5 intro
では、ファイル形式のカテゴリ全般についての説明が表示されます。

OpenBSDでは、マニュアルページの章立ては以下のようになっています;

1一般コマンド
2システムコールとエラー番号
3ライブラリ
3fFortran言語のリファレンスガイド
3pPerl言語のリファレンスガイド
4デバイスドライバ
5ファイル形式
6ゲーム
7その他
8システム保守・運用のためのコマンド
9カーネル内部情報
X11X11R6と同じ
X11R6X Window System
local/usr/local配下にインストールされたコマンド
nTcl/Tk言語のコマンド

各セクションのマニュアルの内容は現状のシステムに追従し続けており、常にアップデートと推敲が行われています。
また他のUnix系OSでは4章(デバイスドライバ)などの章で、ほとんど情報が提供されていない実装系もありますが、OpenBSDではこのような情報も完備されており、例えばWiFiの設定のように使用するハードウェアに依存した設定情報が必要な場合も十分な情報を得ることができます。

emacsinfo.png

GNUプロジェクト由来のコマンドやEmacs上で動作するアプリケーションに関しては、Info形式のドキュメントが提供されている場合があります。
Infoドキュメントを閲覧するには、infoコマンドを実行します。

【メモ】
Emacsエディタを追加インストールしている環境では、InfoドキュメントはEmacsエディタから、<Meta>-x info<Enter>、あるいは<Escape> x info<Enter>と入力し、閲覧することができます。

マニュアルページやInfo以外にもアプリケーション固有のドキュメントがあります。 それらは主に次に挙げるディレクトリの下にあります;

  • /usr/share/doc
  • /usr/X11R6/share/doc
  • /usr/local/share/doc
  • /usr/local/share/gtk-doc

システム上のファイル

サーバやアプリケーションソフトなどの設定ファイルはすべて/etc以下に集約されています。
パッケージ管理ツールports/packagesで追加されたソフトウェアは、/usr/local以下にインストールされますが、設定ファイルに関しては/etc以下に配置されます。X関連の設定ファイルについても同様です。

システムの動作ログは、/var/log以下にあります。唯一、cronのみが/var/cron/logというログファイルを作成します。

河豚板を起動する で説明した起動時に表示されるカーネルメッセージは、/var/run/dmesg.boot というファイルに記録されています。システム起動完了後はこのファイルの内容を閲覧することで、システム起動時の様子を調査することができます。

インターネット上の情報

http://www.openbsd.org/
プロジェクトによって運営されている公式サイト。OpenBSD全般に関する詳細なガイドシステムの更新情報など、ウェブ上のOpenBSD関連情報の起点です。
http://undeadly.org/ 「OpenBSD Journal」
OpenBSD関連のニュースサイト。その都度OpenBSDの旬の話題が取り上げられ、OpenBSD開発の最前線の様子なども知ることができます。以前、河豚板の紹介記事も投稿されました。
メーリングリスト
公式に管理・運営されているメーリングリストがあります。また、これらのアーカイブサイトもあり、メーリングリストに加入しなくてもウェブ上での閲覧が可能です。

書籍

作者の知る限り、OpenBSDユーザ向けに書かれた日本語の書籍は2015年現在出版されておりません。
BSD系のUnix向けの書籍の中には、

  • BSD HACKS 〜 プロが使うテクニック&ツール100選 / Dru Lavigne著,桃井康成監修,林秀幸訳 / オライリー・ジャパン

など、部分的にOpenBSDについて言及されている書籍もあります。

英語の書籍に関しては公式サイトの記述をご参照下さい。
Absolute OpenBSD, 2nd EditionThe book of PF, 3rd Editionなど、OpenBSD向けの書籍がいくつか出版されているようです。

河豚板を使う【応用編】

河豚板を使う【一般編】 では河豚板の基本的な使用手順について説明しました。
この章では河豚板の特徴を活かした、さらに進んだ利用法について紹介します。

【メモ】
この章では以下のように、河豚板を使う【一般編】 で設定した環境を引続き使用する前提で説明を行います;

  • ホスト名としてfugu-demo.localnetを想定
  • インターネットにアクセスできる状態になっている
  • 一般ユーザyoshiが作成されている。yoshiはwheelグループにも属しているため、rootになることができる。

アプリケーションを追加する

河豚板はOpenBSDで提供されているソフトウェアに、その他日常よく使うであろうと思われるアプリケーションやシステム管理などに便利やツール類を追加しています。

更に、システム起動後にもユーザがアプリケーションを追加することができます。

アプリケーションを追加するにはOpenBSDのports/packagesシステムを利用する方法が手軽です。
packagesのソフトウェアを追加するには、pkg_addというコマンドをrootで実行します。例として、ウェブブラウザであるMozilla Firefoxをインストールする例を以下に示します(例の中にある「5.8」の部分は、実際に使用している河豚板のバージョンで置き換えて下さい)。

$ su -
Password:
# export PKG_PATH=ftp://ftp.jaist.ac.jp/pub/OpenBSD/5.8/packages/i386/
# pkg_add firefox
quirks-2.114 signed on 2015-08-09T15:30:39Z
quirks-2.114: ok
firefox-39.0.3:nspr-4.10.8: ok
firefox-39.0.3:nss-3.19.2: ok
firefox-39.0.3:icu4c-55.1p0: ok
firefox-39.0.3:mozilla-dicts-en-GB-1.3p0: ok
firefox-39.0.3:hunspell-1.3.2p2: ok
firefox-39.0.3: ok
Look in /usr/local/share/doc/pkg-readmes for extra documentation.
--- +hunspell-1.3.2p2 -------------------
Install mozilla dictionaries for extra hunspell languages.
e.g.
    # pkg_add mozilla-dicts-ca
# exit
$ firefox http://fuguita.org/

pkg_addによるアプリケーションの追加はrootで作業しなければなりません。
上の例では、suコマンドを使用して一時的にrootになっています。勿論、yoshiをログアウトしてrootでログインしなおし、そこでpkg_addを実行しても構いません。

pkg_addを実行すると目的のアプリケーションを実行するために必要な他のソフトウェアも同時に追加されます。上のfirefoxの例では、nspr, nss, icu4c, mozilla-dicts-en-GB, hunspellがそれです。

インストール完了時に、2種類のコメントが表示されています;

  • ディレクトリ/usr/local/share/doc/pkg-readmes以下にインストールしたソフトウェアに関するドキュメントがあります。
  • スペルチェック用の辞書は
    # pkg_add mozilla-dicts-ca
    といった方法で追加できます。

以上の例のような方法で、アプリケーションを追加することができます。
ports/packagesからどのようなソフトウェアがpkg_addできるかはウェブブラウザでftp://ftp.jaist.ac.jp/pub/OpenBSD/5.9/packages/i386/をご覧下さい。またはftp://ftp.jaist.ac.jp/pub/OpenBSD/5.9/ports.tar.gz というアーカイブに含まれるINDEXというファイルにソフトウェアの説明つきの一覧があります。

【メモ】
ports/packagesシステムについてはhttp://www.openbsd.org/faq/faq15.htmlに詳しい説明があります。また、上の例ではダウンロード元としてftp.jaist.ac.jpを使用しましたがダウンロードサイトは他にもあり、その一覧はhttp://www.openbsd.org/ftp.htmlで見ることができます。
ports/packagesを利用せずソフトウェア開発元が公開しているソースコードを直接コンパイル・インストールする所謂「野良ビルド」も可能です。

河豚板ではpkg_addで追加したソフトウェアもまた、usbfadmコマンドによるデータ保存/復帰の対象となります。

一般ユーザが一時的にシステム管理者になれるようにする

前節の アプリケーションを追加する では、suコマンドを使用して一般ユーザから一時的にrootになってシステム管理作業を行う方法を紹介しましたが、他にdoasというコマンドも使用できます。
doasは設定ファイルで動作を制御できる点、rootのパスワードを知らなくてもroot権限でのコマンド実行ができる点などでsuコマンドより使い勝手がよくなっています。

doasを使うには、まず設定ファイル/etc/doas.confを編集する必要があります。
最初はdoas.confは存在していませんので以下のコマンドを実行し、ファイルを作成します(doas.confがすでに存在している場合は、テキストエディタでdoas.confを編集します)。

# echo permit :wheel > /etc/doas.conf
# chmod 0640 /etc/doas.conf

この操作で、「permit :wheel」という内容1行だけが書かれたファイル doas.conf が作成されます。これは「wheelグループに所属しているユーザに対してroot権限でのコマンド実行を許可するように」という意味の設定です。この設定を用いて、一般ユーザでログイン中にusbfadmユティリティを用いて例えば次の例のように、設定やファイルを保存する ことが可能となります。

$ doas /usr/fuguita/sbin/usbfadm
Password:

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

  Version/Arch: 6.0/amd64  (FuguIta-6.0-amd64-201612291)
     Boot mode: usbflash
Data stored in: /dev/sd0d
 Data Saved as: fugu-demo

Type ? for help.

/dev/sd0d : fugu-demo ->

先に説明したようにdoas.confの設定を行うと、doas実行時にパスワードを訊かれますが、これにはrootのパスワードではなく、doasを実行したユーザのパスワードを入力します。
パスワードを入力しないでdoasを実行することもできます。詳しくはdoas.conf(5)を参照して下さい。

【メモ】
doasはUnix系のOSで一般的に使われているsudoと置き換えるためにOpenBSD開発陣が再実装したコマンドです。sudoはOpenBSD 5.8以降はOS本体には含まれていませんが、portsからインストールして使うことが可能です。

タイムゾーンを変更する

モード0で起動した直後の河豚板は、時間帯(time zone: タイムゾーン)がUTC (Universal Coordinated Time: 協定世界時)になっています。
協定世界時に比べ日本標準時(Japan Standard Time: JST)は9時間進んでいます。

$ date
Wed Dec 23 02:27:58 UTC 2015

河豚板の時間帯をJSTにするには以下のようにコマンドを投入し、シンボリックリンク/etc/localtimeの指し示すファイルを変更します。

$ cd /etc
$ ls -l localtime
lrwxr-xr-x  1 root  wheel  23 Dec 23 02:27 localtime -> /usr/share/zoneinfo/UTC
$ doas ln -s -f /usr/share/zoneinfo/Japan localtime
Password:
$ ls -l localtime
lrwxr-xr-x  1 root  wheel  25 Dec 23 11:28 localtime -> /usr/share/zoneinfo/Japan
$ date
Wed Dec 23 11:28:53 JST 2015
$

【メモ】
設定後のJSTが実時刻とずれている場合はdate(1)を使い、root権限で修正します。

時刻を参照するNTPサーバを変更する

NTP (Network Time Protocol)はコンピュータがネットワーク上で通信を行いながら、それぞれの時刻を同期させるためのプロトコル(通信規約)です。
OpenBSDはNTPを用いてインターネット上の時刻基準に自身の時刻を同期させる機能をもっており、この機能は河豚板でも使用することができます。

OpenBSDはインストール時にNTPを使用するかどうかの設定を行います。一方、河豚板ではこの機能はデフォルトで有効になっています。

NTPの機能はntpd(8)というプログラムによって実装されており、ntpdの動作状況を見るにはntpctl(1)というコマンドを実行します。

【メモ】
OpenBSDで使われているNTPのソフトウェアは「OpenNTPD」と呼ばれ、OpenBSDの開発陣によって作成されたものです。
LinuxやFreeBSDでは同じntpdでも、別の実装を用いています。

$ ntpctl -s status
4/4 peers valid, constraint offset 0s, clock synced, stratum 3

上記の例のように「clock synced」と表示されていれば、ntpdは時刻の基準となる外部のNTPサーバと通信し、その結果時刻の同期が取れていることがわかります。一方、

$ ntpctl -s status
0/1 peers valid, clock unsynced

のように「clock unsynced」となっている場合は、何らかの原因で時刻が同期できていません。

OpenBSDではインストール時にNTP機能を有効にすると、時刻基準としてpool.ntp.orgというサーバ群を参照するようになり、河豚板の設定もそれに倣っています。

企業の社内LANなどではセキュリティの関係から、pool.ntp.orgなど外部のNTPサーバとの通信ができないようになっている場合があります。そのような場合、社内LAN上にNTPサーバが運用されていれば、そのサーバを参照することで自ホストの時刻を正確に保つことができます。

以下にNTPサーバの設定方法を示します;

ntpdはntpd.conf(5)というファイルにより動作が設定されますので、root権限でntpd.confを編集します。

$ doas -s
Password:
# vi /etc/ntpd.conf
 ntpd.conf内のこの3行を
  ↓
servers pool.ntp.org
sensor *
constraints from "https://www.google.com"
  ↓
 以下の一行に変更
  ↓
server ntp.localnet

上の例では、「ntp.localnet」というNTPサーバを参照するように設定を変更しています。

設定ファイルの編集が終了したらntpdを再起動し、変更内容を反映させます。
バックグラウンドで走行しサービスを提供するntpdのようなプログラムをUnixではデーモン(daemon)と呼びますが、OpenBSDではデーモンの操作にrcctl(8)というコマンドを使用することができます。

# rcctl restart ntpd
ntpd(ok)
ntpd(ok)
# 

以上で設定変更作業は完了したので、rootから一般ユーザに戻ります。あとはntpdの挙動をntpctlで監視します。

# exit
$ ntpctl -s status
1/1 peers valid, clock unsynced

上記のようになっていれば(まだ)同期はとれていませんが、1つのピア(peer, 参照しているNTPサーバ)が有効となっていることがわかります。

$ ntpctl -s status
1/1 peers valid, clock synced, stratum 3

しばらく時間が経過すると、時刻同期が取れていることが確認できました。

ntpctlは更に詳しくntpdの状態を表示することもできます。またntpd自身が動作記録を/var/log/daemonや/var/log/messagesなどのログファイルに残しますので、それらを調べることでより詳細なntpdの動作把握ができます。
詳しくは各コマンドや設定ファイルのマニュアルページを参照して下さい。

【メモ】
ntpdは時刻のずれを非常にゆっくりと修正していきます。これはいきなり時刻を大きく変更するとシステムの運行に悪影響を及ぼす可能性があるからです。そのため、時刻のずれが大きい場合は同期が取れるまでに長い時間がかかる場合もあります。

OSの設定値を変更する

前節ではNTPサーバの設定変更方法について説明しました。

この節ではOpenBSDで動作しているサービスの設定について説明致します。

全ての設定方法について具体的な説明を行うことは現実的ではないので、設定をカテゴリ毎に分け、それらカテゴリのそれぞれについて説明します。

カーネルパラメータ

OpenBSDカーネルの機能は色々な方法で制御できますがその一つとして、sysctl(8)コマンドを使う方法があります。

$ sysctl -a | less
kern.ostype=OpenBSD
kern.osrelease=5.8
kern.osrevision=201510
kern.version=OpenBSD 5.8-stable (RDROOT.MP) #2: Wed Nov 11 13:18:48 JST 2015
    root@nimbus5.localnet:/opt/fi/5.8/sys/arch/i386/compile/RDROOT.MP

kern.maxvnodes=44152
kern.maxproc=1310
  〜以下略〜

上の例では全てのカーネルパラメータを表示しています。
表示内容が一画面に収まらないため、表示データをページャプログラムlessにパイプで渡して表示しています。

表示したいパラメータがあらかじめわかっている場合は、その名前を指定して表示できます。
以下の例ではファイルの入出力のバッファリングに割り当てるメモリの最大量を表示しています。

$ sysctl kern.bufcachepercent
kern.bufcachepercent=20
$

この表示から、最大でメモリ搭載量の20%までをバッファに割り当てる設定になっていることがわかります。

この値を変更するには以下のようにします。設定の変更はroot権限が必要なので、doasコマンドを経由してsysctlコマンドを実行しています。

$ doas sysctl kern.bufcachepercent=50
Password:
kern.bufcachepercent: 20 -> 50
$

sysctlコマンドの手動実行ではなく、システム起動時に自動的に設定を行うこともできます。 それには、設定したい内容をsysctl.conf(5)というファイルに記述します。

【メモ】
カーネルの設定を変更するにはその他にも

  • configコマンドによるカーネルの書き換え
  • UKC (User Kernel Config)による起動時での変更
  • カーネルの再コンパイル

    などの方法がありますが、それぞれ設定できる内容や作業の難易度が異なります。詳しくは各マニュアルページや公式サイトのFAQなどをご参照下さい。

ネットワークの基本設定

これまでも説明したようにネットワーク関連の設定は河豚板の起動時に行われるので、これで問題なく通信が行われれば特に設定を変更する必要はありません。
河豚板をサーバやネットワークのゲートウェイなどとして運用する場合は、設定を変更したり追加したりする必要が出て来るかもしれません。

インターフェース設定
IPアドレス、ネットマスクなどのネットワークインターフェースに関する設定は/etc/hostname.<インターフェース名>というファイルで設定します。このファイルの書式はhostname.if(5)で参照できます。

【メモ】
使用しているPCにどのようなネットワークインターフェースがあるかはコマンドの実行「ifconfig -a」で表示されます。

経路制御
デフォルトルートは/etc/mygateに記述します。それ以外の経路制御を行うには、経路制御デーモンを走行させるか、routeコマンドの実行を/etc/hostname.ifか/etc/localあたりに記述します。
名前解決
/etc/resolv.conf(5)により設定を行います。
パケットフィルタリング
PFはOpenBSDで開発されたパケット・フィルタですが、ネットワークの帯域制御やアドレス変換など、フィルタリング以外にも非常に豊富な機能を持っています。PFに関してはpfctl(8)やpf.conf(5)を参照して下さい。

デーモンの起動・停止と設定

OpenBSDではデフォルトでは動作しないものも含めて、様々なデーモンがインストールされています。 時刻を参照するNTPサーバを変更する ではNTPデーモンを例として、デーモンの起動・停止・設定変更について説明しました。その他のデーモンについても概ね同様な手順を取ります。

OpenBSDでは、このようなデーモンの起動はrc.conf.local(8)が制御を行っており、このファイルにデーモンの起動・停止の指定や起動時にデーモンに与えるオプションなどの指定を行います。

【メモ】
実際にはrc.conf(8)で全てのデーモンについての指定がされており、rc.conf.localはrc.confの設定を上書きするように動作します。

各種デーモンの挙動を制御するには rc.conf.local の内容を変更するので、テキスト・エディタで編集を行うわけですが、その他にrcctl(8)というコマンドを使用してデーモンの起動・停止の制御や設定変更を行うことができます。

ntpdがntpd.confによって設定されるように、他のデーモンもそれぞれ固有の設定ファイルを持ちますが、その多くは /etc 直下に置かれます。 また、/etc/examples に各種デーモンの設定用サンプルファイルが置かれていますので、このファイルを参照、あるいはコピー・編集して実際の設定ファイルとすることができます。

その他の設定

/etc/rc.localはシステム起動の最終段階で実行されるシェルスクリプトです。今まで説明した以外の処理を行いたい場合は、この/etc/rc.localに処理を記述します。

OpenBSDの起動時や終了時の処理についてはrc(8)を参照して下さい。

起動時間を短縮する。使用メモリを少なくする

河豚板の起動時にモード1を指定すると、それ以降の起動時間が短縮されます。
これ以降に入力する各種設定項目については、モード0と同じです。

Select boot mode;
  0: fresh boot (normal)
  1: fresh boot (lower memory, faster boot than mode 0)
  2: fresh boot (works only on tmpfs)
  3: retrieve user data from USB flash memory
  4: retrieve user data from floppy disk
  5: interactive shell for debugging
->1

起動後のメモリ使用量(tmpfsのサイズ)もモード0に比べ少なくなります。
目安としては実装メモリ64MB程度のマシンからが動作可能となります;

ファイル使用量(モード0)
$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    729K    833K    47%    /
/dev/cd0a      697M    697M      0B   100%    /sysmedia
/dev/vnd5a     676M    664M   11.9M    98%    /fuguita
tmpfs          698M   25.5M    673M     4%    /ram
ファイル使用量(モード1)
$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    730K    832K    47%    /
/dev/cd0a      697M    697M      0B   100%    /sysmedia
/dev/vnd5a     676M    664M   11.9M    98%    /fuguita
tmpfs          713M    6.8M    706M     1%    /ram

ただし、起動モード1は標準の起動モードであるモード0に比べ必要なリソースが少ないというメリットがありますが、/usr以下のファイルやディレクトリを変更することができなくなるというデメリットがあります。つまり、pkg_addなどによるアプリケーションの追加などもできません。

起動モード1は河豚板に収録されているソフトウェアのみで運用が可能な場合に使用できます。

モード1で起動しusbfadmでファイル保存後、モード3で再起動した場合も上記の状況は引き継がれます。

河豚板を記録メディアを使用しないで動作させる

起動モード2はファイルを全てtmpfs上に転送し、全てがオンメモリで動作するモードです。

Select boot mode;
  0: fresh boot (normal)
  1: fresh boot (lower memory, faster boot than mode 0)
  2: fresh boot (works only on tmpfs)
  3: retrieve user data from USB flash memory
  4: retrieve user data from floppy disk
  5: interactive shell for debugging
->2

モード2ではシステムの起動が完了すると、CDやUSBメモリはアンマウントされますので、それらのデバイスを取り外して運用することができます。プログラムの実行やファイルの読み書きも全てメモリ上で行われますので、モード0やモード1に比べて高速に動作することが期待できます。

$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    730K    832K    47%    /
tmpfs          813M    736M   76.7M    91%    /ram

ただし、冒頭で説明したように、このモード2ではCDやUSBメモリ上にあるシステムファイルが全てtmpfsにコピーされますので、PCの実装メモリ量は、目安として概ね800MB以上は必要です。

モード2においてもusbfadmでファイル保存後、モード3で再起動した場合にはファイル保存時の状態が復帰します。

動作中の河豚板から河豚板のLiveUSBやデータ保存用USBを作る

河豚板のLiveUSBを作る で説明したように、ダウンロードサイトからイメージファイルをダウンロードし、展開、書込みを行うことでLiveUSB版河豚板を作成することができます。

しかし、このLiveUSB版河豚板はUSBメモリのサイズに関係なく1GBしか領域を使用できません。
この内、河豚板のシステムが700MBを占有していますので、usbfadmでデータを保存できるのは300メガバイト程度です。

この節ではすでに稼動中の河豚板上で、新たに別のUSBメモリに河豚板をインストールする方法を説明します。
この方法を用いるとデータの保存領域を任意のサイズで割り当てることができます(以下の例では、4GB(=4096MB)のサイズのUSBメモリにインストールする場合を想定しています)。

まず、河豚板をモード0、またはモード1で起動します。起動する河豚板はLiveCD版、LiveUSB版のどちらでも使用できます。

起動が完了したら、rootでログインしusbfadmコマンドを実行します。

$ doas /usr/fuguita/sbin/usbfadm
Password:

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

  Version/Arch: 6.0/amd64  (FuguIta-6.0-amd64-201612291)
     Boot mode: manual
Data stored in: not set
 Data Saved as: not set

Type ? for help.

? : ? --> newdrive                       ← newdriveでLiveUSB作成を指示

Please make sure the device inserted.
Then press ENTER -->                     ← USBメモリの装着を確認したら<Enter>。
                                   デバイス名確認のため /var/log/messages の内容が表示される
                                   ↓
==== FYI: sd[0-9] on syslog ================================
     1  sd0 at scsibus1 targ 1 lun 0: <TOSHIBA, TransMemory, PMAP>
     2  sd0: 961MB, 512 bytes/sec, 1968128 sec total
     3  sd1 at scsibus2 targ 1 lun 0: <Generic, USB CF Reader, 0.00>
     4  sd1: drive offline
     5  sd2 at scsibus2 targ 1 lun 1: <Generic, USB SD Reader, 0.00>
     6  sd2: drive offline
     7  sd3 at scsibus2 targ 1 lun 2: <Generic, Mini SD Reader, 0.00>
     8  sd3: drive offline
     9  sd4 at scsibus2 targ 1 lun 3: <Generic, USB MS Reader, 0.00>
    10  sd4: drive offline
    11  sd5 at scsibus2 targ 1 lun 4: <Generic, USB SM Reader, 0.00>
    12  sd5: 62MB, 512 bytes/sec, 128000 sec total
============================================================
Enter name of device which FuguIta will be installed --> sd0    ← LiveUSBを作成するデバイス

Disk: sd0	geometry: 1886/255/63 [30310400 Sectors]
Offset: 0	Signature: 0x0
	    Starting	     Ending	    LBA Info:
 #: id	    C	H   S -	     C	 H   S [       start:	     size ]
-------------------------------------------------------------------------------
 0: 00	    0	0   0 -	     0	 0   0 [	   0:		0 ] unused
 1: 00	    0	0   0 -	     0	 0   0 [	   0:		0 ] unused
 2: 00	    0	0   0 -	     0	 0   0 [	   0:		0 ] unused
 3: 00	    0	0   0 -	     0	 0   0 [	   0:		0 ] unused

Do you make this USB flash drive bootable? [y/n] -> y           ← LiveUSB作成の場合は「y」

Enter size for saving User Data in MB (3396MB free).
'*' implies all --> 2048                                        ← データ保存用領域のサイズ
                                                                 「*」で残り全てを割当て
Do you format the rest as FAT? [y/n] -> y                       ← それ以外の領域をFATにする
                                                                   かどうか
***THIS IS THE LAST CHANCE***
If you type 'Y' now, all the data on sd0 will be lost.
Are you sure to initialize sd0? [y/N] -> y                      ← 書き込みの最終確認

========================================
= Clearing MBR BSD disklabel
=
1+0 records in
1+0 records out
1048576 bytes transferred in 0.099 secs (10562763 bytes/sec)

========================================
= Setting up MBR
=
Writing MBR at offset 0.
〜以下略〜

この後ファイルシステムの作成とシステムの転送が行われ、インストール作業は完了です。

【ご注意】
!!書き込み先のデバイス名は十分にご確認下さい。誤ったデバイスに書き込むと、そこに保存されているデータが失われます。

fuguita-usb.png

今まで説明した内容を図にすると、右のようになります。

「Do you make this USB flash drive bootable? [y/n] -> 」に対し y と答えた場合は a パーティションが作成され、そこに河豚板のシステムが書き込まれます。このパーティションは700MBの固定サイズです。n を入力した場合は a パーティションは作成されません(この場合はデータ保存専用のUSBメモリとなります)。

「Enter size for saving User Data in MB」で入力したサイズの d パーティションが作成され、usbfadm のデータ保存先となります。

aパーティションとdパーティションの領域を確保したあとでまだ未使用領域があれば、「Do you format the rest as FAT? [y/n] ->」と訊かれます。これに対しyと答えるとi パーティションが確保されます。このパーティションはFATファイルシステムとしてフォーマットされ、Windowsなど他のOSからもアクセスできます。OpenBSDもFATをマウントできますから、河豚板と他OSとのデータのやりとりに使用することもできます。

【メモ】
この節で説明した河豚板のインストール方法は、USBメモリだけではなくOpenBSDが認識できる記録デバイス全般に対して使用可能です。例えばSDカード、コンパクトフラッシュ、メモリスティックあるいはATAやSATAのハードディスクなどにも書き込むことが可能です。

起動時の設定入力を省略できるようにする

河豚板ではどのモードで起動するかに関わらず、起動中に手動で入力しなければならない箇所があります。

  • どのデバイスを使用して運用を行うか? (Which is FuguIta's operating device?)
  • 実装メモリのどれくらいをtmpfsに割り当てるか? (Enter tmpfs size in MB.)
  • どの保存デバイスからファイルを復帰させるか?(モード3のみ) (Which is FuguIta's storage device?)
  • どの保存名からファイルを復帰させるか?(モード3のみ) (config name ->)

上記の4項目については入力を自動化する機能があります。
それには、LiveUSB版河豚板のdパーティションにあるnoasksというファイルに設定値を書き込みます。

$ doas -s
Password:
# mount /dev/sd0d /mnt
# cd /mnt
# ls -l
total 2
drwxr-xr-x  9 root  wheel  512 Dec 23 06:24 livecd-config
-rw-r--r--  1 root  wheel  302 Oct 27 07:50 noasks
#

ちなみに、livecd-configというディレクトリもありますが、usbfadmでデータを保存するとこのディレクトリの下にデータが転送されます。

# ls -l livecd-config
total 1
drwxr-xr-x   9 root  wheel  512 Dec 15 07:50 fugu-demo
#

noasksには、設定値の雛形がコメントの形で書かれていますので、テキストエディタで設定行のコメントを外し、設定したい値を書き込みます。

# vi noasks
#
# noasks - parameter settings for non-interactive boot
#
# Make statements uncommented
# to activate settings
#
#
# FuguIta system device
noask_rdev='sd0a'
#
# tmpfs size in MB
noask_umem='0'
#
# boot mode
noask_setup_rw_mode='3'
#
# data set name in USB flash drive
noask_confdir='fugu-demo'

編集が終了したらdパーティションをアンマウントしてシステムを再起動します。

# cd
# umount /mnt
# /sbin/shutdown -r now

noasksファイルによる値の設定がされている場合、次のようなメッセージが表示されます;

============================================
=     ______               __   _
=    / ____/              |  |_| |__
=   / /____  ______  __  _|  /_   _/_____
=  / ___/ / / / __ \/ / / |  | | | /  _  |
= / /  / /_/ / /_/ / /_/ /|  | | |_| (_) |__
=/_/   \____/\__  /\____/ |__| \___/____/__/
=            __/ /
=           /___/
=
= Welcome to FuguIta!  -  OpenBSD Live System
=                 http://fuguita.org/?FuguIta
=============================================
scanning partitions: wd0i wd0j sd0a sd0d
FuguIta's operating device(s): sd0a.
Press ^C to cancel non-interactive boot

この「Press ^C to cancel non-interactive boot」が表示されてから5秒待つと自動起動が実施されます。
5秒以内に<Control>-Cを入力するとnoasksファイルによる自動起動は中止され、通常の動作に戻ります。

【メモ】
noasksファイルの中に未設定の項目がある場合は、自動起動中にその項目設定の箇所でユーザからの入力を待ちます。

終了時にデータが自動で保存されるようにする

前節の 起動時の設定入力を省略できるようにする では河豚板起動時の自動化について説明しましたが、終了時にデータを保存する処理を自動化することもできます。

OpenBSDではシステム終了時に /etc/rc.shutdown というスクリプトを実行するようになっているので、このファイルの最終行に以下のような処理を追加します。

export PATH=$PATH:/usr/local/bin
/usr/fuguita/sbin/usbfadm -r

【ご注意】
!!この処理は保存処理時のエラーリカバリを行っていないので、保存に失敗してもシステムはシャットダウンを続行します。運用中に重要な処理を行った場合は、別途手動でデータを保存することをお勧めします。

複数の河豚板を併用する

いままではほとんどの場面で、LiveCD版かLiveUSB版の河豚板のどちらか一方を使う想定で説明を行ってきましたが、もしPCにLiveCDとLiveUSBの両方を装着して起動したらどうなるでしょうか? あるいは、LiveUSBを2つ作って、それを二つとも装着して起動したら?

河豚板はそのような場合にもうまく動作するように設計されています。

LiveCDとLiveUSBの両方を装着して起動した場合について説明します。

まず、電源を入れた直後にCDとUSBのどちらが起動するかですが、これは 河豚板を起動する で説明したようにPCのBIOSメニューの設定によります。

次に、運用デバイス(ディレクトリ /fuguita にマウントされ、OSとして使用されるデバイス)ですが、河豚板のシステムが書き込まれたデバイスが2つ以上検出された場合は、

scanning partitions: wd0i wd0j cd0a sd0a sd0d
FuguIta's operating device(s): cd0a sd0a.
Which is FuguIta's operating device? ->

のように使用可能なデバイスを列挙し、どれを使用するかユーザに尋ねるようになっています。

【メモ】
上の例ではwd0iとwd0jは内蔵ハードディスクという想定です。内蔵ハーディスクにはWindowsがインストールされていて、CドライブとDドライブの2つのパーティションが存在しているような場合、このような表示になります。

保存されたデータを読み込む場合も同様に候補が複数ある場合はどれを使うかユーザに尋ねます。例えばLiveUSBが2本挿された状態で起動モード3を選択した場合、以下のようにsd0d、sd1dの2つの候補が表示されます;

Select boot mode;
   0: clean boot
   1: clean boot (lower memory, faster boot)
   2: clean boot (everything on mfs)
   3: retrieve user data from USB flash memory
   4: retrieve user data from floppy disk
   5: interactive shell for debugging
-->3
scanning partitions: wd0i wd0j sd0a sd0d sd1a sd1d
FuguIta's storage device(s): sd0d sd1d.
Which is FuguIta's storage device? ->

usbfadmコマンドでデータを保存する場合も、設定やファイルを保存する で説明したように、usbfadmのtargetコマンドを使用して保存先のデバイスを指定できます。

以上のことを応用すると、以下に挙げるような運用が可能となります。

SDカード版の河豚板で運用
動作中の河豚板から河豚板のLiveUSBやデータ保存用USBを作るで説明したように、usbfadmコマンドでは、USBメモリ以外の記憶デバイスにも河豚板をインストールできます。
SDカードからの起動をサポートしているPCはほとんど存在しませんが、LiveCD版とSDカード版の河豚板の2つを装着してPCを起動すると、システムの起動をLiveCDで行い、運用デバイスをSDカードとすることで、SDカード版河豚板による運用が可能となります。
LiveCD版河豚板をモード3で起動
LiveCD版河豚板単体では、データの保存・復帰はできませんが、LiveUSBなどと併用することでCDで運用しながら、データを保存して終了し、次回起動時に復帰するといった使い方ができます。

【メモ】
USBメモリはデータの保存時/復帰時にのみマウントされるので、それ以外の時ははずしておけます。

この、河豚板の「起動と運用は別々のデバイスで行える」という特徴をさらに活かし、OpenBSDと河豚板を共存させる ことや WindowsやLinuxと河豚板を共存させる ことも可能になっています。これらについては次節以降で紹介します。

【メモ】
なお、起動時の設定入力を省略できるようにする で説明した設定入力の自動化は、全パーティション中に noasks ファイルが1つしかない場合に実行されます。2つ以上の noasks ファイルが検出された場合は安全のため自動実行は中止され、手動入力に移行します。

OpenBSDと河豚板を共存させる

河豚板を実行しようとしているPCにすでにOpenBSDがインストールされている場合、そのインストール済みのOpenBSD内に河豚板のファイルを置くことでLiveCDやLiveUSBを装着していなくても河豚板を起動することができます。

原理としては、既存のOpenBSDパーティションに河豚板のカーネルとISOイメージを置き、既存のブートローダを利用して河豚板のカーネルを起動する、という方法になります。

以下、設置と起動の方法を説明します。
まず既存のOpenBSDを起動し、rootでログインします。

次に、ルートディレクトリ直下に「ISO」というディレクトリを作成します。
この /ISO ディレクトリに河豚板のサイトからISOイメージをダウンロードし、展開します。

# mkdir /ISO
# cd /ISO
# ftp http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-6.0-amd64-201612251.iso.gz
Trying 110.92.1.251...
Requesting http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-6.0-amd64-201612251.iso.gz
100% |**************************************************|   322 MB    07:48

338634465 bytes received in 468.48 seconds (705.90 KB/s)
# ls -l
total 661632
-rw-r--r--  1 root  wheel  338634465 Dec 29 00:55 FuguIta-6.0-amd64-201612251.iso.gz
# gunzip FuguIta-6.0-amd64-201612251.iso.gz
# ls -l
total 1427648
-rw-r--r--  1 root  wheel  730744832 Dec 29 00:55 FuguIta-6.0-amd64-201612251.iso

ISOイメージの中に含まれている河豚板のカーネルをルートディレクトリ直下にコピーします。 vnconfig(8)はISOやUSBメモリのイメージファイルを記憶デバイスとしてアクセスできるようにするコマンドです。

# vnconfig vnd0 FuguIta-6.0-amd64-201612251.iso
# vnconfig -l
vnd0: covering FuguIta-6.0-amd64-201612251.iso on wd0a, inode 25986
vnd1: not in use
vnd2: not in use
vnd3: not in use
# mount -r /dev/vnd0a /mnt
# ls -l /mnt
total 1427119
-r-xr-xr-x  1 root  bin        71452 Apr  4  2015 boot
-rwxr--r--  1 root  wheel       2048 Dec 27 11:59 boot.catalog
-rw-r--r--  1 root  wheel    5569179 Dec 27 19:19 bsd-fi
-rw-r--r--  1 root  wheel    5577796 Dec 27 19:19 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Dec 27 19:19 cdboot
-r-xr-xr-x  1 root  wheel       2048 Dec 27 19:19 cdbr
drwxr-xr-x  2 root  wheel       2048 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec 27 19:19 fuguita-5.8.ffsimg
# cp -p /mnt/bsd-fi /mnt/bsd-fi.mp  /
# umount /mnt
# vnconfig -u vnd0
# vnconfig -l
vnd0: not in use
vnd1: not in use
vnd2: not in use
vnd3: not in use
#

以上で設置作業は完了です。

【メモ】
データの保存と復帰を行いたい場合は livecd-config というディレクトリを作成します。ただし、ISO ディレクトリと同じ場所には作れません。なぜなら、ISO ディレクトリが作成されたパーティションは、河豚板稼動中は書込み不可でマウントされるからです。従って、livecd-config の作成に適切なパーティションは、例えば /home や /var など、別パーティションのマウントポイント直下ということになります。

次に起動方法ですが、PCが起動し、カーネルメッセージが表示される直前に「boot>」というプロンプトが数秒間表示されます。
ここで何もしないと既設のOpenBSDシステムが起動しますが、起動したいカーネルを入力すると、そのカーネルが立ち上がります。

boot> bsd-fi.mp

この「bsd-fi.mp」がマルチプロセッサ用の河豚板カーネルです。 シングルプロセッサ用の河豚板カーネルを起動したい場合は「bsd-fi」と入力します。

【メモ】
以上の説明では ISO ディレクトリと livecd-config ディレクトリはルートディレクトリ直下に作成しましたが、OpenBSDのファイルシステムが作成されているパーティションの直下であれば、ルートディレクトリ直下でなくとも動作します。

スワップパーティションを有効にする

通常、河豚板はスワップを使用せずメインメモリだけで動作しますが、ノーマルなOpenBSDと河豚板が共存している ような環境では、OpenBSDのスワップパーティションを検出し、さらにそれを有効化します。

Which is FuguIta's operating device? -> wd0a
activating swap partition: /dev/wd0b
activating swap partition: /dev/wd1b

この例では、/dev/wd0b と /dev/wd1b の2つのスワップパーティションが見つかり、両方とも有効になっています。
スワップパーティションは検出と同時に有効化されます。これを無効/有効にする設定はありません。

【メモ】
何らかの理由でスワップを使用したくない場合(例えば、スワップパーティションにバッドセクタが存在するためプロセスが異常終了するおそれがある、ディスク上にメモリイメージを残したくない、など)場合は、起動モード5「interactive shell for debugging」を選択します。
選択後、シェルが立ち上がったらswapctl(8)コマンドを-dオプション付きで実行し、スワップを無効化します。
シェルを抜けると再度起動モードの選択になりますので本来の起動モードを選択し、処理を再開します。

WindowsやLinuxと河豚板を共存させる

河豚板ではWindowsのNTFSやFAT、LinuxのEXT-2, EXT-4ファイルシステムでフォーマットされたパーティションも運用デバイスとして用いることができます。
この方法は OpenBSDと河豚板を共存させる で説明した手順とほぼ同様な方法です。つまり、

  • 運用デバイスとして用いるOSを起動させ、
  • そのOS上のファイルシステム直下(WindowsならCドライブやDドライブ、Linuxならルートディレクトリやその他のマウントポイント)にISOというフォルダを作成し、
  • そのフォルダ内に河豚板のISOイメージを置きます。

だたし、WindowsやLinuxのファイルシステムから河豚板を使用する場合は、以下のような制限があります。

  • 現段階ではWindowsやLinuxのファイルシステムに置かれたOpenBSDのカーネルを起動することはできません。従って、カーネル起動用にのみLiveCD版やLiveUSB版の河豚板を使用することになります。
  • WindowsやLinuxのファイルシステムは、データの保存・復帰も対応していませんので、データの保存と復帰にはLiveUSB版の河豚板を使用します。

X Window Systemの設定を変更する

(これから書く)

ウィンドウマネージャの変更

(これから書く)

日本語設定

Xでは、日本語の表示や入力を行うことができます。 (これから書く)

【メモ】
河豚板は、5.9から6.0にバージョンアップした時点でいままでのIceWMとROX Filerによるデスクトップ環境はなくなり、OpenBSDのXがそのまま起動するようになりました。
日本語デスクトップ環境の構築については、以下のページをご参照下さい。

Xのログイン画面を有効にする

X Window Systemではxdm(1)というプログラムによって、Xのログイン画面を表示することができます。 xdmは手動で起動することもできますが、通常はシステム起動時に自動的に立ち上がるように設定します。 これには OSの設定値を変更する で説明したように、/etc/rc.conf.local ファイルの内容を変更します。

以下の例は、rcctl(8)を使用して rc.conf.local の内容を変更しています;

$ cd
$ cat /etc/rc.conf.local
# pkg_scripts='dbus_daemon'
shlib_dirs='/usr/fuguita/lib'
$ doas rcctl set xdm status on
Password:
$ rcctl get xdm
xdm_class=daemon
xdm_flags=
xdm_timeout=30
xdm_user=root
$ cat /etc/rc.conf.local
# pkg_scripts='dbus_daemon'
shlib_dirs='/usr/fuguita/lib'
xdm_flags=
$

rcctlコマンドでxdmを有効にすると rc.conf.local に「xdm_flags=」という行が付け加えられることがわかります。

【メモ】
テキストエディタで rc.conf.local を直接編集しても同じ結果が得られます。
OpenBSD 5.7以前はrcctlコマンドが開発されておらず、テキストエディタによる編集が正規の設定手順でした。

設定変更後usbfadmで保存を行い、以降、モード3で起動すればxdmが立上ります。

【メモ】
xdmが表示されている状態で<Control>+<Alt>+<F1>を押すと通常のテキストログイン画面に切り替わります。この仮想コンソールは全部で12面あり、<Control>+<Alt>+<F1>から<Control>+<Alt>+<F12>まで割り当てられています。Xの表示は5番目の仮想コンソールに割り当てられているので、<Control>+<Alt>+<F5>を押すと、Xの画面に戻ります。

河豚板をアップデートする

OpenBSDは半年に一度、メジャーリリースが行われており、このとき OpenBSD 5.8 → OpenBSD 5.9 のようにバージョンが変わります。
そしてその半年にもセキュリティや安定性の向上などに関する修正が行われており、OpenBSDの公式サイトでも http://www.openbsd.org/errata60.html で修正情報が提供されます。

河豚板もこの修正情報への追従を行っており、現行で公開されている版はいままでの修正情報が全て適用されたものとなっています(実際には、適用作業と動作確認を行うため修正情報の公開からは数日程度のタイムラグがあります)。

なお、河豚板で現在運用中のOSのバージョンを確認するには次のようにコマンドを実行します。

$ uname -a                                       ← OSのバージョンを確認
OpenBSD fugu-demo.localnet 5.8 RDROOT.MP#2 i386
$ sysctl kern.version                            ← カーネルのバージョンを確認
kern.version=OpenBSD 5.8-stable (RDROOT.MP) #2: Wed Nov 11 13:18:48 JST 2015
    root@nimbus5.localnet:/opt/fi/5.8/sys/arch/i386/compile/RDROOT.MP

$ cat /usr/fuguita/version                       ← 河豚板のバージョンを確認
5.8-201512272

この節では、現在お使いの河豚板を最新版にアップデートする方法を解説します;

OpenBSDのメジャーリリースがバージョンアップした場合

これは、河豚板がベースとしているOpenBSDのメジャーリリースが行われた場合です。例えば、

FuguIta-5.8-amd64-201504161
         ↓
FuguIta-5.9-amd64-201510255

ですが、これは河豚板のベースとなっているOSがOpenBSD 5.8からOpenBSD 5.9に変っています。

OpenBSDのメジャーリリースが変っている場合、システムのアップデートは困難です。
その理由は、OpenBSDがバージョンアップすると、システムコールの仕様変更、共有ライブラリの互換性のないバージョンアップ、コマンドのや追加・削除や仕様変更などが大幅に行われるため、過去の環境を保ったままバージョンを移行することが現実的ではないためです。

OpenBSDのメジャーリリースを跨いでの移行は、以下のような方法が推奨されます;

  • LiveCDやLiveUSBを新規に作成する。
  • 新しいバージョンの河豚板を起動させ、古いバージョンの河豚板から各種設定やユーザが作成したファイルなどの移行作業を行う。

【メモ】
usbfadmコマンドのsavasで保存名を付ける場合に、デフォルトでは保存名の冒頭に「fugu-demo」といったOSのバージョンが付きますが、これはこの節で述べたバージョン間で互換性がないことを示すために付けられています。

OpenBSDのメジャーリリースは変わっていない場合

これは、

FuguIta-6.0-amd64-201511297
          ↓
FuguIta-6.0-amd64-201512051

のようにOpenBSDのバージョンを表す「6.0」の部分が変っていないことで確認できます。

この場合はシステムの変更は部分的なものにとどまっていますので、ユーザデータの移行などは必要ありません。 システムの移行は、以下の手順で行います。

LiveCDの移行手順
LiveCDの場合はメディアの部分的な書き換えはできませんので、新しいバージョンのLiveCD版河豚板を作り、それを使用する形になります。
USBメモリに保存したデータについては、そのまま起動モード3で読み込んで使用できます。

LiveUSBの移行手順
LiveUSBの場合は、USBメモリ内のシステムファイルを差し替えることでそのまま移行できます。以下、手順を示します。

まず最初に新しいバージョンの河豚板をモード0か1で起動します。運用デバイスは、LiveCD, LiveUSBあるいはWindowsやLinuxとの共存形式のいずれも使用できます。
ネットワークの設定等は適当でOKです。あるいは設定しなくても問題ありません。起動が完了したらrootでログインし、以下のようにファイルの上書きを行います。

# ls -l /sysmedia        ← 現在運用中のシステムファイルが格納されている
total 1427119
-r-xr-xr-x  1 root  bin        71452 Apr  4  2015 boot
-rwxr--r--  1 root  wheel       2048 Dec 27 11:59 boot.catalog
-rw-r--r--  1 root  wheel    5569179 Dec 27 19:19 bsd-fi
-rw-r--r--  1 root  wheel    5577796 Dec 27 19:19 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Dec 27 19:19 cdboot
-r-xr-xr-x  1 root  wheel       2048 Dec 27 19:19 cdbr
drwxr-xr-x  2 root  wheel       2048 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec 27 19:19 fuguita-6.0-amd64.ffsimg
# mount /dev/sd0a /mnt   ← 旧バージョンのLiveUSBをマウント
# ls -l /mnt
total 1427592
-rw-r--r--  1 root  wheel      71564 Oct 27 07:49 boot
-rwxr--r--  1 root  wheel       2048 Nov 29 16:44 boot.catalog
-rw-r--r--  1 root  wheel    5568445 Nov 29 16:44 bsd-fi
-rw-r--r--  1 root  wheel    5577178 Nov 29 16:44 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Nov 29 16:44 cdboot
-r-xr-xr-x  1 root  wheel       2048 Nov 29 16:44 cdbr
drwxr-xr-x  2 root  wheel        512 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec  5 06:52 fuguita-6.0-amd64.ffsimg

  旧バージョンのシステムファイルを新バージョンもので置き換え
                         ↓
# cp -p /sysmedia/bsd-fi /sysmedia/bsd-fi.mp /sysmedia/fuguita-6.0-amd64.ffsimg /mnt

# ls -l /mnt             ← 置き換わっていることを確認
total 1405576
-rw-r--r--  1 root  wheel      71564 Oct 27 07:49 boot
-rwxr--r--  1 root  wheel       2048 Nov 29 16:44 boot.catalog
-rw-r--r--  1 root  wheel    5569179 Dec 27 19:19 bsd-fi
-rw-r--r--  1 root  wheel    5577796 Dec 27 19:19 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Nov 29 16:44 cdboot
-r-xr-xr-x  1 root  wheel       2048 Nov 29 16:44 cdbr
drwxr-xr-x  2 root  wheel        512 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec 27 19:19 fuguita-6.0-amd64.ffsimg
# umount /mnt
#

作業が完了したら、PCを再起動し、アップデートしたLiveUSBが使用可能であることを確認します。
LiveUSBアップデート後の運用は今までと変りなく、データの移行等をする必要もありません。

河豚板をモバイル環境で使う

河豚板をモバイル環境の端末として使うためには、基本的な部分は固定環境での運用と大きく変わるところはありません。

しかしモバイル環境特有の事情を考慮し、設定を追加するとより効率的に運用できる面もあります。

この節ではそのような設定項目としてノートPCの電源関連について解説します。

電源関連の設定

現在のPC、とりわけノートPCにはACPI (Advanced Configuration and Power Interface)やAPM (Advanced Power Management)という仕組みがあり、バッテリーなどの電源装置の監視や制御を行うことができます。
OpenBSDではこれらの仕組みはacpi(4)、及びapm(4)として実装されており、管理用のコマンドを通じてアクセスすることができます。

acpiやapmの管理は、apmd(8)というデーモンにより行います。
apmdの状態確認と設定を行います;

$ doas -s
Password:
# rcctl get apmd
apmd_class=daemon
apmd_flags=NO      ← apmdは無効(動作しない)設定になっている。
apmd_timeout=30
apmd_user=root

apmdを有効にします。

# rcctl set apmd status on
# rcctl get apmd
apmd_class=daemon
apmd_flags=
apmd_timeout=30
apmd_user=root
# 

設定が完了したらusbfadmコマンドを使用して保存し、河豚板をモード3で再起動します。

apmdが稼動している状態では、apm(8)というコマンドで状態の監視と制御が可能です。

$ apm
Battery state: high, 89% remaining, 57 minutes life estimate
A/C adapter state: not connected
Performance adjustment mode: auto (1000 MHz)

以下の例では、apmコマンドに-Lフラグを与えて、CPUが常時低クロックで動作するように設定しました;

$ apm -L
$ apm
Battery state: high, 88% remaining, 42 minutes life estimate
A/C adapter state: not connected
Performance adjustment mode: manual (1000 MHz)

バッテリーなどハードウェアの状態は、sysctlコマンドやsystat(1)コマンドでもモニタできます。

$ sysctl hw.sensors
hw.sensors.acpitz0.temp0=55.50 degC (zone temperature)
hw.sensors.acpiac0.indicator0=Off (power supply)
hw.sensors.acpibat0.volt0=14.80 VDC (voltage)
hw.sensors.acpibat0.volt1=15.30 VDC (current voltage)
hw.sensors.acpibat0.current0=1.19 A (rate)
hw.sensors.acpibat0.amphour0=1.12 Ah (last full capacity)
hw.sensors.acpibat0.amphour1=0.21 Ah (warning capacity)
hw.sensors.acpibat0.amphour2=0.07 Ah (low capacity)
hw.sensors.acpibat0.amphour3=0.92 Ah (remaining capacity), OK
hw.sensors.acpibat0.amphour4=2.15 Ah (design capacity)
hw.sensors.acpibat0.raw0=1 (battery discharging), OK
hw.sensors.acpibtn0.indicator0=On (lid open)
hw.sensors.acpidock0.indicator0=Off (not docked), UNKNOWN
hw.sensors.cpu0.temp0=55.00 degC
$ systat sensors
    3 users    Load 0.40 0.42 0.37                     Wed Dec 30 04:18:11 2015

SENSOR                                 VALUE  STATUS  DESCRIPTION
acpitz0.temp0                     56.50 degC          zone temperature
acpiac0.indicator0                       Off          power supply
acpibat0.volt0                    14.80 V DC          voltage
acpibat0.volt1                    15.26 V DC          current voltage
acpibat0.current0                     1.08 A          rate
acpibat0.amphour0                    1.12 Ah          last full capacity
acpibat0.amphour1                    0.21 Ah          warning capacity
acpibat0.amphour2                    0.07 Ah          low capacity
acpibat0.amphour3                    0.90 Ah    OK    remaining capacity
acpibat0.amphour4                    2.15 Ah          design capacity
acpibat0.raw0                          1 raw    OK    battery discharging
acpibtn0.indicator0                       On          lid open
acpidock0.indicator0                     Off unknown  not docked
cpu0.temp0                        56.00 degC

systatコマンドはデフォルトでは5秒おきに状態を更新し、表示を続けます。「q」を入力すると終了します。

apmコマンドはまた、PCを休止状態にすることができます。
休止状態にするにはapmコマンドの他、zzz(8)やZZZ(8)などのコマンドも使用可能です。また、PCの機種によっては特定のキーに休止動作が割り付けられているものもあります。
休止からの復帰方法は機種により異なりますが、電源ボタンを短かく押したり休止キーを再度押したりするものが多いようです。

【ご注意】
!!スタンバイ、スリープやハイバーネートのような休止動作を行うと、USBデバイスは切り離され、復帰時に再接続されます。従ってUSBデバイス上のファイルシステムをマウントしているLiveUSB版河豚板はシステム復帰後、正常に動作しなくなりますのでご注意下さい。
!!PCの機種によっては休止動作がうまくいかないものがあります(スタンバイはできるがサスペンドやハイバーネートはできない、休止状態から復帰できない、あるいは動作が不安定で時々復帰に失敗する、など)。使用にあたっては事前の動作確認をお願いします。

Xを使用している時は、xsetコマンドでディスプレイを制御できます。ホームディレクトリ直下の .xinitrc 内に以下のような行を追加します;

xset s on     ← スクリーンセーバーを有効にする
xset s 180    ← スクリーンセーバーの動作開始時間(秒)
xset +dpms    ← ディスプレイを省電力モードに移行

この例の設定をおこなうと、マウスやキーボードの操作が180秒以上行われない場合、ディスプレイが省電力モードになります。

ネットワーク設定を変更する

ネットワーク再設定ツール gennetconfs

ネットワークの設定はネットワークの基本設定で説明したように/etcディレクトリ以下のいくつかのファイルで行われますが、河豚板ではgennetconfsというコマンドを用いることでそれらのファイルを生成することができます。
使用方法は以下の通りです;

# gennetconfs [ディレクトリ名]

gennetconfsは指定されたディレクトリ上にファイルを生成します。ディレクトリ名が省略された場合は、カレントディレクトリにファイルを生成します。
このコマンドは実行後、ネットワークの設定を対話的に行います。設定方法は河豚板起動時に行う ネットワーク関連の設定 と同じです。

gennetconfs実行後に作成されたファイルの内容をチェックし、問題なければそれらのファイルを/etcにコピーし、再起動すれば新しい設定が有効になります。
または、

# cd /etc
# gennetconfs

あるいは、

# gennetconfs /etc

などと実行すれば/etc以下のファイルを直接書き換えることができます。

ファームウェアのダウンロードが必要なWiFiデバイスを使う

この項ではgennetconfsコマンドの応用としてWiFiデバイスの導入方法について説明します。

OpenBSDでは様々なWiFiデバイスがサポートされていますが、中にはそのままでは使用できず、ファームウェアのダウンロードとインストールが必要なデバイスがあります。

【メモ】
ファームウェアのダウンロードが必要な事情については、OpenBSDのサイトに以下のような記述があります;
OpenBSD FAQ - Wireless Networking
https://www.openbsd.org/faq/faq6.html#Wireless

In order to use some wireless cards, you will need to acquire firmware files with fw_update(1). Some manufacturers refuse to allow free distribution of their firmware, so it can't be included with OpenBSD.
(訳) 一部のワイヤレスカードを使用するには、fw_update(1)でファームウェアファイルを取得する必要があります。 メーカーによっては、ファームウェアの自由な配布を拒否しているため、OpenBSDに含めることはできません。

よって、これらのWiFiデバイスを使用するためには、まず河豚板をインターネットに接続した状態で起動させ、ファームウェアのダウンロードを行ってから、ネットワークの設定を目的のWiFiデバイス用に変更するという手順が必要です。
以下その手順を説明します。

1. 河豚板をインターネットに接続
まず河豚板を起動し、有線LAN、あるいはファームウェアのダウンロードを必要としないWiFiデバイスなどを使って、インターネットに接続する設定を行います。

2. ファームウェアのダウンロードとインストール
河豚板は起動時にインターネットに接続されていれば、そのPCに必要なファームウェアのダウンロードとインストールを自動で行います。
念のため手動でfw_updateコマンドを起動し、ファームウェアが導入されていることを確認します。

# fw_update -v
Path to firmware: http://firmware.openbsd.org/firmware/6.3/
Updating: wpi-firmware-3.2p1 intel-firmware-20180312v0
Checking packages|No change in wpi-firmware-3.2p1
                  No change in intel-firmware-20180312v0
#

3. ネットワークの設定をWiFiデバイス用に変更
gennetconfsコマンドを実行し、ネットワークの設定をWiFi用に書き替えます。

# gennetconfs /etc
host name (without domain) -> fugu-demo
IP version(s) to use: 4, 6, 46, 64 or n
  46: IPv4 preferred over IPv6 in address resolution
  64: reversed to 46
   n: stand alone operation
[46]->
'46' selected as default
==[ifconfig -a]=========================
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
	index 4 priority 0 llprio 3
	groups: lo
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
	inet 127.0.0.1 netmask 0xff000000
wpi0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	lladdr 00:1b:77:01:4e:fe
	index 1 priority 4 llprio 3
	groups: wlan
	media: IEEE802.11 autoselect
	status: no network
	ieee80211: nwid ""
em0: flags=208a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST,AUTOCONF6> mtu 1500
	lladdr 00:19:b9:6c:60:dd
	index 2 priority 0 llprio 3
	groups: egress
	media: Ethernet autoselect (100baseTX full-duplex)
	status: active
	inet 192.168.10.94 netmask 0xffffff00 broadcast 192.168.10.255
	inet6 fe80::eeef:ccc9:98bb:7824%em0 prefixlen 64 scopeid 0x2
enc0: flags=0<>
	index 3 priority 0 llprio 3
	groups: enc
	status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
	index 5 priority 0 llprio 3
	groups: pflog
========================================
Available network interface(s): wpi0 em0
network interface to setup [wpi0] -> wpi0
FQDN of this host -> fugu-demo.localnet
Wi-Fi SSID -> my-wifi-ssid
   WPA Key -> my-wpa-passphrase
DNS setup;
  Manual : Enter up to three IPv4/IPv6 addresses, separated by spaces
  DHCP	 : Just press ENTER .
  no DNS : Enter "none".
->
#

4. 設定内容の保存と再起動
変更した内容をusbfadmコマンドを使用して保存した後、河豚板をモード3で再起動します。

河豚板を使う【開発編】

この章では河豚板の内部を理解したり、河豚板をベースに自分で開発を行う場合の情報を提供します。

河豚板の技術情報を調べる

河豚板はOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の情報がそのまま利用できます。

公式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに公開資料の一覧がありますので、そちらをご参照下さい。
(過去の資料の中には、現状の河豚板と異っている部分もありますので、ご注意下さい)

動作中の河豚板から河豚板のISOイメージを作る

動作中の河豚板から河豚板のLiveUSBやデータ保存用USBを作るではLiveUSBのイメージファイルを作成しましたが、この節ではmkhybrid(8)コマンドを用いて稼動中の河豚板からLiveCDのISOイメージを作成する方法を説明します。

【メモ】
この作業は大きなサイズのファイルを扱うので、tmpfsのサイズは1.5ギガバイト以上必要です。
tmpfsでは足りない場合、他の記録デバイスをマウントしてそちらで作業します。

起動はモード0又はモード1で行い、作業はrootで実施します;

$ mkdir work            ← 作業用ディレクトリを作成
$ doas -s
Password:
# cd work
# cp -pR /sysmedia/* .  ← 作業用ディレクトリに /sysmedia 以下のファイルをコピー
# ls -l
total 1427144
-rw-r--r--  1 root  wheel      71564 Oct 27 07:49 boot
-rwxr--r--  1 root  wheel       2048 Nov 29 16:44 boot.catalog
-rw-r--r--  1 root  wheel    5569179 Dec 27 19:19 bsd-fi
-rw-r--r--  1 root  wheel    5577796 Dec 27 19:19 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Nov 29 16:44 cdboot
-r-xr-xr-x  1 root  wheel       2048 Nov 29 16:44 cdbr
drwxr-xr-x  2 root  wheel         56 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec 27 19:19 fuguita-5.8.ffsimg
# rm boot.catalog       ← このファイルはmkhybridが生成するので念のため削除しておく
# mkhybrid -a -R -L -l -d -D -N -o ../livecd.iso -b cdbr -c boot.catalog .

Size of boot image is 4 sectors -> No-emulation CD boot sector
 1.40% done, estimate finish Wed Dec 30 13:59:44 2015
 2.80% done, estimate finish Wed Dec 30 13:59:44 2015
                       〜略〜
 98.09% done, estimate finish Wed Dec 30 13:59:49 2015
 99.50% done, estimate finish Wed Dec 30 13:59:49 2015
Total translation table size: 0
Total rockridge attributes bytes: 1105
Total directory bytes: 2048
Path table size(bytes): 22
Max brk space used 0
356809 extents written (696 Mb)
# exit
$ ls -l
total 1427360
-rw-r--r--  1 root   yoshi  730744832 Dec 30 13:59 livecd.iso
drwxr-xr-x  3 yoshi  yoshi        224 Dec 30 13:59 work
$

作業ディレクトリの1つ上の階層に作成された livecd.iso というファイルが河豚板のISOイメージファイルです。

動作中の河豚板から河豚板の生ディスクイメージを作る

この節では、LiveUSBのメモリイメージファイルを作成する方法を紹介します。

作成の原理は単純であらかじめイメージとなるファイルを作っておき、OpenBSDと河豚板を共存させる で説明した vnconfig コマンドを使ってこのファイルをディスクデバイスとしてアクセスできるように設定し、そのデバイスに対して usbfadm の newdrive を実行します;

$ doas -s
Password:
# vnconfig -l     ← vnd(4)の使用状況の確認、vnd5以外は未使用
vnd0: not in use
vnd1: not in use
vnd2: not in use
vnd3: not in use
vnd4: not in use
vnd5: covering /sysmedia/fuguita-5.8.ffsimg on sd0a, inode 8
# vnconfig vnd0 livecd.img  ← イメージファイルを /dev/vnd0 としてアクセス
# vnconfig -l                  できるようにする。
vnd0: covering livecd.img on ??, inode 89761
vnd1: not in use
vnd2: not in use
vnd3: not in use
vnd4: not in use
vnd5: covering /sysmedia/fuguita-5.8.ffsimg on sd0a, inode 8
# usbfadm                                                                      

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

  Version/Arch: 6.0/amd64  (FuguIta-6.0-amd64-201612291)
     Boot mode: manual
Data stored in: not set
 Data Saved as: not set

Type ? for help.

? : ? --> newdrive 

Please make sure the device inserted.
Then press ENTER -> 

==== FYI: sd[0-9] on syslog ================================
============================================================
Enter the name of device which FuguIta will be installed --> vnd0

    〜略〜

以上のように、LiveUSBのインストール先としてvnd0を指定します。これ以降は 動作中の河豚板から河豚板のLiveUSBやデータ保存用USBを作る で説明した手順でLiveUSBの書き込みを行います。

書き込みが終了したらusbfadmを抜け、vnodeデバイスの設定も解除します。

    〜略〜
** /dev/rvnd0d
** File system is already clean
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
3 files, 3 used, 578780 free (20 frags, 72345 blocks, 0.0% fragmentation)

? : ? --> q

Bye bye...
# vnconfig -u vnd0                                                             
# vnconfig -l                                                                  
vnd0: not in use
vnd1: not in use
vnd2: not in use
vnd3: not in use
vnd4: not in use
vnd5: covering /sysmedia/fuguita-5.8.ffsimg on sd0a, inode 8
# exit
$

以上でLiveUSB版のイメージファイルが作成されました。

河豚板をアプリケーションの専用マシンにする

河豚板は書込み可能なファイルをすべてメモリ上に持っているため、シャットダウン操作等を行わずいきなり電源を断にしたりしてもファイルシステムに不具合が発生することはありません。
また稼動中にusbfadmによるファイルの保存を行わない限りは、毎回同じ状態でシステムが立上ります。

このような特徴を利用して、河豚板をベースにして特定のアプリケーションを実行するための専用のマシン(ターンキーシステム: Turn Key System)などを作成することができます。

このようなシステムを構築するためには、今までに説明してきたテクニックを組合せて使います;

  • まず運用環境を整える。
    起動モード0で立ち上げて、各種設定やアプリケーションのインストール等を行い、目的の動作をするように環境構築をする。
  • ログイン操作なしでアプリケーションが立ち上がるように ttys(5) ファイルを編集する。

これらの詳細な手順は、このサイトにある EBUG勉強会/20140507_実用で使う河豚板 という資料で説明しておりますのでご参照下さい。

河豚板の開発ツールを使う

河豚板は不定期ではありますが、ライブシステム構築のために使用しているツールを公開しています。

この構築ツールを使用することで河豚板を改造した独自のライブシステムを作成することができます。

作業環境の準備

  • 必要なもの
    • OpenBSDインストーラにより導入した通常のOpenBSD動作環境一式。
    • カーネルのソースツリー (カーネルを再生成する場合に必要)
    • 河豚板のビルドツール
    • ISOイメージに焼き込む内容(OpenBSDのファイルツリー一式)
  • 作業条件
    • 上記「必要なもの」で挙げたものはすべてOpenBSDの同じバージョンのものである必要があります。
    • 全ての操作はroot権限で行います。

次節以降で、作成手順について解説します。
この作業例はOpenBSDのバージョンとして、OpenBSD 5.8を想定し、/tools-5.8 を作業ディレクトリとして仮定しています。

ビルドツールの取得と展開

ビルドツールは配布サイトの tools ディレクトリにありますので、ISOイメージなどと同じ方法で取得を行います。

# cd /root
# ftp http://mirror.ginzado.ne.jp/pub/FuguIta/tools/tools-5.8.tar.gz
Trying 110.92.1.251...
Requesting http://mirror.ginzado.ne.jp/pub/FuguIta/tools/tools-5.8.tar.gz
100% |**************************************************| 12091 KB    00:06    
12381448 bytes received in 6.20 seconds (1.90 MB/s)
# tar xvzf tools-5.8.tar.gz
# mv tools-5.8  /tools-5.8
# cd /tools-5.8
# ls -l
total 51264
-rw-r--r--   1 root  wheel       5366 Apr  4 06:18 Makefile
lrwxr-xr-x   1 root  1000          35 Oct 21  2013 bsd.mp.orig -> sys/arch/i386
/compile/RDROOT.MP/bsd
lrwxr-xr-x   1 root  1000          32 Oct 21  2013 bsd.orig -> sys/arch/i386/co
mpile/RDROOT/bsd
drwxr-xr-x   2 root  wheel        512 May  1 16:43 fuguita
drwxr-xr-x   5 root  wheel        512 Apr  6 14:51 lib
drwxr-xr-x   2 root  wheel        512 Sep 28  2012 media
-rw-r--r--   1 root  wheel  734003200 May 11 17:57 media.img
drwxr-xr-x   2 root  wheel        512 Oct  6  2010 rdroot
-rw-r--r--   1 root  wheel    1945600 Apr 28 23:47 rdroot.img
drwxr-xr-x  26 root  wheel        512 May 12 10:56 sys

カーネルの生成 (必要に応じて)

標準のカーネル(GENERIC)と異なる機能のカーネルを使用したい場合は、この手順を実施します。

カーネルソースを展開した後、シングルプロセッサ用、マルチプロセッサ用それぞれのカーネルを生成します。

# cd /usr/src
# ftp ftp://ftp.jaist.ac.jp/pub/OpenBSD/5.8/sys.tar.gz
Connected to ftp.jaist.ac.jp.
220 (vsFTPd 3.0.2)
331 Please specify the password.
230-Welcome to JAIST Public Mirror Service (ftp.jaist.ac.jp).
230-If you have any problem, please contact ftp-admin@jaist.ac.jp.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
250 Directory successfully changed.
Retrieving pub/OpenBSD/5.8/sys.tar.gz
local: sys.tar.gz remote: sys.tar.gz
150 Opening BINARY mode data connection for sys.tar.gz (20483072 bytes).
100% |**************************************************| 20003 KB    00:05
226 Transfer complete.
20483072 bytes received in 5.51 seconds (3.55 MB/s)
221 Goodbye.
# tar xzf sys.tar.gz
# cd /tools-5.8/sys/arch/i386/conf
# ls -l
total 0
lrwxr-xr-x  1 root  wheel  35 May 12 10:55 GENERIC -> /usr/src/sys/arch/i386/co
nf/GENERIC
lrwxr-xr-x  1 root  wheel  38 May 12 10:55 GENERIC.MP -> /usr/src/sys/arch/i386
/conf/GENERIC.MP
lrwxr-xr-x  1 root  wheel  41 May 12 10:55 Makefile.i386 -> /usr/src/sys/arch/i
386/conf/Makefile.i386
lrwxr-xr-x  1 root  wheel  35 May 12 10:55 RAMDISK -> /usr/src/sys/arch/i386/co
nf/RAMDISK
lrwxr-xr-x  1 root  wheel  38 May 12 10:55 RAMDISK_CD -> /usr/src/sys/arch/i386
/conf/RAMDISK_CD
lrwxr-xr-x  1 root  wheel  22 May 11 16:07 RDROOT -> ../../../../lib/RDROOT
lrwxr-xr-x  1 root  wheel  25 May 11 16:07 RDROOT.MP -> ../../../../lib/RDROOT.MP
lrwxr-xr-x  1 root  GC Warning:GC Warning: Repeated allocation of very large bl
ock (appr. size 131072):
	May lead to memory leak and poor performance.
Repeated allocation of very large block (appr. size 131072):
	May lead to memory leak and poor performance.

wheel 38 May 12 10:55 files.i386 -> /usr/src/sys/arch/i386/conf/files.i386

# config RDROOT 
Kernel options have changed -- you must run "make clean"
# config RDROOT.MP  
Kernel options have changed -- you must run "make clean"
# cd ../compile/RDROOT 
# make clean; make depend; make
# cd ../RDROOT.MP
# make clean; make depend; make

ルートファイルシステム(rd)とコンパイルしたカーネルを結合します。

# cd /tools-5.8
# make open-media
# make boot
# make close-all

ISOイメージに焼き込むファイルの準備

注)usbfadmコマンドはrsyncコマンドとrlwrapコマンドを使用するので、それらをpkg_addコマンドで追加しておきます。

# cd /tools-5.8
# make open-media
vnconfig vnd1 media.img
mount /dev/vnd1a media
# make open-fuguita
vnconfig vnd2 media/fuguita.ffsimg
mount /dev/vnd2a fuguita
# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/wd0a     17.4G    703M   15.8G     4%    /
/dev/vnd1a     700M    697M    2.7M   100%    /tools-5.8/media
/dev/vnd2a     676M    512B    676M     0%    /tools-5.8/fuguita
# cd (ISOイメージに焼くファイルツリーのトップディレクトリ)
# pax -rwpe . /tools-5.8/fuguita/.
./tools-5.8/fuguita/./.cshrc
./tools-5.8/fuguita/./.profile
./tools-5.8/fuguita/./altroot
./tools-5.8/fuguita/./bin
./tools-5.8/fuguita/./bin/[
      :
    (snip)
      :
./tools-5.8/fuguita/./var/cache/fontconfig/CACHEDIR.TAG
./tools-5.8/fuguita/./var/cache/fontconfig/a1a78d9c18cd095d3829c724810e6ffb-le3
2d8.cache-4
./tools-5.8/fuguita/./var/cache/fontconfig/ba022efc551c75e21c690774bbcf5304-le3
2d8.cache-4
./tools-5.8/fuguita/./var/cache/fontconfig/bc06c1eea3e636f72101cafc3fb39508-le3
2d8.cache-4
./tools-5.8/fuguita/./var/cache/fontconfig/c5f5d66d15c24edc3e863c27139db87e-le3
2d8.cache-4
./tools-5.8/fuguita/./var/cache/fontconfig/f22309b238134d3cca63435f528976cd-le3
2d8.cache-4
# cd /tools-5.8/fuguita
# ls -l
total 56
-rw-r--r--   1 root  wheel    578 Mar  9 01:51 .cshrc
-rw-r--r--   1 root  wheel    468 Mar  9 01:51 .profile
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 altroot
drwxr-xr-x   2 root  wheel   1024 Mar  9 01:52 bin
drwxr-xr-x   3 root  wheel  19456 Jun  3 00:27 dev
drwxr-xr-x  22 root  wheel   1536 Jun  3 00:18 etc
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 home
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 mnt
drwx------   2 root  wheel    512 Jun  3 00:37 root
drwxr-xr-x   2 root  wheel   1536 Mar  9 01:52 sbin
drwxrwxrwt   6 root  wheel    512 Jun  3 00:37 tmp
drwxr-xr-x  16 root  wheel    512 Mar  7 20:04 usr
drwxr-xr-x  21 root  wheel    512 Mar  7 20:04 var

不必要なファイルを削除したり、ファイルの長さを0にしたりします。

# (remove stale files ... for example ... /tmp/*, /home/*, /var/run/*.pid, etc...)
# (zeroed log files under /var/log/*)

/usr/fuguita/ 以下のディレクトリを作成します。 ... 河豚板はこれらのディレクトリの有無でこのパーティションが河豚板のシステムかどうかを判別しています。

# mkdir -p /tools-5.8/fuguita/usr/fuguita/{bin,doc,include,lib,libexec,sbin,sha
re,var}
# cp -p /tools-5.8/lib/{compress_man.sh,gen_mode0sldir}  /tools-5.8/fuguita/usr
/fuguita/sbin/.
# ln -s /boottmp/usbfadm /tools-5.8/fuguita/usr/fuguita/sbin/usbfadm
# ln -s /boottmp/fdadm /tools-5.8/fuguita/usr/fuguita/sbin/fdadm

mkhybridコマンドを使用してISOイメージを生成します。

# cd /tools-5.8
# ls -l
total 1087485
-rw-r--r--   1 root  wheel       5366 Apr  4 06:18 Makefile
lrwxr-xr-x   1 root  1000          35 Oct 21  2013 bsd.mp.orig -> sys/arch/i386
/compile/RDROOT.MP/bsd
lrwxr-xr-x   1 root  1000          32 Oct 21  2013 bsd.orig -> sys/arch/i386/co
mpile/RDROOT/bsd
drwxr-xr-x  13 root  wheel        512 Jun  3 00:56 fuguita
drwxr-xr-x   5 root  wheel        512 Apr  6 14:51 lib
drwxr-xr-x   3 root  wheel        512 Apr 14  2012 media
-rw-r--r--   1 root  wheel  734003200 Jun  3 00:59 media.img
drwxr-xr-x   2 root  wheel        512 Oct  6  2010 rdroot
-rw-r--r--   1 root  wheel    1945600 Apr 28 23:47 rdroot.img
drwxr-xr-x  26 root  wheel        512 May 12 10:56 sys
# ls -l /tools-5.8/media 
total 1427752
-r-xr-xr-x  1 root  bin        71452 Apr  4 09:52 boot
-rwxr--r--  1 root  wheel       2048 May 11 02:08 boot.catalog
-rw-r--r--  1 root  wheel    5605482 May  9 19:52 bsd-fi
-rw-r--r--  1 root  wheel    5614117 May  9 19:53 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 May  9 19:53 cdboot
-r-xr-xr-x  1 root  wheel       2048 May  9 19:53 cdbr
drwxr-xr-x  2 root  wheel        512 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Jun  3 00:59 fuguita.ffsimg
# cd /tools-5.8
# ls -l fuguita
total 56
-rw-r--r--   1 root  wheel    578 Mar  9 01:51 .cshrc
-rw-r--r--   1 root  wheel    468 Mar  9 01:51 .profile
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 altroot
drwxr-xr-x   2 root  wheel   1024 Mar  9 01:52 bin
drwxr-xr-x   3 root  wheel  19456 Jun  3 00:27 dev
drwxr-xr-x  22 root  wheel   1536 Jun  3 00:18 etc
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 home
drwxr-xr-x   2 root  wheel    512 Mar  9 01:51 mnt
drwx------   2 root  wheel    512 Jun  3 00:57 root
drwxr-xr-x   2 root  wheel   1536 Mar  9 01:52 sbin
drwxrwxrwt   6 root  wheel    512 Jun  3 00:37 tmp
drwxr-xr-x  16 root  wheel    512 Mar  7 20:04 usr
drwxr-xr-x  21 root  wheel    512 Mar  7 20:04 var

河豚板のシステム用vnodeデバイスとそれらのマウントを解除します。

# make close-fuguita
umount fuguita
vnconfig -u vnd2

mkhybridコマンドを実行して、ISOイメージを作成します。

# make hyb
make open-fuguita
vnconfig vnd2 media/fuguita.ffsimg
mount /dev/vnd2a fuguita
echo "5.8-20150603$((0+1))" > fuguita/usr/fuguita/version
make close-fuguita
umount fuguita
vnconfig -u vnd2
mkhybrid -a -R -L -l -d -D -N  -o livecd.iso  -v -v  -A "FuguIta - OpenBSD Live
CD"  -P "Copyright (c) `date +%Y` KAWAMATA Yoshihiro"  -p "KAWAMATA Yoshihiro,
http://fuguita.org/?FuguIta"  -V "FuguIta-5.8-20150603$((0+1))"  -b cdbr  -c bo
ot.catalog  media  && echo $((0+1)) > revcount_cdmaster
mkhybrid 1.12b5.1
Scanning media
Scanning media/etc
  23  1202 
  24   456 etc
Cache hit for /..
26 60 media/boot
61 61 media/boot.catalog
62 2799 media/bsd-fi
2800 5541 media/bsd-fi.mp
5542 5577 media/cdboot
5578 5578 media/cdbr
5579 356842 media/fuguita.ffsimg
Cache hit for etc/.
Cache hit for etc/..
356843 356843 media/etc/boot.conf
356844 356844 media/etc/random.seed

Size of boot image is 4 sectors -> No-emulation CD boot sector
Total extents scheduled to be written = 356845
  1.40% done, estimate finish Wed Jun  3 01:10:36 2015
  2.81% done, estimate finish Wed Jun  3 01:08:14 2015
    :
  (snip)
    :
 98.08% done, estimate finish Wed Jun  3 01:14:35 2015
 99.48% done, estimate finish Wed Jun  3 01:14:27 2015
Total translation table size: 0
Total rockridge attributes bytes: 1101
Total directory bytes: 2048
Path table size(bytes): 22
Max brk space used 0
356845 extents written (696 Mb)

全てのイメージファイルを閉じます。

# make close-all
umount fuguita
umount: fuguita: not currently mounted
*** Error 1 in target 'close-fuguita' (ignored)
vnconfig -u vnd2
vnconfig: VNDIOCCLR: Device not configured
*** Error 1 in target 'close-fuguita' (ignored)
umount media
vnconfig -u vnd1
umount rdroot
umount: rdroot: not currently mounted
*** Error 1 in target 'close-rdroot' (ignored)
vnconfig -u vnd0
vnconfig: VNDIOCCLR: Device not configured
*** Error 1 in target 'close-rdroot' (ignored)
# ls -l
total 2515268
-rw-r--r--   1 root  wheel       5366 Apr  4 06:18 Makefile
lrwxr-xr-x   1 root  1000          35 Oct 21  2013 bsd.mp.orig -> sys/arch/i386
/compile/RDROOT.MP/bsd
lrwxr-xr-x   1 root  1000          32 Oct 21  2013 bsd.orig -> sys/arch/i386/co
mpile/RDROOT/bsd
drwxr-xr-x   2 root  wheel        512 May  1 16:43 fuguita
drwxr-xr-x   5 root  wheel        512 Apr  6 14:51 lib
-rw-r--r--   1 root  wheel  730818560 Jun  3 01:14 livecd.iso
drwxr-xr-x   2 root  wheel        512 Sep 28  2012 media
-rw-r--r--   1 root  wheel  734003200 Jun  3 01:21 media.img
drwxr-xr-x   2 root  wheel        512 Oct  6  2010 rdroot
-rw-r--r--   1 root  wheel    1945600 Apr 28 23:47 rdroot.img
-rw-r--r--   1 root  wheel          2 Jun  3 01:14 revcount_cdmaster
drwxr-xr-x  26 root  wheel        512 May 12 10:56 sys

手順は以上です。
livecd.iso が作成されたISOイメージとなります。

【メモ】
nabekenさんという方が河豚板を基にしてmyFuguitaというライブシステムを作成されています。myFuguitaは、河豚板の構築環境をOpenBSDの標準ビルドシステムに組み込み、amd64アーキテクチャで動作するように改良したものです。

終わりに

河豚板についての説明は以上です。

このガイドでは河豚板の導入から応用・開発までを紹介しましたが、全体を通して河豚板の方向性を感じ取って頂けましたでしょうか。

河豚板は「ITにおけるアーミーナイフ」を目指しています。つまり、手軽に持ち運べ、様々な用途に利用できる、ということです。その代わり、性能的には特定用途につくられた専用のシステムにはかないませんし、初心者が何の予備知識もなしにすぐに使えるというものでもありません。

このガイドはそんな河豚板に関する取扱説明書のようなものと理解して頂ければ幸いです。

【メモ】
作者は若い頃貧乏学生だったので、ハンダゴテとスイスアーミーナイフだけで電子工作をしていました。

そして、アーミーナイフの性能が高品質なステンレス鋼の製造や加工の技術に支えられているように河豚板の機能もまた、OpenBSDの卓越した設計と実装に支えられています。今回この文書を作成して改めてそのことを実感致しました。

長年にわたりOpenBSDの改良を進めてこられたTheo de Raadt氏を始めとするOpenBSD開発コミュニティの皆様には改めて御礼を申し上げます。
さらに、河豚板に同梱させて頂いている種々のフリーソフトウェアに携っている方々、そして様々なユーザコミュニティの方々にも御礼を申し上げます。特にEBUG (Echigo BSD Users Group)のメンバーの方々には、配布サイトのご提供、そして様々な提言・助言を頂いており、感謝の念に絶えません。
これらなしには10年もの間、開発を続けることは到底不可能だったろうと思います。

今後とも、河豚板をどうぞよろしくお願い致します。

2015年12月30日
川俣 吉広


2015年12月30日 作成
2017年01月15日 改訂
2018年08月01日 改訂
2018年08月08日 改訂

Attach file: filequit-verify-win.png 257 download [Information] filevarious-xclt.png 315 download [Information] filestartx.png 313 download [Information] filedlsite.png 374 download [Information] fileindex.php.png 298 download [Information] filefugu-desktop.fig 166 download [Information] filefugu-desktop.png 460 download [Information] filefuguita-usb.png 515 download [Information] filefuguita-usb.fig 157 download [Information] filefuguita-mnt.png 434 download [Information] filefuguita-mnt.fig 159 download [Information] fileeldr.png 416 download [Information] fileemacsinfo.png 541 download [Information] filefuguboot.png 531 download [Information]
Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2018-08-08 (Wed) 17:22:56 (41d)