BSD

Raspberry Piで FreeBSD 動かしてみた。

IMG_5868JPG
といっても、とりあえず動かしただけ。面白みのない内容ですんません。ここからイメージもってきて SD に ddで書くだけの簡単な作業。

何回か再起動してたらbootんとこでコンソールにおちて起動しなくなった。電源切っていれたらブートの途中で固まった。再度電源切っていれたら、fsckが動き無事起動した。

CURRENTは設定方法がよくわからんなー。とりあえずIPv6は使えていない。どうすればいいのだろう。

VCHIQ使った OpenGL ESのデモも動くよ

http://kernelnomicon.org/?p=185

さて、こんくらいにして、子供の6ヶ月検診に行ってきます。

root@raspberry-pi:~ # dmesg
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 10.0-CURRENT #1 r243778: Sat Dec  1 12:29:02 PST 2012
    root@bsdbox:/src/FreeBSD/obj/arm.armv6/src/FreeBSD/head/sys/RPI-B arm
CPU: Sheeva 88SV581x rev 7 (Marvell core)
 Supported features: ARM_ISA THUMB2 JAZELLE ARMv4 Security_Ext
 WB enabled LABT branch prediction enabled
  16KB/32B 4-way instruction cache
  16KB/32B 4-way write-back-locking-C data cache
real memory  = 536870912 (512 MB)
avail memory = 386371584 (368 MB)
kbd0 at kbdmux0
simplebus0:  mem 0xf2000000-0xf2ffffff on fdtbus0
intc0:  mem 0xf200b200-0xf200b3ff on simplebus0
systimer0:  mem 0xf2003000-0xf2003fff irq 8,9,10,11 on simplebus0
Event timer "BCM2835 Event Timer 3" frequency 1000000 Hz quality 1000
Timecounter "BCM2835 Timecounter" frequency 1000000 Hz quality 1000
sdhci_bcm0:  mem 0xf2300000-0xf23000ff irq 70 on simplebus0
bcmwd0:  mem 0xf210001c-0xf2100027 on simplebus0
gpio0:  mem 0xf2200000-0xf22000af irq 57,59,58,60 on simplebus0
gpio0: read-only pins: 46,47,48,49,50,51,52,53.
gpio0: reserved pins: 48,49,50,51,52,53.
gpioc0:  on gpio0
gpiobus0:  on gpio0
uart0:  mem 0xf2201000-0xf2201fff irq 65 on simplebus0
dwcotg0:  mem 0xf2980000-0xf299ffff irq 17 on simplebus0
usbus0 on dwcotg0
fb0:  on fdtbus0
sc0: Unknown <16 virtual consoles, flags=0x300>
Timecounters tick every 10.000 msec
usbus0: 480Mbps High Speed USB v2.0
ugen0.1:  at usbus0
uhub0:  on usbus0
uhub0: 1 port with 1 removable, self powered
mmcsd0: 14GB  at mmc0 25.0MHz/4bit/65535-block
fb0: 1280x1024(0x0@0,0) 16bpp
fb0: pitch 2560, base 0x59385000, screen_size 2621440
Root mount waiting for: usbus0
ugen0.2:  at usbus0
uhub1:  on usbus0
uhub1: MTT enabled
Root mount waiting for: usbus0
uhub1: 3 ports with 2 removable, self powered
Root mount waiting for: usbus0
ugen0.3:  at usbus0
smsc0:  on usbus0
Trying to mount root from ufs:/dev/mmcsd0s2a [rw,noatime]...
smsc0: chip 0xec00, rev. 0002
warning: no time-of-day clock registered, system time will not be set accurately
miibus0:  on smsc0
ukphy0:  PHY 1 on miibus0
ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ue0:  on smsc0
ue0: Ethernet address: b8:27:eb:8b:37:6a
smsc0: chip 0xec00, rev. 0002
Posted by issei

カテゴリ: BSD

11行でFreeBSD 9.0-RELEASEをUSBメモリにインストールする。

9.0-RELEASEからは配布がtxz形式になったので連結する手間が省けた分だけ簡単に。なんかもうインストーラとか煩わしいだけな気がしてきた。

1)USBのストレージから起動できるPCがあること

2)既にFreeBSDがinstallされてるマシンがあること

3)ftp//ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.0-RELEASE/ あたりから base.txzと kernel.txzを持ってきてどこかに置いてあること(この例では /usr/freebsd-dist)

4)USBメモリをいれると/dev/da0に見えること

# dd if=/dev/zero of=/dev/da0 bs=1m count=1
# gpart create -s gpt da0
# gpart add -s 64K -t freebsd-boot da0
# gpart add -t freebsd-ufs -l freebsd da0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0
# newfs /dev/da0p2
# mount /dev/da0p2 /mnt
# cd /mnt
# tar xvfzp /usr/freebsd-dist/base.txz
# tar xvfzp /usr/freebsd-dist/kernel.txz
# echo '/dev/da0p2 / ufs rw,noatime 0 0' > /mnt/etc/fstab


以上でおしまい。最低限のことしかしてないんで、もう少しこだわれますが、基本はこんな感じ。

以下駄文

FreeBSDのルータなんかほとんどHDDに書きにいかないようにできるわけで、ルータくらいならUSBメモリ onlyのPCでいいんじゃね?と思ったが、FreeBSDの8だと(少なくとも8.1-RELEASEまでは)起動したあとrootをマウントするところでこける。

これはUSBメモリが使えるようになるまで時間がかかるのに、その分待たないからで、カーネルにrootをマウントする前に数秒waitを入れるパッチをいれればいいというところまでは気がついた。

オイラはこれを sys/kern/vfs_mount.cの vfs_mountroot内の root_mount_prepare()の次あたりに

pause("mount root", 2*hz);

とか書いてカーネルを再構築して対処していたわけですが、最近改めて調べてみたら

/boot/loader.conf に kern.cam.boot_delay=10000

と書くというやり方があるそうな。(こちらのほうがカーネルの再構築がないからスマート)

9.0ではこのあたりが大きく書き直されていて、こんなことをしなくても良いようになったようです。

追記

動いているFreeBSDなんてネーヨ!って人は

ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/9.0/

あたりから起動用のimgをゲットしてなんとかしてUSBメモリに書き込んだりCDに書き込んで起動させる。 でもってそれからブートしたのちLiveCDまたはshellにおとして、インストールしたいUSBメモリをつっこむ。

それが da0 または da1に見えるはずなので、適当に読み替えて頑張ってください。
Posted by issei

カテゴリ: BSD

OCN光アクセス(ビジネス)のIPv6サービス

OCN光アクセス(ビジネス)のIPv6サービスが開通したので、いろいろ設定してみたのですが、これが案外面倒でした。法人向けのサービスだけど、多分個人向けもあまりかわらないと思われますので、一応まとめておきます。

ちなみに使用OSはFreeBSD8.1です。

まず、技術仕様は熟読したほうがいいです。ネットでググっても余り役にたちませんのでw (斜め読みだけで頑張ろうとしたのがそもそもの失敗)

http://www.ocn.ne.jp/ipv6/service/pdf/ocnipv6uni_ver1.0.pdf

これによると、pppでトンネル張って、DHCPv6でアドレスを振り出すという作業が必須ぽい。

まず、pppoeの接続IDでつまづきました。何を入力すればいいのか?うーん、おかしいなぁと試行錯誤し、送られてきたよーく紙をみたら、欄外に小さい字で

「@bizf.ocn.ne.jpを@bizf6.ocn.ne.jp」

と置き換えてくださいとかいてやがるの。FAXで字つぶれて読むのに苦労したわー。

最初からでっかくかいてくれ。欄外とか勘弁

次に設定pppの設定。v4とは別にpppをもう一コネクション張る必要があり、かつ、そのリンクアップで dhcpv6cを使ってアドレスを振り出す必要があるようです。

http://ipv6.blog.ocn.ne.jp/ipv6/2006/04/ocn_ipv6_1926.html

にportsがころがってるのでこれを素直にコンパイルするのが早い・・・と思いきや、このままでは動かないので、いくつか対処が必要。この時点では動いたんだろうなぁ・・・・(まぁpppのサンプルスクリプトだけは参考になるけど)

まず /etc/ppp/ppp.conf

pppoe6:

set authname XXXXXX@bizf6.ocn.ne.jp set authkey XXXXXX set device PPPoE:xxxx:pppoe-in enable lqr set cd 5 set dial set login set redial 0 0 set timeout 0 enable echo enable ipv6cp disable ipcp disable deflate disable pred1 disable vjcomp set server /var/run/pppoe6 "" 0177

のように書けばとりあえずOKぽい。ipcpとか deflateを殺しておかないとエラーで止まるようです。



で、/etc/ppp/ppp.linkupに次の設定を書きます。

pppoe6:

add! default HISADDR6 ! /usr/bin/env iface=INTERFACE /bin/sh /etc/ppp/ocnipv6_linkup.sh

接続したあとに起動するscriptである

/etc/ppp/ocnipv6_linkup.sh

ってのは先ほどのportsに入っているのでこれをそのまま使います。中では dhcp6cや rtadvdが起動するようになっています。

これで

# ppp pppoe6

とかやってdialとタイプすると、

ppp -> Ppp -> PPp -> PPP

となり、繋がります。

あとは、これを自動で起動するように /etc/rc.confに書けばおしまい。 v4のリンクも必要でしょうから、次のように書きました。 (v4のリンクの profile名がpppoeです)

ppp_enable="YES" ppp_profile="pppoe pppoe6" ppp_pppoe_nat="YES" ppp_pppoe_mode="ddial" ppp_pppoe_unit="0" ppp_pppoe6_mode="ddial" ppp_pppoe6_unit="1"

ipv6_enable="YES" ipv6_gateway_enable="YES"

注) フレッツ光ネクストを使ってますと、フレッツが全力でIPv6のアドレスを割り振ろうとするので、それを無視する仕組みが必要です。(両方使うのは面倒っぽいのでとりあえずパス) 私はpfで当該IFにくるv6パケットをブロックすることで対処しました。

結構はまるポイントなんで注意が必要です。
Posted by issei

カテゴリ: BSD

容量不足

自宅で作業に使っているFreeBSDのディスクがあふれた。

あふれたのはルートパーティション。 ちなみにここには256M切ってました。

まぁどうせすぐ再インストールとかするでしょと適当にinstallしたのがそもそもの原因なんだけど、 カーネル7.2にしようよしたらinstallできないでやんの。

よーするにカーネルモジュールがデブデブになってきたと。

インストールの途中でこけてるので、このままでは再起動しない可能性大。 古い.oldなど削除してもまだ足りず、結局 /rescueを削除して なんとかなったけど、それでもcapacityは107%。

512Gとかのディスクが安価になってきた今日ルートからがっぽり領域を確保しとけば よいんだろうけど、貧乏性ゆえ、ついついぎりぎりにしてしまうわけでw

再インストールかなぁ~
Posted by issei

カテゴリ: BSD

NetBSD amd64 -> i386

わけあってamd64で動いているマシンをi386にす。

というか、今作業を始めた。orz
Posted by issei

カテゴリ: BSD

FreeBSDで L2TP + IPSEC その2

トンネルが張れたので次ぎにIPSEC。

IPSECを使うのは初めて。

単純に暗号の鍵を設定してやりゃ出来ると思ってたんですが、どうもカーネルの再構築が 必要ならしい。うーん。setkeyとか設定するプログラムは標準であるのに、なんで カーネル再構築いるんだろう・・・

でFreeBSDでIPSECと検索しても例によって古いバージョンしか出てこないので、 ここは楽をすることをアキラメ本家のハンドブックを熟読。

options         IPSEC
options         IPSEC_FILTERTUNNEL
options         IPSEC_DEBUG
device          crypto


無事東京サイドのカーネルの再構築は終わりました。

で、同じ設定で青森サイドのカーネル構築をしようと思ったらコンパイルエラーに。 なんでやねん?と30秒ほど悩みよく見てみると、青森サイドはFreeBSD6.2だったことが判明。 カーネルのオプションが違うと予想。

こっちも7.0にあげればいいんだろうけど、流石にリモートでOSのバージョンをあげるのは怖いので、ドキュメントをあちこち探しまくり次のオプションでコンパイル。

options         IPSEC
options         IPSEC_ESP
options         IPSEC_DEBUG
options         IPSEC_FILTERGIF
device          crypto


これで問題無く動くっぽい。 オプションが全部必要なのかどうかは検証してないけど、とりあえずこれで動く模様。

続く。
Posted by issei

カテゴリ: BSD

FreeBSDで L2TP + IPSEC

弊社は青森と東京にグローバルアドレスを8個づつ持っていて、 サーバも双方においてたりするんですが、これを青森にまとめておいて 東京のオフィスをすっきりさせたいなというのが最近の課題。

また最近仮想化を着々と進めており、双方いプライベートアドレスな仮想PCも増えたこともあり、これを機会に、男がすなるVPNもしてみむとてするなり。ということにしました。

実際のところ、ほとんどSSHで済んでしまうので、VPNなどいらないような気もしますが、何事も経験。

でターゲットですが、弊社はほとんどがFreeBSDサーバなので、さくっと流行のmpdでトンネルを張ろうと四苦八苦。トンネルはPPTPが主流みたいだけど、あえてL2TPにしました。深い理由はありませぬ。

まずネットワークの構成。

青森側

グローバルアドレスのIPが8個 プライベートアドレスとして192.168.16.0/24と 10.1.16.0/24の2つ。 これらは同じHUB群に混在

東京側

グローバルアドレスのIPが8個 プライベートアドレスとして192.168.253.0/24, 192.168.254.0/24 これらは192.168.253系列とグローバル&192.168.254系列は別々のHUB群に存在。

なんでそんなに複雑なのか?といわれそうですが、まぁ歴史的にそうなっちゃったんで、しかたありません。(笑)

で、簡単に出来るだろうとタカをくくってたのですが、 これがおおはまり。グーグル先生に聞いてみても、世の中にあるVPNの使いかというのは自宅や会社のネットワークにPPTPで(1端末が)接続するというもので、双方のプライベートネットワーク間にトンネルを張るというのはほとんどない。(また確かにに個人の趣味レベルでは余り実用性なさげですしね)

というわけで、マニュアルを熟読して自力で設定す。 まず別アドレスをL2TPでトンネルを張り合うマシンに設定しておきます。

青森側

default:
        load l2tp_lns



l2tp_lns: create bundle static B1 set ipcp ranges 192.168.16.111/32 192.168.254.111/32 set iface route 192.168.254.0/24 set iface route 192.168.253.0/24

create link static L2 l2tp set link action bundle B1 set l2tp self *.*.147.37 set l2tp peer *.*.221.244 set link enable incoming


東京側
default:
        load l2tp_lns



l2tp_lns: create bundle static B1 set ipcp ranges 192.168.254.111/32 192.168.16.111/32 set iface route 192.168.16.0/24 set iface route 10.1.16.0/24

create link static L2 l2tp set link action bundle B1 set link max-redial 0 set l2tp self *.*.221.244 set l2tp peer *.*.147.37 open


これでトンネルは成功。(l2tp selfと l2tp peerのIPはふせました) pingなどを飛ばすとちゃんと行きます。

次に双方のネットワークのプライベートアドレスにちゃんとパケットが届くように default routeで飛ぶ先のルータで

青森側
route add 192.168.253.0/24 192.168.16.37
route add 192.168.254.0/24 192.168.16.37


東京側
route add 192.168.16.0/24 192.168.254.244
route add 192.168.16.0/24 192.168.254.244


もちろんトンネル張るマシンには192.168.16.37と192.168.254.244の別アドレスを振っておくのを忘れずに。



東京は引越しと同時にIPv6などひいていて(もっとも役にたったのは、亀が動くのが見れたことと、2chのIPv6板に書き込みができたことくらいか?)V6のトンネルなどは何度かやってたのですが、v4でやるのは初めての経験だった。また仕事の役に立たない知識が増えたかなぁ~

しかし、ググると未だにFreeBSD4.4の話とかが上位に出てくるのなんとかならないかなぁ。

続く
Posted by issei

カテゴリ: BSD

FreeBSD 7.0その後

インストールは呆れるくらい簡単に終了。 むしろその後おなじ環境にするのに四苦八苦ですが。

xorgがどんな頑張っても800x600にしかならない・・

実家のPCはいまどき珍しい1024x768なのよ。 結局1時間くらい悩んで、手動で Hsync, Vsyncを入力してなんとか解決。

xemacsのフォント設定が・・・

こちらも1時間くらいなやんで設定。 前回とおなじ設定でうまくいかないのは、もはやお約束か・・ 微妙に違う環境設定が、会社、東京の自宅、実家と三箇所に存在することに。

それ以外は順調かなぁ。とりあえずwlでメール読めるようになったから、次は svnかのう。
Posted by issei

カテゴリ: BSD

FreeBSD 7.0

青森の作業マシンのRailsのバージョンを上げようとしたら、例によってdependency地獄に陥ったので、これを機会に7.0にすることにしました。

というわけで只今インストール中。
Posted by issei

カテゴリ: BSD

make world

new マシンのkernelを最新のにしようと、cvsupでSTABLEもってきて、

make installkernl

起動せず。orz

6.2で5.5をコンパイルしてたことが発覚。そりゃカーネルは起動するがもろもろ影響でるのは当たり前や。

他のマシンからまんまコピーしてきたので、RELENG_5でcvsupしとった。ハハハハハ

10分ほど悪あがきをしてみたけど、どうやっても古いカーネルが起動してくれないので、再インストール決定。

やはり「ながら」で作業するとダメですな。
Posted by issei

カテゴリ: BSD