FuguIta Guide is the English version of FuguIta Gaido (Japenese)
translation in progress 川俣 吉広
2015年12月30日 What is FuguIta? †FuguIta(ふぐいた)はOpenBSDというオペレーティングシステム(Operating System: OS)を基に作成されたライブシステムです。 FuguItaは無償で入手・利用することができ、CD-R/CD-RWやUSBメモリに書込んだFuguItaをPCで起動するだけで手軽にOpenBSDを活用することができます。 さらに、FuguItaはバラエティに富んだ起動方法をサポートしていますので単にLiveCD/LiveUSBとして使うだけでなく、ネットワークのテスト環境を簡単・迅速に運用したり、電源を投入するだけでアプリケーションソフトを使用できるターンキーシステムを構築したりといった用途にも用いることができます。 このFuguItaガイドでは、記録メディアへのFuguItaの書込み方法、起動方法、基本的な使用方法に始まり、進んだ応用のための使用手順や設定方法に至るまで、FuguItaを活用するためのノウハウを一通り解説致します。
Table of Contents
Creating Media of FuguIta †この章では、FuguItaが起動するCDやUSBメモリを作成する方法を紹介します。 FuguItaを使うには、主に2つの方法があります。 1つはCD-RやCD-RWにFuguItaを書込み、これを起動する方法で「LiveCD」などと呼ばれます。 FuguItaはLiveCD版とLiveUSB版のどちらを使用しても同じように利用できますが、それぞれ特徴がありますので用途によって使い分けるのがよいと思います。
総じて「動作の確実性や経済性を求めるのであればLiveCD版が、性能や利便性を重視するならLiveUSB版が向いている」と言えます。
最初にFuguItaを使い始めるには、以下の手順を踏みます;
以下、それぞれの手順について説明をします。 Downloading FuguIta †#ref(): File not found: "dlsite.png" at page "FuguItaガイド" FuguItaはフリーソフトウェアです。FuguItaの最新版を始めとした全ての版はインターネットで公開され、自由にダウンロードして使用することができます。 FuguItaのダウンロードサイトは2つあります。 サイトの内容は同じなので、どちらのサイトからでも同じようにダウンロードできます。 このうち、「FuguIta-」で始まる名前のファイルがFuguItaの配布物です。 このファイル名の意味は、次のようになっています。 FuguIta-5.8-201512051.iso.gz --- --------- --- --+->ファイルの圧縮形式です。 | | | ・gz ... gzipコマンドを使って圧縮 | | | ・xz ... xzコマンドを使って圧縮 | | | | | +->ファイルの種類です | | ・iso ... CD-R/CD-RW書込み用のISOイメージです | | ・img ... USBメモリ書込み用の生イメージです | | | +->FuguItaのリリース(バージョン)です | ・「年月日」「一連番号」 の形式となっています | ・一連番号は、一日のうち2つ以上のFuguItaを作成した場合、 | 一つづつ増えて行きます | +->このFuguItaの元となっているOpenBSDのバージョンです 作成するのがLiveCDか、あるいはLiveUSBか、そして手元で使えるファイル圧縮/展開ソフトがgzipかxzかでファイルを選択してダウンロードします。
ダウンロードが完了したら、圧縮されているファイルを展開します。
展開が完了するとファイルサイズが約700メガバイトになり、ファイル名も.gzあるいは.xzの拡張子が取れたものになります。 Creating LiveCD of FuguIta †LiveCD版のFuguItaを作るには700MB以上の容量を持つCD-R/CD-RWメディアを用意し、ダウンロード・展開済みのISO形式のファイルを書き込みます。 cdio -f /dev/rcd0c blank ←CD-RWの内容を消去する。CD-Rの場合は実行しなくてよい。 cdio -f /dev/rcd0c tao FuguIta-5.8-201512051.iso
Creating LiveUSB of FuguIta †LiveUSB版のFuguItaを作るには1ギガバイト以上のサイズのUSBメモリを用意し、ダウンロード・展開済みのIMG形式のファイルを書き込みます。 dd if=FuguIta-5.8-201512051.img of=/dev/rsd0c
Booting FuguIta †この章ではFuguItaの起動方法、およびその途中で行う設定値の入力について説明します。 FuguItaを書き込んだCDやUSBメモリをPCにセットして起動すると、FuguItaのシステムが起動します。
FuguItaが起動すると、以下のようなメッセージが表示されます; Booting from DVD/CD... CD-ROM: E0 Loading /CDBOOT probing: pc0 com0 apm pci mem[639K 254M a20=on] disk: fd0 hd0+* cd0 >> OpenBSD/i386 CDBOOT 3.23 | >> Uniprocessor kernel is >> 'bsd-fi' . >> Enter this if you wish. boot> booting cd0a:/bsd-fi.mp: 11699164+1069068 [83+412048+405876]=0xcf5104 entry point at 0x200120 [ using 818460 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-2015 OpenBSD. All rights reserved. http://www.OpenBSD.org 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 cpu0: QEMU Virtual CPU version 2.2.1 ("GenuineIntel" 686-class) 1.96 GHz cpu0: FPU,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,PGE,CMOV,MMX,FXSR,SSE,SSE2,SSE3,POPCNT,HV,PERF real mem = 267796480 (255MB) avail mem = 248184832 (236MB) mpath0 at root ...省略... vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on rd0a swap on rd0b dump on rd0b #ref(): File not found: "fuguboot.png" at page "FuguItaガイド"
OpenBSDカーネルの起動が完了すると、FuguItaのバナーが表示されます。 ============================================ = ______ __ _ = / ____/ | |_| |__ = / /____ ______ __ _| /_ _/_____ = / ___/ / / / __ \/ / / | | | | / _ | = / / / /_/ / /_/ / /_/ /| | | |_| (_) |__ =/_/ \____/\__ /\____/ |__| \___/____/__/ = __/ / = /___/ = = Welcome to FuguIta - OpenBSD Live System! = http://fuguita.org/?FuguIta ============================================= FuguItaのバナー表示に続きこのPCに接続されているディスク機器の調査が行われ、そのうちどれにFuguItaのシステムがインストールされているかの表示が行われます。 以下の例では「FuguIta's operating device(s): cd0a.」とあるので、LiveCD版のFuguItaがCD-R/RWやBlu-Rayなどの光学ドライブにセットされていることがわかります。 よって、「Which is FuguIta's operating device?」(FuguItaの運用機器はどれですか?)のプロンプトに対し cd0a と入力します。
scanning partitions: wd0i wd0j cd0a FuguIta's operating device(s): cd0a. Which is FuguIta's operating device? [default: cd0a] -> ← <Enter>のみ入力
続いて、メモリに関する設定を行います。 以下の例ではまず、このPCには約255メガバイトのメモリが装着されていることを報告しています。 LiveCDやLiveUSBなどのシステムはPCに内蔵されたハードディスクを使用しないため、その替わりにメモリ上にディレクトリやファイルを保持する領域を確保します。OpenBSDではそのための仕組みとしてtmpfs (Temporary File System)というものがあり、FuguItaもこのtmpfsを使用しています。 tmpfsの割当てサイズとして0を指定すると、装着されているメモリに応じて自動で割当てが行われます。
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」キーの左隣となります。
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)」と呼びます。
Please wait ... Changing local password for root. New password: ← パスワード入力は表示されません Retype new password: ← 確認のため、もう一回入力します 最後に、ネットワーク関連の設定を入力します。
最初に、FuguItaを走らせるPCに名前(ホスト名: host name)を付けます。 host name (without domain) -> fugu-demo 次は使用するIPプロトコルバージョンの設定です。 「n」を入力するとIPプロトコルに関する設定は行なわれません。この場合はこれ以上の設定項目はなく、 ログイン画面に移行 します。 以下の例ではIPv4, IPv6両方を使う設定としています。 IP version(s) to use [n, 4, 6 or 46]-> 46 続いてネットワークインターフェースの設定を行います。 まず、この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>のみ入力
次はこのPCのFQDN (Fully Qualified Domain Name)を入力します。FQDNとは先程入力した、このコンピュータの名前にドメイン名を付加したものです。 FQDN of this host -> fugu-demo.localnet
最後にDNSやIPアドレス関連の設定があります。
DNSの設定には3パターンあります。
以下の例のように<Enter>キーだけを入力するとDHCPによる設定となり、DNSサーバは自動で設定されます。
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アドレス関連の設定も行います。 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/5.8/ No devices found which need firmware files to be downloaded. starting local daemons: cron. Sat Dec 5 15:08:50 UTC 2015 OpenBSD/i386 (fugu-demo.localnet) (ttyC0) login: ログインプロンプト「login:」が表示されると、このPCはユーザが利用可能な状態になっています。 Using FuguIta (for new comer) †FuguItaを起動する では起動及びその設定方法について説明しました。 また、Unix系OSになじみのない人、そして他のUnix系OSを使用経験がある人が参照すると役に立つ情報源をそれぞれ紹介します。 Logging in and logging out †FuguItaの起動が完了すると、OpenBSDオペレーティングシステムのログイン画面が表示されます。 OpenBSD/i386 (fugu-demo.localnet) (ttyC0) login: root Password: Last login: Sat Dec 5 15:10:49 on ttyC0 OpenBSD 5.8-stable (RDROOT.MP) #2: Wed Nov 11 13:18:48 JST 2015 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 mail. # ログインに成功するとシェルのプロンプト「#」が表示され、コマンドが実行可能な状態になります。 # 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」と入力します。
# exit OpenBSD/i386 (fugu-demo.localnet) (ttyC0) login: ログアウトすると「login:」が表示され、再度ログインできる状態になります。 Creating an account of a ordinary user †起動直後のFuguItaは、スーパユーザ(システム管理者)用のアカウントrootでのみログインできます。 Unix系のOSでは、通常は一般ユーザとしてログインし、日常の利用を行います。
以下、一般ユーザとしてyoshiというアカウントを作成してみます。 ユーザアカウントを追加するにはadduserというコマンドを使用します。 # 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という一般ユーザアカウントが作成されましたので、実際にログインできるか確認してみます。 # exit OpenBSD/i386 (fugu-demo.localnet) (ttyC0) login: yoshi Password: OpenBSD 5.8-stable (RDROOT) #2: Wed Nov 11 13:18:12 JST 2015 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/i386 (fugu-demo.localnet) (ttyC0) login:
Shutting down FuguIta †FuguItaの運用を終了するには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)します。 システムの停止や再起動を行うと、今回の起動後に行った設定や作成したユーザアカウント、また、ファイルやディレクトリの作成や編集、削除などの一切の結果は消えてなくなります。
FuguIta上で行った操作がシステムを停止すると消えてしまうということは、見方を変えると内蔵ハードディスクにインストールされている既存のシステムなどに影響を及ぼしにくいということでもあります。 Using X Window System †#ref(): File not found: "fugu-desktop.png" at page "FuguItaガイド" OpenBSDはX Window Systemというグラフィック環境を含んだ形で出荷されており、FuguItaもこのX Window Systemを使用することができます。
Xを起動するには、シェルのプロンプトが出ている状態で startx と入力します。 $ startx startxを実行してしばらくすると、ディスプレイの表示が右図のような画面に切り替わります。 FuguItaではXを起動すると、IceWMというウィンドウ・マネージャとROX-Filerというデスクトップ環境が立ち上がります。 上の起動画面では画面上部のアイコンが並んだパネルと壁紙部分はROX-Filerが管理しています; 各アイコンの機能は画像の表示の通りですが、以下簡単に説明します。
個々のアプリケーションの詳細については、それぞれのマニュアル等を参照して下さい。 画面下部のバーはIceWMによって管理されています;
Xを終了するには、全てのアプリケーションを終了させた後、画面左下のIceWMボタンをクリックして logout を選択します。 Setting up Japanese Environment †Xでは、日本語の表示や入力を行うことができます。
編集を行うのは .xinitrc の以下の部分です。 # #======================================= # # If you wish to activate your locale settings # # 1) Extract your locale files like this; # # # cd /usr/local/share # # # tar xvjpf locale.tar.bz2 'locale/fr/*' # # (In case of French locale for example) # # 2) Uncomment and reconfigure following commands # # # LANG=ja_JP.UTF-8 # LC_ALL=$LANG # XMODIFIERS='@im=uim' # GTK_IM_MODULE='uim' # QT_IM_MODULE='uim' # export LANG LC_ALL XMODIFIERS GTK_IMMODULE QT_IMMODULE # # # uim-xim & # # # #======================================= この各行の先頭にあるハッシュ記号と空白を削除し、以下のようにします。 #======================================= # If you wish to activate your locale settings # 1) Extract your locale files like this; # # cd /usr/local/share # # tar xvjpf locale.tar.bz2 'locale/fr/*' # (In case of French locale for example) # 2) Uncomment and reconfigure following commands # LANG=ja_JP.UTF-8 LC_ALL=$LANG XMODIFIERS='@im=uim' GTK_IM_MODULE='uim' QT_IM_MODULE='uim' export LANG LC_ALL XMODIFIERS GTK_IMMODULE QT_IMMODULE # uim-xim & # #=======================================
.xinitrc ファイルの編集を終えた後、Xを立ち上げなおすと日本語に対応した環境になっています。
OpenBSDの多言語化対応は比較的最近開始されました。FuguItaでも日本語の対応は限定的となっています。 Saving your setttings and files †FuguItaではユーザが作成したファイル、設定の変更、追加されたパッケージ、システムのログなど一切のファイルをLiveUSB版のFuguItaに作成されているデータ保存用パーティションに保存し、以降の起動時に呼び出すことができます。 データの保存にはrootでログインし、usbfadmコマンドを実行します。
# usbfadm Welcome to USB flash maintenance tool. Boot mode: manual Type ? for help. ?:? -> まず、targetコマンドを使用して保存先のパーティションを指定します。 ?:? -> target Rescanning USB flash Please make sure the device inserted. Then press ENTER --> USB flash memory found as sd0 次に、saveasコマンドを使用して保存するデータに名前を付けます。 /dev/sd0d:? -> saveas Enter data set name [5.8-fugu-demo] -> Now data set name is set to ``5.8-fugu-demo''. 当初「?:?」だったプロンプトの文字列が変化していることにご注目下さい。 今ほどのtargetコマンドとsaveasで設定した値がプロンプト内に表示され、確認ができるようになっています。 最後にsyncコマンドを実行し、データを実際に保存します。 /dev/sd0d:5.8-fugu-demo -> sync Sync current mfs as 5.8-fugu-demo, OK? -> y building file list ... done created directory /mnt/livecd-config/5.8-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 : 5.8-fugu-demo -> info Filesystem Size Used Avail Capacity Mounted on /dev/sd0d 218M 18.9M 179M 9.6% /mnt scanning... 18.9M 5.8-fugu-demo データは問題なく保存されているようなのでusbfadmを終了します。 /dev/sd0d : 5.8-fugu-demo -> bye #
Retrieving your settings and files at boot time †設定やファイルを保存する で説明した方法で保存されたデータは以降の起動時に読み込ませ、環境を復帰させることができます。 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 USB flash memory found as sd0 available configs; 5.8-fugu-demo your config name? -> 5.8-fugu-demo Copying files from flash to mfs ... done 保存したデータ名を指定すると退避させていたデータを復帰し、起動が再開されます。 ログイン後、さらにデータを保存することもできます。手順は 設定やファイルを保存する で説明した方法と同じですが、
すでにLiveUSB上にファイルが保存されているため、変更したファイルやディレクトリのみが対象となります。 シャットダウン時、データの退避は自動的には行われないので、その都度手動でusbfadmコマンドを実行する必要があります。 これを自動化したい場合は 終了時にデータが自動で保存されるようにする をご参照下さい。 Learning Unix †本ガイドの冒頭で説明したように、FuguItaはUnix系OSの一種である OpenBSD をベースにして作成されています。 Unixは約半世紀前の1969年に開発され、以降さまざまなコンピュータ向けの実装が作成されてきました。今ではUnix系のOSはスーパーコンピュータからスマートフォンや家電製品、あるいは小さな組込み機器までさまざまな環境で使用されるに至っています。 Unix系OSはMicrosoft WindowsなどのOSとは操作方法が大きくことなっており、最初はどのように使ってよいか見当がつかない方もいるかも知れません。 Unix系OSの基本的な部分はコンシューマユーザ向けに作られてはいません。OpenBSDも例外ではなく、予備知識を持たないユーザを想定した親切なユーザインターフェースなどは初期状態ではほとんど用意されていません。言い替えると「なんとなくあちこちいじっているうちに使い方がわかった」ということにはなりません。 そんなUnix系OSを理解し、活用するにはどのようなアプローチを取ればよいのでしょうか。 Books †
Do it yourself
|
1 | 一般コマンド |
2 | システムコールとエラー番号 |
3 | ライブラリ |
3f | Fortran言語のリファレンスガイド |
3p | Perl言語のリファレンスガイド |
4 | デバイスドライバ |
5 | ファイル形式 |
6 | ゲーム |
7 | その他 |
8 | システム保守・運用のためのコマンド |
9 | カーネル内部情報 |
X11 | X11R6と同じ |
X11R6 | X Window System |
local | /usr/local配下にインストールされたコマンド |
n | Tcl/Tk言語のコマンド |
各セクションのマニュアルの内容は現状のシステムに追従し続けており、常にアップデートと推敲が行われています。
また他のUnix系OSでは4章(デバイスドライバ)などの章で、ほとんど情報が提供されていない実装系もありますが、OpenBSDではこのような情報も完備されており、例えば無線LANの設定のように使用するハードウェアに依存した設定情報が必要な場合も十分な情報を得ることができます。
#ref(): File not found: "emacsinfo.png" at page "FuguItaガイド"
GNUプロジェクト由来のコマンドやEmacs上で動作するアプリケーションに関しては、Info形式のドキュメントが提供されている場合があります。
InfoドキュメントはEmacsエディタ上で、<Meta>-x info<Enter>、あるいは<Escape> x info<Enter>と入力することで閲覧できます。
【メモ】
⇒シェルのコマンドラインから実行・閲覧が可能なinfoコマンドもあります。infoコマンドによる表示では日本語のInfoドキュメントがうまく表示されませんのでご注意下さい。
マニュアルページやInfo以外にもアプリケーション固有のドキュメントがあります。 それらは主に次に挙げるディレクトリの下にあります;
サーバやアプリケーションソフトなどの設定ファイルはすべて/etc以下に集約されています。
パッケージ管理ツールports/packagesで追加されたソフトウェアは、/usr/local以下にインストールされますが、設定ファイルに関しては/etc以下に配置されます。X関連の設定ファイルについても同様です。
システムの動作ログは、/var/log以下にあります。唯一、cronのみが/var/cron/logというログファイルを作成します。
FuguItaを起動する で説明した起動時に表示されるカーネルメッセージは、/var/run/dmesg.boot というファイルに記録されています。システム起動完了後はこのファイルの内容を閲覧することで、システム起動時の様子を調査することができます。
作者の知る限り、OpenBSDユーザ向けに書かれた日本語の書籍は2015年現在出版されておりません。
BSD系のUnix向けの書籍の中には、
など、部分的にOpenBSDについて言及されている書籍もあります。
英語の書籍に関しては公式サイトの記述をご参照下さい。
Absolute OpenBSD, 2nd Edition や The book of PF, 3rd Editionなど、OpenBSD向けの書籍がいくつか出版されているようです。
FuguItaを使う【一般編】 ではFuguItaの基本的な使用手順について説明しました。
この章ではFuguItaの特徴を活かした、さらに進んだ利用法について紹介します。
【メモ】
⇒この章では以下のように、FuguItaを使う【一般編】 で設定した環境を引続き使用する前提で説明を行います;
- ホスト名としてfugu-demo.localnetを想定
- インターネットにアクセスできる状態になっている
- 一般ユーザyoshiが作成されている。yoshiはwheelグループにも属しているため、rootになることができる。
FuguItaはOpenBSDで提供されているソフトウェアに、その他日常よく使うであろうと思われるアプリケーションやシステム管理などに便利やツール類を追加しています。
更に、システム起動後にもユーザがアプリケーションを追加することができます。
アプリケーションを追加するにはOpenBSDのports/packagesシステムを利用する方法が手軽です。
packagesのソフトウェアを追加するには、pkg_addというコマンドをrootで実行します。例として、ウェブブラウザであるMozilla Firefoxをインストールする例を以下に示します(例の中にある「5.8」の部分は、実際に使用しているFuguItaのバージョンで置き換えて下さい)。
$ 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種類のコメントが表示されています;
# pkg_add mozilla-dicts-caといった方法で追加できます。
以上の例のような方法で、アプリケーションを追加することができます。
ports/packagesからどのようなソフトウェアがpkg_addできるかはウェブブラウザでftp://ftp.jaist.ac.jp/pub/OpenBSD/5.8/packages/i386/をご覧下さい。またはftp://ftp.jaist.ac.jp/pub/OpenBSD/5.8/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を利用せずソフトウェア開発元が公開しているソースコードを直接コンパイル・インストールする所謂「野良ビルド」も可能です。
FuguItaでは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 USB flash maintenance tool. Boot mode: usbflash Data stored in: /dev/sd0d Data Saved as: 5.8-fugu-demo Type ? for help. /dev/sd0d : 5.8-fugu-demo ->
先に説明したようにdoas.confの設定を行うと、doas実行時にパスワードを訊かれますが、これにはrootのパスワードではなく、doasを実行したユーザのパスワードを入力します。
パスワードを入力しないでdoasを実行することもできます。詳しくはdoas.conf(5)を参照して下さい。
【メモ】
⇒doasはUnix系のOSで一般的に使われているsudoと置き換えるためにOpenBSD開発陣が再実装したコマンドです。sudoはOpenBSD 5.8以降はOS本体には含まれていませんが、portsからインストールして使うことが可能です。
モード0で起動した直後のFuguItaは、時間帯(time zone: タイムゾーン)がUTC (Universal Coordinated Time: 協定世界時)になっています。
協定世界時に比べ日本標準時(Japan Standard Time: JST)は9時間進んでいます。
$ date Wed Dec 23 02:27:58 UTC 2015
FuguItaの時間帯を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 (Network Time Protocol)はコンピュータがネットワーク上で通信を行いながら、それぞれの時刻を同期させるためのプロトコル(通信規約)です。
OpenBSDはNTPを用いてインターネット上の時刻基準に自身の時刻を同期させる機能をもっており、この機能はFuguItaでも使用することができます。
OpenBSDはインストール時にNTPを使用するかどうかの設定を行います。一方、FuguItaではこの機能はデフォルトで有効になっています。
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というサーバ群を参照するようになり、FuguItaの設定もそれに倣っています。
企業の社内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は時刻のずれを非常にゆっくりと修正していきます。これはいきなり時刻を大きく変更するとシステムの運行に悪影響を及ぼす可能性があるからです。そのため、時刻のずれが大きい場合は同期が取れるまでに長い時間がかかる場合もあります。
前節では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などをご参照下さい。
これまでも説明したようにネットワーク関連の設定はFuguItaの起動時に行われるので、これで問題なく通信が行われれば特に設定を変更する必要はありません。
FuguItaをサーバやネットワークのゲートウェイなどとして運用する場合は、設定を変更したり追加したりする必要が出て来るかもしれません。
【メモ】
⇒使用しているPCにどのようなネットワークインターフェースがあるかはコマンドの実行「ifconfig -a」で表示されます。
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)を参照して下さい。
FuguItaの起動時にモード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はFuguItaに収録されているソフトウェアのみで運用が可能な場合に使用できます。
モード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で再起動した場合にはファイル保存時の状態が復帰します。
FuguItaではLiveCD版・LiveUSB版のいずれもシステムが格納されているパーティションは、通常書込み不可でマウントされます。
したがってファイルそのものを書き換えることはできませんが、シンボリックリンクの置き換えを行うことによってそれらのファイルの内容を変更することは可能です。
まず最初に、FuguItaのファイルシステムの構成について簡単に説明します。
#ref(): File not found: "fuguita-mnt.png" at page "FuguItaガイド"
右の図は起動モード0で運用中のFuguItaのファイルシステムの様子を示しています。
/usr も /etc などと同様、/ram/usr へのシンボリックリンクとなっていますが、/usr 以下のファイルは通常、書き換えられることはほとんどありません。これらのファイルはtmpfsの容量を節約するためにそのほとんどが /fuguita/usr 以下の該当するファイルへのシンボリックリンクになっています。
図では、 /usr/bin/vi がその例となります。
FuguItaのファイルシステムは以上説明したような構造になっているため通常の運用、つまり /etc 以下の設定ファイルを編集したりとか、ホームディレクトリ上にファイルを作成する、といったような場合はこのような構造を意識する必要はありません。
但し、/usr 以下のファイルでシンボリックリンクとなっているものを変更する場合はこれらの状況を踏まえて操作をする必要があります。
そのような例として、動画プレーヤであるMPlayerの設定を変更するケースを以下に説明します;
#ref(): File not found: "eldr.png" at page "FuguItaガイド"
FuguItaではROXファイルマネージャ中の動画ファイルアイコンをクリックするか、もしくはアイコンを画面上部のパネルにあるMPlayerアイコンボタンにドロップすることで、動画が再生されます。
最近は動画サイトにアップロードされている動画ファイルも解像度が高くなり、古いPCでは動画のデコードが追いつかず映像と音声のタイミングがずれてゆく場合もあります。
この節ではmplayerの動作を変えることで、この問題を解消、あるいは緩和できるかどうか検討してみることにします。
MPlayerのマニュアルページを見てゆくと、-framedrop というオプションがあります。これは動画の再生速度が音声に追い付かない場合、フレームをスキップするオプションです。他には -nodouble や -cache, -cache-min なども役に立ちそうです。
ファイルマネージャからの再生時にこれらのオプションが付加されるようにしてみましょう。
ファイルマネージャから動画を再生する時、実際には /usr/fuguita/bin/mplayer-wrapper.sh というシェルラッパーが呼び出されています。
$ cd /usr/fuguita/bin $ ls -l mplayer-wrapper.sh lrwxr-xr-x 1 root wheel 43 Oct 25 19:12 mplayer-wrapper.sh -> /fuguita/usr/f uguita/bin/mplayer-wrapper.sh $ cat mplayer-wrapper.sh #!/bin/sh exec kterm -iconic -name mplayerconsole -title 'mplayer console' -e /usr/local/bin/mplayer "$@" $
この節の冒頭で説明したとおり、mplayer-wrapper.sh は書込み不可ファイルへのシンボリックリンクとなっており、そのままでは編集できません。そこで、このシンボリックリンクの内容をコピーしたファイルを作り、そのファイルに対して編集を行います。
$ doas -s Password: # mv mplayer-wrapper.sh mplayer-wrapper.sh.bak ←シンボリックリンクは名前を変えて残す # cp mplayer-wrapper.sh.bak mplayer-wrapper.sh ←それをコピーするとコピー先は通常ファイルになる # ls -l mplayer-wrapper.sh* -rwxr-xr-x 1 root wheel 106 Dec 26 18:45 mplayer-wrapper.sh lrwxr-xr-x 1 root wheel 43 Oct 25 19:12 mplayer-wrapper.sh.bak -> /fuguita/u sr/fuguita/bin/mplayer-wrapper.sh # vi mplayer-wrapper.sh # exit
編集したmplayer-wrapper.shの内容は以下のようになります。mplayerの後にマニュアルで調べたコマンドラインオプションを付け加えています。
$ cat mplayer-wrapper.sh #!/bin/sh exec kterm -iconic -name mplayerconsole -title 'mplayer console' -e /usr/local/b in/mplayer -framedrop -nodouble -cache 8192 -cache-min 0 "$@" $
usbfadmコマンドを実行し、この変更を保存すれば将来にわたってこの設定が有効になります。
【メモ】
⇒モード1で起動した場合は、起動時間を短縮する。使用メモリを少なくするで説明したように /usr 以下のファイルを編集することはできません。これは /ram/usr が /fuguita/usr へのシンボリックリンクとなり、/bin や /sbin と同じ状況になるためです。
⇒モード2で起動した場合は /usr 以下のファイルも通常のファイルとなるため、このようなテクニックは使用せずに普通に編集することが可能です。
FuguItaのLiveUSBを作る で説明したように、ダウンロードサイトからイメージファイルをダウンロードし、展開、書込みを行うことでLiveUSB版FuguItaを作成することができます。
しかし、このLiveUSB版FuguItaはUSBメモリのサイズに関係なく1GBしか領域を使用できません。
この内、FuguItaのシステムが700MBを占有していますので、usbfadmでデータを保存できるのは300メガバイト程度です。
この節ではすでに稼動中のFuguIta上で、新たに別のUSBメモリにFuguItaをインストールする方法を説明します。
この方法を用いるとデータの保存領域を任意のサイズで割り当てることができます(以下の例では、4GB(=4096MB)のサイズのUSBメモリにインストールする場合を想定しています)。
まず、FuguItaをモード0、またはモード1で起動します。起動するFuguItaはLiveCD版、LiveUSB版のどちらでも使用できます。
起動が完了したら、rootでログインしusbfadmコマンドを実行します。
$ doas /usr/fuguita/sbin/usbfadm Password: Welcome to USB flash maintenance tool. USB flash drive maintenance tool for FuguIta Boot mode: manual 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を作成するデバイス 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 ← データ保存用領域のサイズ 「*」で残り全てを割当て ***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. 〜以下略〜
この後ファイルシステムの作成とシステムの転送が行われ、インストール作業は完了です。
【ご注意】
!!書き込み先のデバイス名は十分にご確認下さい。誤ったデバイスに書き込むと、そこに保存されているデータが失われます。
#ref(): File not found: "fuguita-usb.png" at page "FuguItaガイド"
今まで説明した内容を図にすると、右のようになります。
「Do you make this USB flash drive bootable? [y/n] -> 」に対し y と答えた場合は a パーティションが作成され、そこにFuguItaのシステムが書き込まれます。このパーティションは700MBの固定サイズです。n を入力した場合は a パーティションは作成されません(この場合はデータ保存専用のUSBメモリとなります)。
「Enter size for saving User Data in MB」で入力したサイズの d パーティションが作成され、usbfadm のデータ保存先となります。
aパーティションとdパーティションの領域を確保したあとでまだ未使用領域があれば、i パーティションが確保されます。このパーティションはFATファイルシステムとしてフォーマットされ、Windowsなど他のOSからもアクセスできます。OpenBSDもFATをマウントできますから、FuguItaと他OSとのデータのやりとりに使用することもできます。
【メモ】
⇒この節で説明したFuguItaのインストール方法は、USBメモリだけではなくOpenBSDが認識できる記録デバイス全般に対して使用可能です。例えばSDカード、コンパクトフラッシュ、メモリスティックあるいはATAやSATAのハードディスクなどにも書き込むことが可能です。
FuguItaではどのモードで起動するかに関わらず、起動中に手動で入力しなければならない箇所があります。
上記の4項目については入力を自動化する機能があります。
それには、LiveUSB版FuguItaの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 5.8-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='5.8-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ファイルの中に未設定の項目がある場合は、自動起動中にその項目設定の箇所でユーザからの入力を待ちます。
前節の 起動時の設定入力を省略できるようにする ではFuguIta起動時の自動化について説明しましたが、終了時にデータを保存する処理を自動化することもできます。
OpenBSDではシステム終了時に /etc/rc.shutdown というスクリプトを実行するようになっているので、このファイルに以下のような処理を追加します。
export PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/fuguita/bin:/usr/fuguita/sbin usbfadm <<EOT target ←この行以降、usbfadmに打ち込む内容を記述します。 ↓ sd0d saveas 5.8-fugu-demo sync y q EOT
すでにrc.shutdown中に処理が記述されている場合は、上記の処理はファイルの最後に記述するようにして下さい。
【ご注意】
!!この処理は保存処理時のエラーリカバリを行っていないので、保存に失敗してもシステムはシャットダウンを続行します。運用中に重要な処理を行った場合は、別途手動でデータを保存することをお勧めします。
いままではほとんどの場面で、LiveCD版かLiveUSB版のFuguItaのどちらか一方を使う想定で説明を行ってきましたが、もしPCにLiveCDとLiveUSBの両方を装着して起動したらどうなるでしょうか? あるいは、LiveUSBを2つ作って、それを二つとも装着して起動したら?
FuguItaはそのような場合にもうまく動作するように設計されています。
LiveCDとLiveUSBの両方を装着して起動した場合について説明します。
まず、電源を入れた直後にCDとUSBのどちらが起動するかですが、これは FuguItaを起動する で説明したようにPCのBIOSメニューの設定によります。
次に、運用デバイス(ディレクトリ /fuguita にマウントされ、OSとして使用されるデバイス)ですが、FuguItaのシステムが書き込まれたデバイスが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コマンドを使用して保存先のデバイスを指定できます。
以上のことを応用すると、以下に挙げるような運用が可能となります。
【メモ】
⇒USBメモリはデータの保存時/復帰時にのみマウントされるので、それ以外の時ははずしておけます。
この、FuguItaの「起動と運用は別々のデバイスで行える」という特徴をさらに活かし、OpenBSDとFuguItaを共存させる ことや WindowsやLinuxとFuguItaを共存させる ことも可能になっています。これらについては次節以降で紹介します。
【メモ】
⇒なお、起動時の設定入力を省略できるようにする で説明した設定入力の自動化は、全パーティション中に noasks ファイルが1つしかない場合に実行されます。2つ以上の noasks ファイルが検出された場合は安全のため自動実行は中止され、手動入力に移行します。
FuguItaを実行しようとしているPCにすでにOpenBSDがインストールされている場合、そのインストール済みのOpenBSD内にFuguItaのファイルを置くことでLiveCDやLiveUSBを装着していなくてもFuguItaを起動することができます。
原理としては、既存のOpenBSDパーティションにFuguItaのカーネルとISOイメージを置き、既存のブートローダを利用してFuguItaのカーネルを起動する、という方法になります。
以下、設置と起動の方法を説明します。
まず既存のOpenBSDを起動し、rootでログインします。
次に、ルートディレクトリ直下に「ISO」というディレクトリを作成します。
この /ISO ディレクトリにFuguItaのサイトからISOイメージをダウンロードし、展開します。
# mkdir /ISO # cd /ISO # ftp http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-5.8-201512272.iso.gz Trying 110.92.1.251... Requesting http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-5.8-201512272.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-5.8-201512272.iso.gz # gunzip FuguIta-5.8-201512272.iso.gz # ls -l total 1427648 -rw-r--r-- 1 root wheel 730744832 Dec 29 00:55 FuguIta-5.8-201512272.iso
ISOイメージの中に含まれているFuguItaのカーネルをルートディレクトリ直下にコピーします。 vnconfig(8)はISOやUSBメモリのイメージファイルを記憶デバイスとしてアクセスできるようにするコマンドです。
# vnconfig vnd0 FuguIta-5.8-201512272.iso # vnconfig -l vnd0: covering FuguIta-5.8-201512272.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 ディレクトリが作成されたパーティションは、FuguIta稼動中は書込み不可でマウントされるからです。従って、livecd-config の作成に適切なパーティションは、例えば /home や /var など、別パーティションのマウントポイント直下ということになります。
次に起動方法ですが、PCが起動し、カーネルメッセージが表示される直前に「boot>」というプロンプトが数秒間表示されます。
ここで何もしないと既設のOpenBSDシステムが起動しますが、起動したいカーネルを入力すると、そのカーネルが立ち上がります。
boot> bsd-fi.mp
この「bsd-fi.mp」がマルチプロセッサ用のFuguItaカーネルです。 シングルプロセッサ用のFuguItaカーネルを起動したい場合は「bsd-fi」と入力します。
【メモ】
⇒以上の説明では ISO ディレクトリと livecd-config ディレクトリはルートディレクトリ直下に作成しましたが、OpenBSDのファイルシステムが作成されているパーティションの直下であれば、ルートディレクトリ直下でなくとも動作します。
通常、FuguItaはスワップを使用せずメインメモリだけで動作しますが、ノーマルなOpenBSDとFuguItaが共存している ような環境では、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オプション付きで実行し、スワップを無効化します。
シェルを抜けると再度起動モードの選択になりますので本来の起動モードを選択し、処理を再開します。
FuguItaではWindowsのNTFSやFAT、LinuxのEXT-2, EXT-4ファイルシステムでフォーマットされたパーティションも運用デバイスとして用いることができます。
この方法は OpenBSDとFuguItaを共存させる で説明した手順とほぼ同様な方法です。つまり、
だたし、WindowsやLinuxのファイルシステムからFuguItaを使用する場合は、以下のような制限があります。
FuguItaにはXのウィンドウマネージャとしてデフォルトではIceWMが起動しますが、OpenBSDに元々入っている3つのウィンドウマネージャ、twm, fvwm, cwmも使用することができます。
一時的にウィンドウマネージャを変更したい場合は、設定ファイルの書き換えなどは不要です。以下のようにしてXを起動します;
$ WM=cwm startx
通常使用するウィンドウマネージャを変更したい場合は、ホームディレクトリにある .xinitrc ファイルを以下のように書き換えます。
〜略〜 xset fp+ /usr/local/share/fonts/sazanami/ xset fp+ /usr/fuguita/lib/fonts/ WM=${WM:-icewm} ←「icewm」の部分を他のウィンドウマネージャに変更します case X"$WM" in Xicewm) rox -t top -p pin exec icewm ;; 〜略〜
FuguItaに入っていないウィンドウマネージャを使用したい場合は、pkg_addなどでインストールを行ったあと、.xinitrcにそのウィンドウマネージャの起動処理を追加して下さい。
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.7 → OpenBSD 5.8 のようにバージョンが変わります。
そしてその半年にもセキュリティや安定性の向上などに関する修正が行われており、OpenBSDの公式サイトでも http://www.openbsd.org/errata58.html で修正情報が提供されます。
FuguItaもこの修正情報への追従を行っており、現行で公開されている版はいままでの修正情報が全て適用されたものとなっています(実際には、適用作業と動作確認を行うため修正情報の公開からは数日程度のタイムラグがあります)。
なお、FuguItaで現在運用中の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 ← FuguItaのバージョンを確認 5.8-201512272
この節では、現在お使いのFuguItaを最新版にアップデートする方法を解説します;
これは、FuguItaがベースとしているOpenBSDのメジャーリリースが行われた場合です。例えば、
FuguIta-5.7-201510161 ↓ FuguIta-5.8-201510255
ですが、これはFuguItaのベースとなっているOSがOpenBSD 5.7からOpenBSD 5.8に変っています。
OpenBSDのメジャーリリースが変っている場合、システムのアップデートは困難です。
その理由は、OpenBSDがバージョンアップすると、システムコールの仕様変更、共有ライブラリの互換性のないバージョンアップ、コマンドのや追加・削除や仕様変更などが大幅に行われるため、過去の環境を保ったままバージョンを移行することが現実的ではないためです。
OpenBSDのメジャーリリースを跨いでの移行は、以下のような方法が推奨されます;
【メモ】
⇒usbfadmコマンドのsavasで保存名を付ける場合に、デフォルトでは保存名の冒頭に「5.8-fugu-demo」といったOSのバージョンが付きますが、これはこの節で述べたバージョン間で互換性がないことを示すために付けられています。
これは、
FuguIta-5.8-201511297 ↓ FuguIta-5.8-201512051
のようにOpenBSDのバージョンを表す「5.8」の部分が変っていないことで確認できます。
この場合はシステムの変更は部分的なものにとどまっていますので、ユーザデータの移行などは必要ありません。 システムの移行は、以下の手順で行います。
LiveCDの移行手順
LiveCDの場合はメディアの部分的な書き換えはできませんので、新しいバージョンのLiveCD版FuguItaを作り、それを使用する形になります。
USBメモリに保存したデータについては、そのまま起動モード3で読み込んで使用できます。
LiveUSBの移行手順
LiveUSBの場合は、USBメモリ内のシステムファイルを差し替えることでそのまま移行できます。以下、手順を示します。
まず最初に新しいバージョンのFuguItaをモード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-5.8.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-5.8.ffsimg 旧バージョンのシステムファイルを新バージョンもので置き換え ↓ # cp -p /sysmedia/bsd-fi /sysmedia/bsd-fi.mp /sysmedia/fuguita-5.8.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-5.8.ffsimg # umount /mnt #
作業が完了したら、PCを再起動し、アップデートしたLiveUSBが使用可能であることを確認します。
LiveUSBアップデート後の運用は今までと変りなく、データの移行等をする必要もありません。
FuguItaをモバイル環境の端末として使うためには、基本的な部分は固定環境での運用と大きく変わるところはありません。
しかしモバイル環境特有の事情を考慮し、設定を追加するとより効率的に運用できる面もあります。
この節ではそのような設定項目としてノートPCの電源関連、及び無線LANの関連について解説します。
現在の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にて設定ファイルを保存し、FuguItaを再起動します。
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版FuguItaはシステム復帰後、正常に動作しなくなりますのでご注意下さい。
!!PCの機種によっては休止動作がうまくいかないものがあります(スタンバイはできるがサスペンドやハイバーネートはできない、休止状態から復帰できない、あるいは動作が不安定で時々復帰に失敗する、など)。使用にあたっては事前の動作確認をお願いします。
Xを使用している時は、xsetコマンドでディスプレイを制御できます。ホームディレクトリ直下の .xinitrc 内に以下のような行を追加します;
〜略〜 xset fp+ /usr/fuguita/lib/fonts/ xset s on ← スクリーンセーバーを有効にする xset s 180 ← スクリーンセーバーの動作開始時間(秒) xset +dpms ← ディスプレイを省電力モードに移行 WM=${WM:-icewm} case X"$WM" in Xicewm) 〜略〜
この設定をおこなうと、マウスやキーボードの操作が180秒以上行われない場合、ディスプレイが省電力モードになります。
無線LANデバイスの設定方法はイーサネットの有線LANを使う場合と同じですが、若干設定を追加する箇所等が必要になります。
無線LANデバイスの幾つかはそのデバイスを動作させるためにそのデバイスのメーカーが供給するファームウェア(firmware)が必要となるものがあり、そのファームウェアにもあらかじめ /etc/firmware 内に用意されているものとダウンロードが必要なものがあります。
お使いの無線LANデバイスがファームウェアを必要とするかどうかはそのデバイスのマニュアルページを参照して下さい。
ファームウェアのダウンロードが必要な場合、fw_update(8)コマンドでファームウェアのダウンロードとインストールを行います。 以下はIntel社の無線アダプタwpi(4)の場合です;
$ doas fw_update -v Password: Path to firmware: http://firmware.openbsd.org/firmware/5.8/ Updating: wpi-firmware-3.2p1 $
【メモ】
⇒fw_updateはOSの初回起動時に自動的に実行されますのでこの時インターネットに接続している状態であれば、すでにファームウェアがインストールされています。
まず、ifconfig(8)コマンドを用いて手動で設定を行ってみます。
mynetの部分には実際に接続する無線アクセスポイントのSSID、mynet-passwordには無線アクセスポイントのパスワードを設定します。
暗号化にWEPを用いる場合や暗号化を行わない場合など、設定の詳細については、ifconfig(8)の「IEEE 802.11 (WIRELESS DEVICES)」の章を参照して下さい;
# ifconfig wpi0 wpi0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:1b:77:aa:bb:cc priority: 4 groups: wlan media: IEEE802.11 autoselect status: no network ieee80211: nwid "" # ifconfig wpi0 nwid mynet wpakey mynet-password # ifconfig wpi0 wpi0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:1b:77:aa:bb:cc priority: 4 groups: wlan media: IEEE802.11 autoselect status: no network ieee80211: nwid mynet wpakey mynet-password wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,cc mp wpagroupcipher tkip
設定が終了したので、実際に接続してみます。
# ifconfig wpi0 up # ifconfig wpi0 wpi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:1b:77:aa:bb:cc priority: 4 groups: wlan media: IEEE802.11 autoselect (DS1 mode 11g) status: active ieee80211: nwid mynet chan 4 bssid 1c:b1:7f:dd:ee:ff 37dBm wpakey mynet-password wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip
確認のために「ifconfig wpi0」を実行してみると、「status: active」とあり、接続に成功したことがわかります。
無線LANには接続できましたが、wpi0にはまだIPアドレスが付いていません。DHCPを使用してIP関連の機能を有効にしてみます;
# dhclient wpi0 DHCPREQUEST on wpi0 to 255.255.255.255 DHCPACK from 192.168.10.231 (00:09:41:4d:6c:6d) bound to 192.168.10.98 -- renewal in 302400 seconds. # ifconfig wpi0 wpi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:1b:77:aa:bb:cc priority: 4 groups: wlan media: IEEE802.11 autoselect (DS1 mode 11g) status: active ieee80211: nwid mynet chan 4 bssid 1c:b1:7f:dd:ee:ff 38dBm wpakey mynet-password wpaprotos wpa1, wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupci pher tkip inet 192.168.10.98 netmask 0xffffff00 broadcast 192.168.10.255
wpi0にIPアドレスが付与されたので、実際にウェブサイトにアクセスしてみます。
# exit $ w3m http://www.openbsd.org/ About OpenBSD [OpenBSD 5.8] Project Goals Hardware Platforms Only two remote holes in the default install, in Security Crypto a heck of a long time! Events Papers Innovations The OpenBSD project produces a FREE, 〜略〜
以上のようにインターネットに接続できました。
w3mはテキストベースのウェブブラウザです。上記のように文字端末からウェブにアクセスしたい場合などに手軽に使え、便利です。
以上は手動で設定を行う例でしたが、無線LANもイーサネット同様、/etc/hostname.wpi0に記述しておけばOS起動時に自動的に設定が行われます。 上の例と同じ設定を行うには、/etc/hostname.wpi0 を以下のように記述します。
nwid mynet wpakey mynet-password dhcp
【メモ】
⇒/etc/hostname.wpi0の設定内容を手動で反映させたい場合は、rootで# sh /etc/netstart wpi0を実行します。
この章ではFuguItaの内部を理解したり、FuguItaをベースに自分で開発を行う場合の情報を提供します。
FuguItaはOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の情報がそのまま利用できます。
公式のOpenBSDとは異なるFuguIta特有の部分については、このサイトの日本後トップページに公開資料の一覧がありますので、そちらをご参照下さい。
(過去の資料の中には、現状のFuguItaと異っている部分もありますので、ご注意下さい)
動作中のFuguItaからFuguItaのLiveUSBやデータ保存用USBを作るではLiveUSBのイメージファイルを作成しましたが、この節ではmkhybrid(8)コマンドを用いて稼動中のFuguItaから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 というファイルがFuguItaのISOイメージファイルです。
この節では、LiveUSBのメモリイメージファイルを作成する方法を紹介します。
作成の原理は単純であらかじめイメージとなるファイルを作っておき、OpenBSDとFuguItaを共存させる で説明した 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 maintenance tool for FuguIta Boot mode: manual 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を指定します。これ以降は 動作中のFuguItaからFuguItaの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版のイメージファイルが作成されました。
FuguItaは書込み可能なファイルをすべてメモリ上に持っているため、シャットダウン操作等を行わずいきなり電源を断にしたりしてもファイルシステムに不具合が発生することはありません。
また稼動中にusbfadmによるファイルの保存を行わない限りは、毎回同じ状態でシステムが立上ります。
このような特徴を利用して、FuguItaをベースにして特定のアプリケーションを実行するための専用のマシン(ターンキーシステム: Turn Key System)などを作成することができます。
このようなシステムを構築するためには、今までに説明してきたテクニックを組合せて使います;
これらの詳細な手順は、このサイトにある EBUG勉強会/20140507_実用で使うFuguIta? という資料で説明しておりますのでご参照下さい。
FuguItaは不定期ではありますが、ライブシステム構築のために使用しているツールを公開しています。
この構築ツールを使用することでFuguItaを改造した独自のライブシステムを作成することができます。
#ref(): File not found: "dlsite.png" at page "FuguItaガイド"
この構築ツールは配布サイトの tools というサブディレクトリ下にあります。
構築ツールをダウンロード後通常のOpenBSD環境で展開し、さらにライブシステムに書き込むファイルツリーとOpenBSDカーネルのソースコードを用意することでビルドを行うことができます。
ライブシステムの具体的な構築手順は FuguIta/FAQ/SelfBuild をご参照願います。
【メモ】
⇒nabekenさんという方がFuguItaを基にしてmyFuguitaというライブシステムを作成されています。myFuguitaは、FuguItaの構築環境をOpenBSDの標準ビルドシステムに組み込み、amd64アーキテクチャで動作するように改良したものです。
FuguItaについての説明は以上です。
このガイドではFuguItaの導入から応用・開発までを紹介しましたが、全体を通してFuguItaの方向性を感じ取って頂けましたでしょうか。
FuguItaは「ITにおけるアーミーナイフ」を目指しています。つまり、手軽に持ち運べ、様々な用途に利用できる、ということです。その代わり、性能的には特定用途につくられた専用のシステムにはかないませんし、初心者が何の予備知識もなしにすぐに使えるというものでもありません。
このガイドはそんなFuguItaに関する取扱説明書のようなものと理解して頂ければ幸いです。
【メモ】
⇒作者は若い頃貧乏学生だったので、ハンダゴテとスイスアーミーナイフだけで電子工作をしていました。
そして、アーミーナイフの性能が高品質なステンレス鋼の製造技術に支えられているようにFuguItaの機能もまた、OpenBSDに支えられています。
今回この文書を作成して改めて感じたことは、FuguItaが様々な機能を提供できているのはOpenBSDの優れた設計と実装によるところが大きい、ということです。
長年にわたりOpenBSDの改良を進めてこられたTheo de Raadt氏を始めとするOpenBSD開発コミュニティの皆様には改めて御礼を申し上げます。
さらに、FuguItaに同梱させて頂いている種々のフリーソフトウェアに携っている方々、そして様々なユーザコミュニティの方々にも御礼を申し上げます。特にEBUG (Echigo BSD Users Group)のメンバーの方々には、配布サイトのご提供、そして様々な提言・助言を頂いており、感謝の念に絶えません。
これらなしには10年もの間、開発を続けることは到底不可能だったろうと思います。
今後とも、FuguItaをどうぞよろしくお願い致します。