top page > PC unix > here

FreeBSD/amd64 9.3 on Endeavor NP25S


概要

Endeavor NP25S (EPSON) に FreeBSD/amd64 9.3 を install しました. ここでは主に以下の点に注目して,その記録を提示します.

  1. bsdinstall と AFT HDD について.
  2. X Window System X.Org 7.7 と intel, vesa driver について.
  3. vt (new console driver) について.

目次

1. まえがき
2. install
3. X Window System
4. vt driver
5. firefox

1. まえがき

やっと FreeBSD 9 系の試用を始めました. 過去に何度か始めようとして,忙しくて断念したのですが,そろそろ何とかしないと追い付けなくなるという思いもありました. 常用する環境はまだ 8.4 で,こちらはあくまで試用ですが,気付いたところを書き足していきたいと思います.

2. install

install media としては USB メモリーを用いました.

ports は 2014.11.28 付のものを導入しました.

この節で示したいことは,bsdinstall は HDD を解析して sector size を自動的に設定してくれないという「観察結果」です.

bsdinstall の "Partitioning" は "Manual" を選択し,handbook の「伝統的なファイルシステムのパーティションを作成する。」を参考に以下のようにしました.

% gpart show
=>       34  625142381  ada0  GPT  (298G)
         34          6        - free -  (3.0k)
         40       1024     1  freebsd-boot  (512k)  開始セクタは 40 です.FreeBSD 8.3 + sysinstall だと 63 です.
       1064    4194304     2  freebsd-ufs  (2.0G)   ここは / です.
    4195368    8388608     3  freebsd-swap  (4.0G)
   12583976    8388608     4  freebsd-ufs  (4.0G)   ここは /var です.
   20972584    2097152     5  freebsd-ufs  (1.0G)   ここは /tmp です.
   23069736  601882624     6  freebsd-ufs  (287G)   ここは /usr です.
  624952360     190055        - free -  (92M)
% df
Filesystem  1K-blocks     Used     Avail Capacity  Mounted on
/dev/ada0p2   2031132   854756   1013888    46%    /
devfs               1        1         0   100%    /dev
/dev/ada0p4   4053308   430176   3298868    12%    /var
/dev/ada0p5   1015324    16680    917420     2%    /tmp
/dev/ada0p6 291481048 61809800 206352768    23%    /usr
% swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/ada0p3       4194304        0  4194304     0%

ところで,handbook には HDD に関して "AFT" と明示した情報はありません. 以下のように記述があるだけです.

セクタを適切に配置することで、 最良のパフォーマンスを得ることができます。 また、パーティションサイズを 4K バイトの偶数倍にすると、 512 バイトまたは 4K バイトのセクタでドライブが配置しやすくなります。

この「4K バイトのセクタ」は AFT の HDD を指しているはずです.

ところが実際に使ってみると,FreeBSD 8.4 の頃と同様に,動作に引っ掛かり感があります. すなわちセクタの配置の問題だけではないようです.

# diskinfo -v /dev/ad0
/dev/ad0
        512             # sectorsize
        320072933376    # mediasize in bytes (298G)
        625142448       # mediasize in sectors
        0               # stripesize
        0               # stripeoffset
        620181          # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WD-WX31A41C2016 # Disk ident.

このように,sector size が 4096 = 4K になっておりません.

調べてみると,手動で Partitioning をする場合には newfs -S 4096 のようにして sector size を指定する方法があるのですが,bsdinstall を使う限りは HDD を解析して sector size を自動的に指定してくれているわけではなさそうです. "Manual" でなく "Guided" を用いても同じことでした.
(ただまあ,現時点では動作の引っ掛かり感の原因を sector size と決めつける根拠はないのですが.)

手動の Partitioning に関しては多くの資料があるのですが,handbook にはない非公式の使い方であること,動作の試験を行なうための HDD や時間がなかったことから,今回は bsdinstall に全面的に依存した方法を採りました.
(この件に関しては,試験を行なう時間がとれたら試行錯誤 (右往左往) の結果を別途提示しようと思います.)

ただ,ここで悶々とするのであれば,非 AFT の HDD を入手した方が合理的かもしれません.

3. X Window System

FreeBSD 9.1 以降は WITH_NEW_XORG が default であり,X Server は 1.12 が導入されます.[1][2] /etc/make.conf の関連部分は次のように設定します.

#WITH_NEW_XORG=yes   不要です.
WITH_KMS=yes         設定してしまいましたが,不要かもしれません.

逆に,古い方の X Server 1.7 を使いたければ次のように設定します.

WITHOUT_NEW_XORG=yes

/boot/loader.conf は次のように設定します.

# for firefox + HTML5
sem_load="YES"      あくまで firefox のためです.

# not feel on GENERIC, need not on VT      後述しますが,これらは不要です.
#hw.vga.textmode=0
#kern.vty=vt
% kldstat
Id Refs Address            Size     Name
 1   23 0xffffffff80200000 161d858  kernel
 2    1 0xffffffff8181e000 abb8     sem.ko
 3    1 0xffffffff81a12000 6b82e    i915kms.ko  これ以下は,X を起動すると自動的に load されます.
 4    1 0xffffffff81a7e000 1b17     iicbb.ko
 5    4 0xffffffff81a80000 1d3b     iicbus.ko
 6    1 0xffffffff81a82000 1caf     iic.ko
 7    1 0xffffffff81a84000 46fc8    drm2.ko

intel ATOM D525 は GPU を内蔵しています. (その呼称は "Intel GMA 3150" とか "Pineview" などです.)

OS の log によれば,次のように認識されています. (これは console 画面のみかもしれません.)

agp0: <Intel Pineview SVGA controller> on vgapci0
agp0: aperture size is 256M, detected 8188k stolen memory
vgapci0: Boot video device
vgapci1: <VGA-compatible display> mem 0xfe980000-0xfe9fffff at device 2.1 on pci0

また,X の log によれば,次のように認識されています.

(--) PCI:*(0:0:2:0) 8086:a001:1b0a:0123 rev 2, Mem @ 0xfeb80000/524288, 0xd0000000/268435456,
0xfea00000/1048576, I/O @ 0x0000dc00/8, BIOS @ 0x????????/65536

xf86-video-intel (2.21.15) も xf86-video-vesa (2.3.3) も動作します.

[1] 2015.4.12 時点の ports では X Server は 1.14.7 以外の選択肢はありません. WITHOUT_NEW_XORGWITH_KMS も設定不要です.
  また,xf86-video-intel も 2.21.15 一択になっています. (distinfo に 2.7.1 が残っているのは消し忘れか?)
  この X Server から,フォントの置き場が /usr/local/share/fonts/ に変わっているので,xorg.conf の修正が必要です. (自前の fonts.alias があるなら,新たな置き場へ cp する必要があります.)

[2] 2015.12.10 時点の ports では X Server は 1.17.4 以外の選択肢はありません.
   /var/db/ports/x11-servers_xorg-server/options に「HAL を使う」の設定を残したまま make してしまったので,dbus は使っておりません. この点は,そのうちやり直します.

4. vt driver

intel driver を使った場合,X を終了して console に戻ると画面が真っ黒になります. この問題に関して,

https://wiki.freebsd.org/Graphics/WITH_NEW_XORG

の "VT switch" には次のように書かれています.

[1] 単に KMS を使っていないだけなのかも.

FreeBSD 9.3 の GENERIC kernel には vt は含まれておりません. /usr/src/sys/amd64/conf/VT は,GENERIC を雛型として sc, vga を消し,vt, vt_vga を加えています.

include         GENERIC
ident           VT

nodevice        sc
nodevice        vga

device          vt
device          vt_vga

これを用いて kernel を再構築します.

# cd /usr/src/sys/amd64/conf
# config VT

# cd ../compile/VT
# (make cleandepend && make depend) >& log.dep
# make         >& log.make
# make install >& log.inst

# reboot  または  shutdown

新たな kernel に対しては,/boot/loader.conf に以下の記述は不要です. 逆に,sc にすることもできません.

kern.vty=vt

GENERIC kernel を起動した場合,dmesg の出力の sc driver に関連する部分は以下のようになっています.

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

一方,VT kernel においては,vt driver に関連する出力がありません.

vt driver の環境で X から console に戻ると,console が高解像度になっています.

フォントは,日本語フォントも含めて設定できるらしいので,そのうち挑戦してみます.

5. firefox

現在の ports においては,firefox は version 33.0 です.[1][2] これを make すると,gcc 4.8 以上が既に導入されていればそれを使い,いなければ gcc 4.8 が導入されます.

私は gcc 5 を導入していたのですが,これを用いた場合にはエラーが生じて make できませんでした. そこでさらに gcc 4.8 を導入し,無事に make ができました. ちなみに,これは gcc 5 と conflict しませんし,これらが共存している場合には firefoxmake には gcc 4.8 の方が使われるので,gcc 5 を消す必要はありません.

HTML5 を表示する場合には,/boot/loader.conf に以下のように設定しておかないと core dump します.

sem_load="YES"

起動した直後に以下のようなメッセージが必ず出ますが,動作には影響ありません.

(process:1256): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed

また,起動した terminal に大量のメッセージが出るので,うんざりです. 終了した後でも,忘れた頃にメッセージを出したり core を吐いたりします.

[1] 2015.4.14 現在の ports においては,firefox は version 37.0 です. makegcc 4.8 で問題なくできます. (より新しい gcc は試しておりません.) 上述の動作の問題は直っておりません.

[2] 2015.12.10 現在の ports においては,firefox は version 42.0 です.