Atom機 故障

投稿日: Leave a comment

我が家の大掃除中にportupgradeを仕掛けて,合間に様子を見に来たらプロンプトが無応答になっていた.pingも無応答なので,マシンを見に行ったところ電源LEDはついている.

シリアルケーブルをつないでシリアルコンソールをたたいてみたがやはり無応答.しょうがないので電源ボタン長押しで電源を切り,少し間をおいて電源を入れてみたがシリアルコンソールには何も出てこない.

これはいよいよまずいと思い,液晶モニタを持ち込んでつないでみるとBIOS画面で止まっていた.

切り分けのため,HDDを抜いてもダメ,メモリを別のものに入れ替えてもダメ.どうやらマザーボードが壊れたっぽい.

直近のCharlie Rootからのメールによれば,

Checking status of gmirror(8) devices:
      Name    Status  Components
mirror/gm0  COMPLETE  ad10 (ACTIVE)
                      ad12 (ACTIVE)

SMART status:
Checking health of /dev/ad10: OK
Checking health of /dev/ad12: OK

とあるので,HDDが壊れていることは考えにくい.

マシンを立ち上げたのが2011/7/7だから2年半で壊れたことになる.マザーボードは中古で買ったもので,前オーナーが結構使い込んでいたのかな.HDDは2年以上経っているのでそろそろ危ないと思っていたけど,むしろこっちのほうが大丈夫だったか.いずれにせよ,夏を乗り切っていたので大丈夫と思っていたんだけどなぁ...

というわけで,NASのリプレースの作戦.

  1. 新NAS機の用意
  2. 旧データの救出
  3. 新NASへデータ移行

で進めてみる.

1. 新NAS機候補

新NAS機の候補はReadyNASの102312.102はARMベース,312はx86ベース.どちらもHDDは2本まで.

102の方は,定価26,900円で,NTT-Xで12,600円.HDD 2TB (@9800円)を2台付けると32,200円になる.一方,312は定価84000円だが,NTT-Xで39,800円.しかもHDD 2TBをつけると34,821円になるという.同じHDD 2TBを2台にすると44,621円になる.

この価格差なら312にしたいので,今のところ

  • ReadyNAS 312 2ベイ Diskless RN31200-100AJS
  • 3.5インチ内蔵HDD 2TB SATA6.0Gb/s WD20EFRX-R 2台

が有力.

こいつに移行するとファイルサーバー以外のサーバーとして動かすマシンがなくなってしまうので,もう1台省電力なマシンを組みたいところだが,こっちは追々.Celeronとかの安いノートPCでいいかなと思っている.

2. 旧データの救出

旧データといっても,メインのデスクトップのデータのコピーと,スマートフォン内のデータの自動バックアップがメイン.今のところなくて困るデータではないがこのマシンにしかないデータもあるので吸い出しておきたい./etcとか/usr/local/etcとか/homeとか.

ディスクはgmirrorでミラーリングしていたが,ファイルシステム自体は普通のUFS.こいつをマウントさえできればいいはずなので,最近立ち上げたUbuntu studio機で復旧を試みようかと思う.

googleで”ubuntu freebsd mount ufs” とかで検索するとゴロゴロ出てくるので,まずは見えるかどうか確認し,見えたら必要なファイル(このマシンにしかないファイル)を別マシンにコピーする.

3. 新NAS機への移行

最近のReadyNASはReadyCLOUDモードなる機能があるようで,要はインターネット上のどこからでもアクセスできるようになるらしい.こいつの使い勝手がどうなのか,マニュアルを読んで新NAS機を構築しようかと思う.

RTX810のsyslogをサーバーに転送

投稿日: Leave a comment

ずっとやろうと思って出来ていなかったRTX810のsyslogをサーバーに送る設定をした。

RTX810の設定

コマンドにて以下の設定をするとUDPで垂れ流しするようになる。

syslog host 192.168.100.2
syslog facility user
syslog notice on
syslog info on

facility の user と info on はデフォルトのままなので特に設定しなくてもよいはず。syslog hostとsyslog noticeはデフォルトから変更。

syslog.confの設定

リモートからのログとローカルのログは分けたかったので、先頭行にローカル限定とする設定を追加。

+@
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
security.*                                      /var/log/security
(以下省略)

末尾にルーターからのログの保存先を設定。notice以上のログをrouter.logに保存しつつ、infoも別ファイルで保存する。

(略)
+rtx810.everblooming.net
*.notice                                        /var/log/router.log
*.=info                                         /var/log/router_info.log
+@

syslogdの起動オプション

rc.confにてsyslogdに指定するコマンドラインオプションを設定。LAN内からのログを受け取るように設定する。

syslogd_flags="-a 192.168.100.0/24:*"

syslogdの再起動

起動オプションが変更になるのでデーモンを再起動する。その前に、ログファイルを作っておく。

# touch /var/log/router.log
# touch /var/log/router_info.log
# /etc/rc.d/syslogd restart

おしまい。tail -f /var/log/router.logでログが流れてくるか眺めてたらたら表示されればOK。というか、ログが来すぎ。パケットフィルターのログなので仕方ないか。

あとはlog rotationの設定をしておく。とりあえず100k x 20にしておいた。こちらはnewsyslog.confで設定。

ついでに無線LAN APのログも出させようと思ったけど、WR8700Nにはそんな機能はなかった。安いししょうがない。

FreeBSD 8.4Rにアップデート

投稿日: Leave a comment

今朝、make buildworldとbuildkernelを仕掛けて、昼休みにインストールしてみた。

mergemasterですべてのファイルの差分をチェックするのがかなり大変だった (というか、AndroidのSSHクライアントでやるもんじゃない) が、無事インストール完了。

[rose] ~% uname -a
FreeBSD rose 8.4-RELEASE FreeBSD 8.4-RELEASE #4 r251474: Fri Jun  7 09:03:01 JST 2013     ueda@rose:/usr/obj/usr/src/sys/ROSE  i386

RC3とつくかと思ったらunameの表示はRELEASEになっていた。

(追記) 今日リリースでした。すごい偶然。

FreeBSD-8.4RC3

投稿日: Leave a comment

そろそろ8.4-RELEASEのリリースビルドが始まりそうな感じなのでソースを引っ張ってきた。

20130607_055650

# cd /usr
# mv src src_R83p8
# svn co svn://svn.freebsd.org/base/releng/8.4/ src

カーネルのコンフィグファイルを見比べてみた感じ大きな変更はなさそうなので、そのままコンフィグファイルをコピーしてもよさそうだけど、virtoioとGEOM_PART_LDMだけは一応追加してからbuildworldとbuildkernelしてみる。

# diff -uN src_R83p8/sys/conf/NOTES src/sys/conf/NOTES
--- src_R83p8/sys/conf/NOTES    2012-09-09 22:39:12.000000000 +0900
+++ src/sys/conf/NOTES  2013-06-06 19:09:05.000000000 +0900
@@ -1,4 +1,4 @@
-# $FreeBSD: releng/8.3/sys/conf/NOTES 231717 2012-02-14 22:49:34Z luigi $
+# $FreeBSD: releng/8.4/sys/conf/NOTES 242200 2012-10-27 23:34:18Z davide $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -150,6 +150,7 @@
 options        GEOM_PART_EBR           # Extended Boot Records
 options        GEOM_PART_EBR_COMPAT    # Backward compatible partition names
 options        GEOM_PART_GPT           # GPT partitioning
+options        GEOM_PART_LDM           # Logical Disk Manager
 options        GEOM_PART_MBR           # MBR partitioning
 options        GEOM_PART_PC98          # PC-9800 disk partitioning
 options        GEOM_PART_VTOC8         # SMI VTOC8 disk label
@@ -261,6 +262,8 @@
 #        frequency.
 # TURNSTILE_PROFILING enables rudimentary profiling of the hash table
 #        used to hold active lock queues.
+# UMTX_PROFILING enables rudimentary profiling of the hash table used
+         to hold active lock queues.
 # WITNESS enables the witness code which detects deadlocks and cycles
 #         during locking operations.
 # WITNESS_KDB causes the witness code to drop into the kernel debugger if
@@ -284,8 +287,9 @@
 # Profiling for internal hash tables.
 options        SLEEPQUEUE_PROFILING
 options        TURNSTILE_PROFILING
+options        UMTX_PROFILING
+

-

 #####################################################################
 # COMPATIBILITY OPTIONS

@@ -405,7 +409,7 @@
 # KTR is a kernel tracing mechanism imported from BSD/OS.  Currently
 # it has no userland interface aside from a few sysctl's.  It is
 # enabled with the KTR option.  KTR_ENTRIES defines the number of
-# entries in the circular trace buffer; it must be a power of two.
+# entries in the circular trace buffer; it may be an arbitrary number.
 # KTR_COMPILE defines the mask of events to compile into the kernel as
 # defined by the KTR_* constants in <sys/ktr.h>.  KTR_MASK defines the
 # initial value of the ktr_mask variable which determines at runtime
@@ -1260,14 +1264,13 @@

 # CAM OPTIONS:
 # debugging options:
-# -- NOTE --  If you specify one of the bus/target/lun options, you must
-#             specify them all!
-# CAMDEBUG: When defined enables debugging macros
-# CAM_DEBUG_BUS:  Debug the given bus.  Use -1 to debug all busses.
-# CAM_DEBUG_TARGET:  Debug the given target.  Use -1 to debug all targets.
-# CAM_DEBUG_LUN:  Debug the given lun.  Use -1 to debug all luns.
-# CAM_DEBUG_FLAGS:  OR together CAM_DEBUG_INFO, CAM_DEBUG_TRACE,
-#                   CAM_DEBUG_SUBTRACE, and CAM_DEBUG_CDB
+# CAMDEBUG             Compile in all possible debugging.
+# CAM_DEBUG_COMPILE    Debug levels to compile in.
+# CAM_DEBUG_FLAGS      Debug levels to enable on boot.
+# CAM_DEBUG_BUS                Limit debugging to the given bus.
+# CAM_DEBUG_TARGET     Limit debugging to the given target.
+# CAM_DEBUG_LUN                Limit debugging to the given lun.
+# CAM_DEBUG_DELAY      Delay in us after printing each debug line.
 #
 # CAM_MAX_HIGHPOWER: Maximum number of concurrent high power (start unit) cmds
 # SCSI_NO_SENSE_STRINGS: When defined disables sense descriptions
@@ -1278,10 +1281,12 @@
 #             can be changed at boot and runtime with the
 #             kern.cam.scsi_delay tunable/sysctl.
 options        CAMDEBUG
+options        CAM_DEBUG_COMPILE=-1
+options        CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
 options        CAM_DEBUG_BUS=-1
 options        CAM_DEBUG_TARGET=-1
 options        CAM_DEBUG_LUN=-1
-options        CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_TRACE|CAM_DEBUG_CDB)
+options        CAM_DEBUG_DELAY=1
 options        CAM_MAX_HIGHPOWER=4
 options        SCSI_NO_SENSE_STRINGS
 options        SCSI_NO_OP_STRINGS
@@ -2339,11 +2344,11 @@
 # or
 # options      BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_NTSC
 # Specifies the default video capture mode.
-# This is required for Dual Crystal (28&35Mhz) boards where PAL is used
+# This is required for Dual Crystal (28&35MHz) boards where PAL is used
 # to prevent hangs during initialisation, e.g. VideoLogic Captivator PCI.
 #
 # options      BKTR_USE_PLL
-# This is required for PAL or SECAM boards with a 28Mhz crystal and no 35Mhz
+# This is required for PAL or SECAM boards with a 28MHz crystal and no 35MHz
 # crystal, e.g. some new Bt878 cards.
 #
 # options      BKTR_GPIO_ACCESS
@@ -2572,6 +2577,8 @@
 device         ohci
 # EHCI controller
 device         ehci
+# XHCI controller
+device         xhci
 # SL811 Controller
 #device                slhci
 # General USB code (mandatory for USB)
# diff -uN src_R83p8/sys/i386/conf/NOTES src/sys/i386/conf/NOTES
--- src_R83p8/sys/i386/conf/NOTES       2012-09-09 22:42:00.000000000 +0900
+++ src/sys/i386/conf/NOTES     2013-06-06 19:10:37.000000000 +0900
@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: releng/8.3/sys/i386/conf/NOTES 231688 2012-02-14 15:56:01Z jimharris $
+# $FreeBSD: releng/8.4/sys/i386/conf/NOTES 248862 2013-03-29 02:14:57Z bryanv $
 #

 #
@@ -764,6 +764,22 @@
 #
 device         glxsb           # AMD Geode LX Security Block

+#
+# VirtIO support
+#
+# The virtio entry provides a generic bus for use by the device drivers.
+# It must be combined with an interface that communicates with the host.
+# Multiple such interfaces defined by the VirtIO specification. FreeBSD
+# only has support for PCI. Therefore, virtio_pci must be statically
+# compiled in or loaded as a module for the device drivers to function.
+#
+device         virtio          # Generic VirtIO bus (required)
+device         virtio_pci      # VirtIO PCI Interface
+device         vtnet           # VirtIO Ethernet device
+device         virtio_blk      # VirtIO Block device
+device         virtio_scsi     # VirtIO SCSI device
+device         virtio_balloon  # VirtIO Memory Balloon device
+
 #####################################################################

 #
@@ -850,10 +866,12 @@
 #
 # ichwd: Intel ICH watchdog timer
 # amdsbwd: AMD SB7xx watchdog timer
+# wbwd: Winbond watchdog timer
 #
 device         ichwd
 device         amdsbwd
 device         viawd
+device         wbwd

 #
 # Temperature sensors:
@@ -986,6 +1004,10 @@

 options        KSTACK_PAGES=3

+# Enable detailed accounting by the PV entry allocator.
+
+options        PV_STATS
+
 #####################################################################

 # More undocumented options for linting.
# diff -uN src_R83p8/sys/i386/conf/GENERIC src/sys/i386/conf/GENERIC
--- src_R83p8/sys/i386/conf/GENERIC     2012-09-09 22:42:00.000000000 +0900
+++ src/sys/i386/conf/GENERIC   2013-06-06 19:10:37.000000000 +0900
@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: releng/8.3/sys/i386/conf/GENERIC 231688 2012-02-14 15:56:01Z jimharris $
+# $FreeBSD: releng/8.4/sys/i386/conf/GENERIC 247909 2013-03-07 07:28:05Z bryanv $

 cpu            I486_CPU
 cpu            I586_CPU
@@ -148,6 +148,7 @@
 device         dpt             # DPT Smartcache III, IV - See NOTES for options
 device         hptmv           # Highpoint RocketRAID 182x
 device         hptrr           # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
+device         hpt27xx         # Highpoint RocketRAID 27xx
 device         iir             # Intel Integrated RAID
 device         ips             # IBM (Adaptec) ServeRAID
 device         mly             # Mylex AcceleRAID/eXtremeRAID
@@ -223,9 +224,12 @@
 device         bce             # Broadcom BCM5706/BCM5708 Gigabit Ethernet
 device         bfe             # Broadcom BCM440x 10/100 Ethernet
 device         bge             # Broadcom BCM570xx Gigabit Ethernet
+device         cas             # Sun Cassini/Cassini+ and NS DP83065 Saturn
 device         dc              # DEC/Intel 21143 and various workalikes
 device         et              # Agere ET1310 10/100/Gigabit Ethernet
 device         fxp             # Intel EtherExpress PRO/100B (82557, 82558)
+device         gem             # Sun GEM/Sun ERI/Apple GMAC
+device         hme             # Sun HME (Happy Meal Ethernet)
 device         jme             # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
 device         lge             # Level 1 LXT1001 gigabit Ethernet
 device         msk             # Marvell/SysKonnect Yukon II Gigabit Ethernet
@@ -281,6 +285,8 @@
 # Pseudo devices.
 device         loop            # Network loopback
 device         random          # Entropy device
+options        PADLOCK_RNG     # VIA Padlock RNG
+options        RDRAND_RNG      # Intel Bull Mountain RNG
 device         ether           # Ethernet support
 device         vlan            # 802.1Q VLAN support
 device         tun             # Packet tunnel.
@@ -330,7 +336,7 @@
 device         rum             # Ralink Technology RT2501USB wireless NICs
 device         uath            # Atheros AR5523 wireless NICs
 device         ural            # Ralink Technology RT2500USB wireless NICs
-device         zyd             # ZyDAS zb1211/zb1211b wireless NICs
+device         zyd             # ZyDAS zd1211/zd1211b wireless NICs

 # FireWire support
 device         firewire        # FireWire bus code
@@ -339,3 +345,11 @@
 device         fwip            # IP over FireWire (RFC 2734,3146)
 device         dcons           # Dumb console driver
 device         dcons_crom      # Configuration ROM for dcons
+
+# VirtIO support
+device         virtio          # Generic VirtIO bus (required)
+device         virtio_pci      # VirtIO PCI device
+device         vtnet           # VirtIO Ethernet device
+device         virtio_blk      # VirtIO Block device
+device         virtio_scsi     # VirtIO SCSI device
+device         virtio_balloon  # VirtIO Memory Balloon device

FreeBSDアップデート (8.3R-p6 → p7)

投稿日: Leave a comment

4/2にp7が出ていて、しばらく放置してしまっていたのをアップデートした。

変更内容:

20130402:       p7      FreeBSD-SA-13:03.openssl
        Fix multiple vulnerabilities in OpenSSL.

今回はAndroid上の端末エミュレータからリモートでアップデートしてみた。

手順はいつもと同じで /usr/src/Makefile を見ながら。ただし、シングルユーザーモードではやらない。

#  1.  `cd /usr/src'       (or to the directory containing your source tree).
#  2.  `make buildworld'
#  3.  `make buildkernel KERNCONF=YOUR_KERNEL_HERE'     (default is GENERIC).
#  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE'   (default is GENERIC).
#       [steps 3. & 4. can be combined by using the "kernel" target]
#  5.  `reboot'        (in single user mode: boot -s from the loader prompt).
#  6.  `mergemaster -p'
#  7.  `make installworld'
#  8.  `make delete-old'
#  9.  `mergemaster'            (you may wish to use -i, along with -U or -F).
# 10.  `reboot'
# 11.  `make delete-old-libs' (in case no 3rd party program uses them anymore)

5番の代わりにいつもは再起動→sshd以外のデーモンを停止させていたが、今回は再起動もサボってデーモンを落とすだけ。

一応、問題なく終了。

> uname -a
FreeBSD rose 8.3-RELEASE-p7 FreeBSD 8.3-RELEASE-p7 #3 r249423: Tue Apr 16 12:33:42 JST 2013     ueda@rose:/usr/obj/usr/src/sys/ROSE  i386

自宅ネットワークのダイナミックDNS設定

投稿日: Leave a comment

ここ

自宅サーバのIPv4アドレスはYamahaのネットボランチDNSサービスで使っているホスト名にCNAMEを向けて、IPv6アドレスはプロバイダから(半)固定で割当たっているアドレスをそのままAAAAにのせるつもり。

と書いてたけど、さくらインターネットのコントロールパネルから同じホスト名にCNAMEとAAAAを設定できない(AとAAAAは設定できる) ようで、仕方ないので MyDNS.jp の適当なホスト名に動的IPのAレコード、固定IPのAAAAレコードを設定して、rose.everblooming.netのCNAMEをMyDNS.jpのホストに設定した。

ここには結果は書かないけど、

> dig rose.everblooming.net a
> dig rose.everblooming.net aaaa

などとすればどんな感じになっているかわかるはず。

IPv4の動的IPアドレスはこんな感じのスクリプトをcronで4時間おきくらい(←適当)に回して更新する。IPv6は匿名アドレスを使っているので固定設定。source IPの設定が出来ればIPv6も動的IPにしたいところだけど、よくわからないのでまた今度。

# cat /usr/local/etc/update_mydnsjp.sh
#!/bin/sh

id=mydnsxxxxxx
pw=xxxxxxxxxxx

host=ipv4.mydns.jp
opt="-4 -q"

/usr/bin/fetch ${opt} ftp://${id}:${pw}@${host}/ > /dev/null 2>&1

一応、バックアップでネットボランチDNSの方にも登録。

C++の参考ページ

投稿日: Leave a comment

C++のSTLコンテナやアルゴリズムなどを調べるのに役に立ちそうなページ

FreeBSD 9.xのネットワーク設定

投稿日: Leave a comment

FreeBSD-9.0Rのネットワーク設定が8.xと違っていて少し手こずったので忘れないように書いておく。ちなみに、先日入れた9.1RC2でも同じ。

NICはIntel PRO/1000なので em0。DHCPは使わない。

IPv4

IPアドレスとデフォルトルータ

/etc/rc.conf:
ifconfig_em0="inet 192.168.100.3 netmask 255.255.255.0"
defaultrouter="192.168.100.1"

IPv6

RAを受け取る設定。
8.3Rでは ipv6_enable=”YES” と ipv6_network_interfaces=”em0″ と書いたら自動的に設定してくれていた。ifconfigコマンドのみで設定できるようになったのはシンプルでいい。

/etc/rc.conf:
ifconfig_em0_ipv6="inet6 accept_rtadv"

エイリアスをつける (長いアドレスはさすがに覚えられない)

/etc/rc.conf:
ifconfig_em0_alias0="inet6 2001:240:xxxx:xxxx::3 prefixlen 64"

テンポラリアドレスをつけて、通信時はこのテンポラリアドレスをなるべく使うように指定。

/etc/sysctl.conf:
net.inet6.ip6.use_tempaddr=1
net.inet6.ip6.prefer_tempaddr=1

DNS

DHCPを使わないのでresolv.confにDNSサーバのアドレスを書く。

/etc/resolv.conf:
nameserver 192.168.100.2
nameserver 192.168.100.1

 

これで、ifconfig em0の結果はこんな感じになる。

% ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        ether 00:19:d1:xx:xx:xx
        inet 192.168.100.3 netmask 0xffffff00 broadcast 192.168.100.255
        inet6 fe80::219:d1ff:fexx:xxxx%em0 prefixlen 64 scopeid 0x1
        inet6 2001:240:xxxx:xxxx::3 prefixlen 64
        inet6 2001:240:xxxx:xxxx:219:d1ff:fexx:xxxx prefixlen 64 autoconf
        inet6 2001:240:xxxx:xxxx:6cb1:4cd2:ec24:e946 prefixlen 64 autoconf temporary
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT )
        status: active

FreeBSD 9.1RC2 on ZFS

投稿日: Leave a comment

zfsなファイルシステムにFreeBSD 9.1RC2を入れたのでその記録。

手順は「Installing FreeBSD 9.0-RELEASE Root on ZFS using GPT」がベース。途中、ちょっと変えたので念のためすべてのメモを残しておく。

一応前提 (参考にしたページと違っているところ)。

  • HDD 1個、ada0として認識。これにzfsパーティション1つにしてインストール。
  • スワップ領域はパーティションではなくファイルで領域を確保する。

1. ブート

余っていた2GBのmicroSDカードをUSBのカードリーダに挿してPC接続。これに、”FreeBSD-9.1-RC2-amd64-memstick.img”を書き込んで、このSDカードから起動。

書き込みは、ChkFlshというフラッシュメモリをチェックしたりフォーマットしたりするツールを使用。他にもいろいろツールはあるはず。

2. インストーラ開始

9.0Rから採用されたbsdinstallでインストールを開始。途中のパーティションを設定するところで、”shell”を選択する。

3.パーティション作成

たぶん、一つ目の肝。今回はディスク1個なので、ミラーは組まない。最初のzpool createのところ、なぜか -f をつけないとエラーがでてだめだった(赤字のところ)。
# virtualbox上で同じことをしたら -f は無くても大丈夫だった。(2012/10/28)

# gpart create -s gpt ada0
# gpart add -s 64K -t freebsd-boot -l boot0 ada0
# gpart add -t freebsd-zfs -l disk0 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

# zpool create -f -o altroot=/mnt zroot /dev/gpt/disk0
# zfs create zroot/tmp
# chmod 1777 /mnt/tmp
# zfs create zroot/usr
# zfs create zroot/var
# zfs create zroot/home
# exit

exitと打つとインストーラに戻る。

4.インストール実行

いつも通りのインストールをする。コピーするファイルやらネットワークの設定やら、アカウント作成やら。

インストールが終わると、Shellを立ち上げるよう促されるけど、そこはexitですぐ抜ける。

5. Live CDオプションでrootログイン

後半の肝。次回のブート時にちゃんとzfsが見えるように設定する。

# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
# echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
# zfs unmount -a
# zpool export zroot
# zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt zroot

# zfs set mountpoint=/ zroot
# cp /tmp/zpool.cache /mnt/boot/zfs/
# zfs unmount -a
# zpool set bootfs=zroot zroot
# zpool set cachefile='' zroot
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/var zroot/var
# zfs set mountpoint=/home zroot/home

最後のmountpointを設定するところはエラーが出るけど無視する。

6. 再起動してswapファイルを作る

無事再起動したらrootでログインしてswapファイルを作る。

# dd if=/dev/zero of=/swapfile bs=1m count=4096
# chmod 600 /swapfile
# echo 'swapfile="/swapfile"' >> /etc/rc.conf
# /etc/rc.d/addswap start

これで4GBのスワップ領域が有効になる。topコマンドあたりで確認可能。

IPv6の設定 (FreeBSD)

投稿日: Leave a comment

今朝、tobyにログインしてifconfigしたらem0にIPv6の一時アドレスがついていないことに気づいて、いろいろ調べた。

/etc/network.subrを見るとnetwork6_interface_setup()の定義のところで、

       if [ ${rtsol_available} = yes -a -n "${rtsol_interfaces}" ]; then
                # Act as endhost - automatically configured.
                # You can configure only single interface, as
                # specification assumes that autoconfigured host has
                # single interface only.
                sysctl net.inet6.ip6.accept_rtadv=1
                set ${rtsol_interfaces}
                ifconfig $1 up
                if ! checkyesno rtsold_enable; then
                        rtsol ${rtsol_flags} $1
                fi
        fi

とあるので、rtsol_available=yesになるインターフェースじゃないとaccept_rtadv=1にならないらしい。では、どうしたらrtsol_available=yesになるのかさかのぼってみてみると、rtsol_availableを触るのは3か所。

1か所目

        case ${ipv6_gateway_enable} in
        [Yy][Ee][Ss])
                rtsol_available=no
                ;;
        *)
                rtsol_available=yes
                ;;
        esac

ここは、ipv6_gateway_enable=noにしているので、rtsol_available=yesになっているはず。

2か所目

                prefix=`get_if_var $i ipv6_prefix_IF`
                if [ -n "${prefix}" ]; then
                        rtsol_available=no
                        rtsol_interface=no
                        laddr=`network6_getladdr $i`
                        hostid=`expr "${laddr}" : 'fe80::\(.*\)%\(.*\)'`

ここは実行してみたけど、prefixは空文字列になっていて、test -n はFalseになって、rtsol_available=yesは維持。

3か所目

               ipv6_ifconfig=`get_if_var $i ipv6_ifconfig_IF`
                if [ -n "${ipv6_ifconfig}" ]; then
                        rtsol_available=no
                        rtsol_interface=no
                        ifconfig $i inet6 ${ipv6_ifconfig} alias
                fi

ここはアドレスがついてしまっている。なので test -nがTrueになって、rtsol_available=noになってしまっている模様。

ん?と思って、rc.confを見たら、サーバ待ち受けようにipv6アドレスを付ける設定のaliasを消してしまって、メインのアドレスとして設定する状態になってしまっていたようで、これが怪しそうなので、aliasになるように変更してリブートしてみた。

するとちゃんと一時アドレスがついて、デフォルトルートもちゃんとつくようになった。めでたしめでたし。

というか、rc.confの ipv6_ifconfig_em0 と ipv6_ifconfig_em0_alias0 の違いがやっとわかった。