概要
Endeavor ST180E (EPSON) に FreeBSD/amd64 11.2 を install しました. ここでは主に以下の点に注目して,その記録を提示します.
- X Window System X.Org 7.7 と intel, vesa driver について.
- 日本語マニュアルについて.
概要
Endeavor ST180E (EPSON) に FreeBSD/amd64 11.2 を install しました. ここでは主に以下の点に注目して,その記録を提示します.
(2019.7.19) 11.3 に更新したのですが,新たなページを作るほどの変更点はないので,ここの表題を 11.2 から 11.3 に変えて書き加える形にしました.
(2020.1.18) HDD の調子が悪くなったので新調して,11.3 を新規に install しました.
目次
vesa
intel
, modesetting
modesetting
powerd
今回の目的は動作確認なので,新しい USB HDD に install しました. install media としては USB メモリーを用いました.
download したファイルを,次のようにして USB メモリーに書き込みます.
# dd if=FreeBSD-11.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=1m conv=sync
PC は NP25S を用いました.[1] USB ポートの選択と BIOS Setup による boot media の指定により,USB HDD を da0,USB メモリーを da1 にすることができます.[2][3]
[1] この点はタイトルと違って申し訳ありません. たまたまこれを解体している最中で,内蔵の SATA HDD を容易に抜ける状態にあったので,こちらで作業をしました.
[2] 具体的には,USB メモリーを前面のポートに,USB HDD を背面のポートに挿します. そして,USB HDD を boot media からはずします.(すなわち "Disable" にします.)
[3] このような作業が面倒なら,
という手段もあります.
このようにして USB HDD に install した FreeBSD は,皮肉なことに NP25S では動作しませんでした. boot のほぼ始まりでエラーになります. 話がややこしくなりますが,別の USB メモリーに install した場合には動作します. また,SATA HDD に install した場合にも動作します. 要するに,USB HDD だけうまく行かないのです.
一方,ST180E では USB HDD も動作します.
ST180E にて,内蔵の SATA HDD を新調してそこに同様の方法で install しました. 問題なくできました.
これまでと違うのは,UEFI Boot を Enable にしたことです. (必要からでなく興味本位.)
再び旧 package system がなくなっているので,Wnn 7 でなく Wnn 8 を使うことにしました.
X Server は 1.18.4 が導入されます.
xf86-video-vesa (2.3.4) は問題なく動作します.
xf86-video-intel および modesetting も動作します. ただし,KMS に対応した drm を導入する必要があります.
# cd /usr/ports/graphics/drm-fbsd11.2-kmod
# make; make install
(注) これは少し前までは,drm-next-kmod という名称でした. 今の ports には drm-*-kmod が多数あるので要注意です. (drm-kmod から導入すれば,環境に合わせて選んでくれます.)
さらに,/etc/rc.conf に以下のように記述します.
kld_list="/boot/modules/i915kms.ko"
この記述をしないで X Server を起動すると,次のようにエラーになります.
(EE) No devices detected.
その場合の kldstat の出力は以下のようになります.
Id Refs Address Size Name 1 27 0xffffffff80200000 2036810 kernel 2 1 0xffffffff82421000 2328 ums.ko 3 1 0xffffffff82424000 1780 uhid.ko 4 1 0xffffffff82426000 7a2b8 i915kms.ko 5 1 0xffffffff824a1000 3f8cc drm2.ko 6 4 0xffffffff824e1000 1ed0 iicbus.ko 7 1 0xffffffff824e3000 e58 iic.ko 8 1 0xffffffff824e4000 1570 iicbb.ko
一方,記述した場合の kldstat の出力は以下のようになります.
Id Refs Address Size Name 1 32 0xffffffff80200000 2036810 kernel 2 1 0xffffffff82421000 120c48 i915kms.ko 3 1 0xffffffff82542000 74b70 drm.ko 4 4 0xffffffff825b7000 edc8 linuxkpi.ko 5 3 0xffffffff825c6000 114a8 linuxkpi_gplv2.ko 6 2 0xffffffff825d8000 6b8 debugfs.ko 7 1 0xffffffff825d9000 22840 i915_skl_huc_ver01_07_bin.ko 8 1 0xffffffff825fc000 2460 i915_skl_dmc_ver1_26_bin.ko 9 1 0xffffffff825ff000 2328 ums.ko 10 1 0xffffffff82602000 1780 uhid.ko
dmesg の出力には,以下のような項目が加わります.
drmn0: <drmn> on vgapci0 vgapci0: child drmn0 requested pci_enable_io vgapci0: child drmn0 requested pci_enable_io [drm] Memory usable by graphics device = 4096M (snip) [drm] Initialized i915 1.6.0 20170123 for drmn0 on minor 0 VT: Replacing driver "vga" with new "fb". (snip) [drm] RC6 on
X Server の出力より,intel driver の version が判明します. (従来のように,ファイル名に version が付いていないのです.)
(II) Loading /usr/local/lib/xorg/modules/drivers/intel_drv.so
(II) Module intel: vendor="X.Org Foundation"
compiled for 1.18.4, module version = 2.99.917
(補足) 上記のような設定をすると,VT console が強制的に高解像度になります. 解像度を指定したい場合には,/boot/loader.conf に以下のように記述します.
kern.vt.fb.default_mode="640x480"
(補足) firefox や xpdf を起動すると,以下のような警告が出ます. (最初の起動時には必ず出ますが,それ以後は出たり出なかったりです.)
libGL error: failed to open drm device: パーミッションが拒絶されました libGL error: failed to load driver: i965
これには,以下のように対処します.
(1) /etc/devfs.conf に,以下の行を追加します.
perm /dev/dri/card0 0666
(2) /etc/devfs.rules を作成し,以下のように記述します. (このファイルが既にあるなら,追加します.)
add path 'dri/*' mode 0666 group video
(3) 自分の user ID を video group に登録します.[1]
# pw groupmod video -m user ← ここは user ID # more /etc/group ← 登録されたことを確認します
これらの変更により,OS が boot する際に「/dev/dri/card0 の mode が変わる」と説明されています.しかし,
% ls -l /dev/dri/ lrwxr-xr-x 1 root wheel 8 Sep 16 12:10 card0@ -> ../drm/0 lrwxr-xr-x 1 root wheel 10 Sep 16 12:10 renderD128@ -> ../drm/128
このように card0 の mode は変化しません. そうでなく,その dynamic link である /dev/drm/0 のそれが変化します.
% ls -l /dev/drm/ crw-rw-rw- 1 root video 0x188 Sep 16 12:10 0 ← この mode が 0666 になります crw-rw---- 1 root video 0x189 Sep 16 12:10 1
[1] この group は,当初の資料では "operator" でしたが,最近の資料では "video" です. どちらを選んでも問題なく動作します.
Driver は "intel" または "modesetting" のいずれかを選びます.
Section "Device" Identifier "Skylake" Driver "intel" # Driver "modesetting" ← この例では,こちらを comment out しています. BusID "PCI:0:2:0" EndSection
(2019.5.5) 今日になって気付きましたが,xf86-video-intel では xv が使えません.
% xvinfo X-Video Extension version 2.2 screen #0 no adaptors present
NP25S (Pineview G) では xv が使えるので,設定の問題ではなく現時点での「仕様」なのだと思います.
なお,modesetting ならば ST180E (Skylake) で xv が使えます. (以下に記しますが,使えなくなってしまいました.)
(2019.7.19) FreeBSD を 11.2 から 11.3 に更新しましたが,現時点で drm-fbsd11.3-kmod はありません. とはいえ,drm-fbsd11.2-kmod で問題なく動作しております.
modesetting の使用法として,公式資料には次のように書かれております.
それに従えば次のような動作になります. すなわち,自動検出では intel driver が優先されるが,それが見つからないので次点の modesetting が使われる,ということです.
(==) Matched intel as autoconfigured driver 0 (==) Matched modesetting as autoconfigured driver 1 (==) Matched scfb as autoconfigured driver 2 (==) Matched vesa as autoconfigured driver 3 (中略) (EE) Failed to load module "intel" (module does not exist, 0) (II) Loading /usr/local/lib/xorg/modules/drivers/modesetting_drv.so (中略) (II) glamor: OpenGL accelerated X.org driver based. (II) glamor: EGL version 1.4: (II) modeset(0): glamor initialized
とはいえ,xorg.conf を使って modesetting を指定しても問題なく動作しました. 当然ですが,この場合には xf86-video-intel が install されていても大丈夫です.
(2020.3.12) 昨日,X Server が 1.20.7 になりました. hal は非推奨から廃止になり,devd と udev の二択になりました.(厳密には,これらを使わないという選択肢もあります.)
(2020.12.29) 今日になって気付いたのですが,最新の環境では glamor の初期化に失敗します.それにより xv が使えなくなりました.
関連する部分の log ですが,これまで
(II) Module modesetting: vendor="X.Org Foundation" compiled for 1.20.7, module version = 1.20.7 (II) modeset(0): glamor initialized
であったのが,以下のようになります.
(II) Module modesetting: vendor="X.Org Foundation"
compiled for 1.20.9, module version = 1.20.9
(EE) modeset(0): glamor initialization failed
FreeBSD 12/13 の環境ではどうなのか気になるのですが,試している暇がありません.
(2021.7.27) FreeBSD 12.2 にて試しました. そちらの環境ではこのエラーは出ませんし,xv も使えます.
FreeBSD 11.2 においては,旧 package system のソースは削除されております. 詳細は package に書きました.
(2018.11.10) freebsd-update により FreeBSD 11.2-RELEASE-p4 に更新しました. その環境では,旧 package system が復活しておりました. 自分で make install する必要もありません.
(2019.7.19) freebsd-update により FreeBSD 11.3-RELEASE に更新しました. その環境では,旧 package system は消されておりませんでした.
(2020.1.18) FreeBSD 11.3 を新規に install したところ,再び旧 package system がなくなっておりました.
音声の出力先を default の pcm0 から pcm1 に切り換えるには,/etc/sysctl.conf に以下のように記述します.[1]
hw.snd.default_unit=1
[1] 以前はこれを /boot/loader.conf にて設定しておりましたが,FreeBSD 11.2 ではエラーになります. (dmesg の出力を示します.)
Setting sysctl hw.snd.default_unit failed: 22
小金丸さんの配布する日本語マニュアルです. FreeBSD/amd64 11.2 用のマニュアルは catpages 形式も含めて以下のところにあります. 普通は,どちらか一方を download すれば事足ります.
ftp://ftp.koganemaru.co.jp/pub/jman11/ja-man-doc-11.2.20180629.amd64.txz ftp://ftp.koganemaru.co.jp/pub/jman11/ja-cat-doc-11.2.20180629.amd64.txz
(2019.7.19) FreeBSD 11.3 用のマニュアルも配布されております.
ftp://ftp.koganemaru.co.jp/pub/jman11/ja-man-doc-11.3.20190716.amd64.txz ftp://ftp.koganemaru.co.jp/pub/jman11/ja-cat-doc-11.3.20190716.amd64.txz
SpeedStepを使って省電力にするためには,/etc/rc.conf に以下のように記述します.
powerd_enable="YES"
この設定を行なう前は,CPU の負荷によらず以下のような状態でした.
% sysctl dev.cpu | grep freq
dev.cpu.0.freq_levels: 2801/35000 2800/35000 2700/33218 2500/30093 2400/28408 22
00/25469 2000/22640 1900/21110 1800/19923 1700/18457 1500/15909 1400/14824 1200/
12146 1100/11140 900/8911 800/7698
dev.cpu.0.freq: 2700
設定後は,OS の起動直後 (低負荷の状態) にて以下のように CPU のクロック周波数が下がっています.
dev.cpu.0.freq: 800
しかし,負荷の高い状態を長く続けると,
dev.cpu.0.freq: 2801
となり,CPU ファンが間欠的に高回転になってうなるようになりました. これは BIOS にて CPU ファンを 30% に設定した場合です. これを 60% にすれば,常時少し騒がしいですが,うなりはなくなります.
/etc/rc.conf に以下のように記述すれば,CPU のクロック周波数の上限を規定することができます.
powerd_flags="-M 2700"
こうすることにより,CPU ファンを 30% に戻しました.
気付いた順に諸々のことを書きます.
1. ssh
ssh で FreeBSD 7.2 の PC にアクセスできなくなりました. 次のように言われます.
Unable to negotiate with 192.168.1.3 port 22: no matching host key type found. Their offer: ssh-dss
FreeBSD 7.2 の ssh の version は以下の通りです.
% ssh -V OpenSSH_5.1p1 FreeBSD-20080901, OpenSSL 0.9.8e 23 Feb 2007
この version だと,ssh-rsa, ssh-dss が標準のようです. (man ssh_config を参照.ssh -Q option はありません.)
一方,FreeBSD 12.3 の ssh の version は以下の通りです. (これを執筆した時点で 11.3 の環境は残っていないのです.)
% ssh -V OpenSSH_7.9p1, OpenSSL 1.1.1l-freebsd 24 Aug 2021
% ssh -Q key ssh-ed25519 ssh-ed25519-cert-v01@openssh.com ssh-rsa ssh-dss ecdsa-sha2-nistp256 ← default ではこれが使われてます. ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-rsa-cert-v01@openssh.com ssh-dss-cert-v01@openssh.com ecdsa-sha2-nistp256-cert-v01@openssh.com ecdsa-sha2-nistp384-cert-v01@openssh.com ecdsa-sha2-nistp521-cert-v01@openssh.com
~/.ssh/ に config という名で以下の内容のファイルを作ればアクセスできるようになります. (既にあるなら,以下の内容を追加します.)
HOST 相手方の host 名
HostKeyAlgorithms ssh-rsa,ssh-dss
「相手方の host 名」は,複数ある場合には [space] を空けて列挙します. ここを * にすると,すべての相手が対象になってしまいます.
2. xpdf
3.0 から 4.0 になり,GUI が Motif から Qt に変わったのですが,「←」「→」ボタン [1] の動作がこれまでと違います.
「←」「→」ボタンは「一ページ戻る」「一ページ進む」ではなく,「そこに飛ぶ前のページに戻る」「やっぱり進める」です.
(すなわち,firefox の「←」「→」ボタンのような動作なのです.)
一ページずつ前後に動きたいならば [Page Up], [Page Down] キーを使います. これは従来通りの使い方です.
[1] これらはカーソルキーでなく,menu bar の下のボタンです.
(2019.11.27) ports を更新したら,いつの間にか ja-xpdf-jafont-3.03_3 が BROKEN になっていて,install できませんでした. (そもそも,xpdf の方がかなり前から 4.0 になっているので,気になってはいました.) この状態だと日本語の表示ができません.
japanese/xpdf の Makefile を以下のように変えれば install できます. 手持ちの文書しか試せませんが,日本語の表示もできるようになりました.
--- Makefile.orig 2019-11-06 21:48:32.000000000 +0900 +++ Makefile 2019-11-27 21:14:48.500250000 +0900 @@ -13,7 +13,7 @@ MAINTAINER= hrs@FreeBSD.org COMMENT= Japanese font support for xpdf -BROKEN= unfetchable +#BROKEN= unfetchable RUN_DEPENDS= xpdf:graphics/xpdf \ ${ADOBECMAPDIR}/ai0/CMap/Identity-H:print/adobe-cmaps \
(2019.12.27) 最新の ports では ja-xpdf-jafont-4.02 に更新されていました.
3. htmllint
2019.4.14 に久々に更新したところ,以下のようなエラーになって動きませんでした. (引用にあたり,適宜改行を入れました.)
Can't locate htmllint.pm in @INC (you may need to install the htmllint module) ( @INC contains: /usr/local/lib/perl5/site_perl/mach/5.28 /usr/local/lib/perl5/sit e_perl /usr/local/lib/perl5/5.28/mach /usr/local/lib/perl5/5.28 /usr/local/bin/) at /usr/local/bin/htmllint.orig line 15.
これは,files/htmllint.in から生成される htmllint は work に置かれるのですが,これでなく修正されていないオリジナルの work/ja-another-htmllint-20111128_2/htmllint が install されてしまうためです.
Makefile を以下のように修正すれば解決します.
--- Makefile.orig 2019-02-02 18:52:33.000000000 +0900 +++ Makefile 2020-01-21 23:29:07.110625000 +0900 @@ -52,7 +52,7 @@ do-install: ${MKDIR} ${STAGEDIR}${DATADIR}/rule ${STAGEDIR}${DATADIR}/html - cd ${WRKSRC} && ${INSTALL_SCRIPT} htmllint ${STAGEDIR}${PREFIX}/bin + cd ${WRKSRC} && ${INSTALL_SCRIPT} ../htmllint ${STAGEDIR}${PREFIX}/bin cd ${WRKSRC} && ${INSTALL_SCRIPT} ${HTML} ${STAGEDIR}${DATADIR}/html cd ${WRKSRC} && ${INSTALL_DATA} ${PM} ${STAGEDIR}${DATADIR} cd ${WRKSRC} && ${INSTALL_DATA} ${RULE} ${STAGEDIR}${DATADIR}/rule
(2021.7.27) 上記の修正が commit されたので,最新の ports を使えば問題は生じません.
4. xterm
普段 xterm を使うことが少ないので気付かなかったのですが,いつの間にか title bar に current directory を表示することができなくなっていました.[1] FreeBSD 8.4 でもダメでした. かなり遡って FreeBSD 4.11 では大丈夫でした.(XFree86 の時代です!)
xterm の online manual にある次のような操作も効きません.
printf '\033]2;Hello world!\007'
ちなみに,allowTitleOps は default が true ですが,念のために明示的に true に設定しましたがやはりダメでした.
また,[Ctrl] + Right Mouse で VT Fonts のメニューを出すと,Allow Title Ops はかすれた文字で表示され,操作することができません.
(これって,True で固定されているという意味なのか,機能しない状態であるという意味なのか?)
ソースを追う暇がないので,当面放置することにします.
この件は,検索しても同じ事例は見つかりませんでした. 逆に設定法の情報が多数見つかるので,ちゃんと動作していないのは当方だけかとも思えてきました.[2] 当方の設定等に問題がある可能性もありますが,一応情報として提示することにしました.[3]
なお,kterm では正常に表示しております. (xfce や mate の Terminal でも正常に表示しております.)
[1] -T, -title による固定的な変更はできます.
[2] 比較的新しい情報では,OS は Linux かまたは明示していないかで,「最近の FreeBSD でもできる」という情報は見つかりませんでした.
[3] 原因がわかりました. kinput2 を試用する目的で .Xresources に次の設定をしていたためでした.
xterm*allowSendEvents: on