freebsd-logo

この後無茶苦茶インストールしまくった。

ので、気づいたことを。

FreeBSD 9以前からの移行、特にpkgまわり

make installでやっていたのも今や昔。freebsd-updateでさくっと。

で、手順は FreeBSD 10.0-RELEASE Installation Instructions のとおり

  • 念のため旧環境もアップデート。済んでれば次へ。
    # freebsd-update fetch
    # freebsd-update install
    
  • 10.0へアップグレード
    必要なファイルの取得
    # freebsd-update upgrade -r 10.0-RELEASE
    カーネル入れ替え
    # freebsd-update install
    # shutdown -r now
    
    新ユーザーランドのインストール
    # freebsd-update install
    サードパーティーアプリの更新
    ここ、どうする?
    最後に不要になった旧ファイル削除
    # freebsd-update install

で、昔はそこで portupgrade -fa とかしてたんだけど、10なら

# pkg upgrade -f

で基本おk。バイナリーでアップグレードって速い速い。

…なんだけど、ここでカスタマイズしてビルドしたportsとかはどうしたらよいか。

こうするのが正しいようだ。

  • カスタマイズしていたものだけ、portupgrade -fなどでアップグレード。すでにportupgradeportmasterもpkgng対応している。
  • それをpkg lockしてから
  • pkg upgrade

pkgngの素晴らしいのは、ports とも共存していること。新鮮度では ports > pkg なので、たとえpkgが壊れていても一時的にportsでしのぐということが当然のように出来る。というか実際avahi-appが壊れていたのでそうした。

気をつけなければならないのはportsをカスタマイズしていた場合で、この場合だけlockして一蓮托生でアップグレードされないように指定しておけばよい。

ただし、lockしたportsをアップグレードする際には、最初にunlockしておかなければならない点は注意。

FreeBSD desktop on VMware

せっかくpkgngになったので、今まではおっくうだったデスクトップ環境の構築もやってみる。いや、PC-BSD でもいいんだけど、ちょっと重いし。

以下のかんじで行ける。クリップボードも共有できるしディスプレイリサイズも変更できるしドラッグアンドドロップでファイルコピーもできる。一番重要なのは、VMwareの方に付属の VMware Tools ではなく ports の open-vm-tools を使うこと。

  • VMは普通に作る。メモリーは1Gぐらいあればおk。
  • 必要なパッケージを一括インストール。ここではデスクトップ環境には MATE を指定している。
    % su
    # pkg install \
        sudo xorg \
        open-vm-tools xf86-input-vmmouse xf86-video-vmware \
        mate ja-ibus-anthy \
        firefox ja-font-std
    
    最後の一行で IPA Font と M+ Font を ja-font-std 経由で入れているのは、これがないと Firefox の日本語表示がとってもみにくいから。
  • /etc/rc.confに以下を追加
    dbus_enable="YES"
    hald_enable="YES"
    vmware_guest_vmblock_enable="YES"
    vmware_guest_vmhgfs_enable="YES"
    vmware_guest_vmmemctl_enable="YES"
    vmware_guest_vmxnet_enable="YES"
    vmware_guestd_enable="YES"
    
  • xorg.confを作成
    % sudo service vmware-kmod start
    % sudo service vmware-guestd start
    % sudo service hald start
    % sudo service dbus start
    % sudo Xorg -configure && sudo mv /root/xorg.conf.new /etc/X11/xorg.conf
    
  • ~/.xinitrcはこんな感じに。
    export LANG=en_US.UTF-8
    export XIM=ibus
    export GTK_IM_MODULE=ibus
    export QT_IM_MODULE=xim
    export XMODIFIERS=@im=ibus
    export XIM_PROGRAM="ibus-daemon"
    export XIM_ARGS="-r --daemonize --xim"
    vmware-user-suid-wrapper &
    exec mate-session
    
    肝要なのは、vmware-user-suid-wrapper。これがないとクリップボード共有やディスプレイリサイズがうまくいかない。

あとはstartxすれば、このとおり。

そうそう。もちろん壁紙はデフォルトじゃなくてFreeBSD Wallpaperからいただいたもの。

さらにがんばると、この程度までは行ける。

OS X の VMware Fusion上の FreeBSD の VirtualBox 上の Ubuntu

FreeBSD on Windows Azure

これまた簡単。

Hyper-Vで普通にインストールした後、それをまるっとアップロードするだけ。

注意点は、この一カ所だけ。

でも、やっぱり「まるっと」数GBのファイルをアップロードするのはおっくうなので、Azure側で正式サポートされることを激ヴぉんぬ。AWSもGoogle Compute Engineもそうしているのだし。新CEOはクラウドの人とのことなので、期待たかまりんぐ。

さいごに

それにしても10からFreeBSDをはじめる人がうらやましい。かつては寡黙で益荒男なOSだったけど、ZFSが入ったあたりからずいぶんと易しく優しくなった。こうなるとOSとしての足腰の強さとか、ユーザーランドも一緒にメンテナンスされているところとか、まとまりのよさが活きてくる。インストールまでならLinuxは楽だけど、各ディストリビューションの違いとか、同じディストリビューションでもバージョン間の差異だとかが大きすぎて、知識がなかなかストックになってくれない。Unityは面食らったなあ…

続けるなら、FreeBSD一押し。

Dan the Daemonize[dr]

Appendix: dmesg @ Windows Azure

Copyright (c) 1992-2014 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-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014
    root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
CPU: AMD Opteron(tm) Processor 4171 HE (1062.22-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x100f81  Family = 0x10  Model = 0x8  Stepping = 1
  Features=0x783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x80802001<SSE3,CX16,POPCNT,HV>
  AMD Features=0xe2500800<SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow!>
  AMD Features2=0x3f3<LAHF,CMP,CR8,ABM,SSE4A,MAS,Prefetch,OSVW>
real memory  = 1879048192 (1792 MB)
avail memory = 1694380032 (1615 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <VRTUAL MICROSFT>
ioapic0: Changing APIC ID to 0
ioapic0 <Version 1.1> irqs 0-23 on motherboard
random: <Software, Yarrow> initialized
kbd1 at kbdmux0
vmbus0: <Vmbus Devices> on motherboard
acpi0: <VRTUAL MICROSFT> on motherboard
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, 1ff00000 (3) failed
cpu0: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xffa0-0xffaf at device 7.1 on pci0
ata0: <Hyper-V ATA storage disengage driver> at channel 0 on atapci0
ata1: <ATA channel> at channel 1 on atapci0
pci0: <bridge> at device 7.3 (no driver attached)
vgapci0: <VGA-compatible display> mem 0xf8000000-0xfbffffff irq 11 at device 8.0 on pci0
vgapci0: Boot video device
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
fdc0: <floppy drive controller (FDE)> port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
orm0: <ISA Option ROM> at iomem 0xc0000-0xcbfff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: cannot reserve I/O port range
Timecounter "Hyper-V" frequency 10000000 Hz quality 10000000
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
            to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 10.000 msec
storvsc0 on vmbus0
storvsc1 on vmbus0
hyperv-utils0 on vmbus0
hyperv-utils0: Hyper-V Service attaching: Hyper-V Heartbeat Service

hyperv-utils1 on vmbus0
hyperv-utils1: Hyper-V Service attaching: Hyper-V Shutdown Service

hyperv-utils2 on vmbus0
hyperv-utils2: Hyper-V Service attaching: Hyper-V Time Synch Service

storvsc2 on vmbus0
da0 at blkvsc0 bus 0 scbus1 target 0 lun 0
da0: <Msft Virtual Disk 1.0> Fixed Direct Access SCSI-4 device 
da0: 300.000MB/s transfers
da0: Command Queueing enabled
da0: 8192MB (16777216 512 byte sectors: 255H 63S/T 1044C)
da1 at blkvsc1 bus 0 scbus2 target 1 lun 0
da1: <Msft Virtual Disk 1.0> Fixed Direct Access SCSI-4 device 
da1: 300.000MB/s transfers
da1: Command Queueing enabled
da1: 71680MB (146800640 512 byte sectors: 255H 63S/T 9137C)
storvsc3 on vmbus0
Netvsc probe... DONE 
hn0: <Synthetic Network Interface> on vmbus0
Netvsc initializing... hn0: Ethernet address: 00:15:5e:40:37:61
random: unblocking device.
Netvsc initializing... Already initialized!
Timecounter "TSC" frequency 1062222241 Hz quality 800
Trying to mount root from zfs:zroot/ROOT/default []...