gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

FreeBSD xorg トラブル

2023-02-15 23:16:54 | パソコン・インターネット
*********** 2023-02-15 22:41:10 ***********
[Subject]: xorg がOSバージョンアップ後に立ち上がらない

■症状
startx でXが立ち上がらない。/var/log/Xorg.0.log を見るとエラー
を示すEEの行が以下のように表示される。

(EE) intel(0): intel_uxa_set_pixmap_bo: size of buffer object does not match constraints: size=8388608, must be greater than 8294400, but less than 4194304

■ハードウェア

hyama@tkmt2:~ % pciconf -lv | grep -B4 VGA
vgapci0@pci0:0:2:0: class=0x030000 rev=0x04 hdr=0x00 vendor=0x8086 device=0x4c8b subvendor=0x1849 subdevice=0x4c8b
vendor = 'Intel Corporation'
device = 'RocketLake-S GT1 [UHD Graphics 730]'
class = display
subclass = VGA

■原因
xf86-video-intel のドライバが悪い。
たぶん、グラフィックボード730に対応していないことが原因。

■対策1----- 最新のインテルカードドライバにパッチを当てる

行末のパッチをaa.patch に保存。
# cd /usr/ports/x11-drivers/xf86-video-intel
# make
ーーー ソースのダウンロードが住んだところでCTRL-zで中断。
   パッチを当てる
# patch work/xf86-video-intel-xxxx/src/uxa/intel-uxa.c < patchfail
# fg
# make deinstall
# make install

■対策2 --- カーネルモジュールkmod-i985 の最新版をいれる
# cd /usr/ports/graphics/drm-kmod
# make
# make deinstall
# make reinstall

■パッチ
*** work-patched/xf86-video-intel-31486f40f8e8f8923ca0799aea84b58799754564/src/uxa/intel_uxa.c Wed Feb 15 20:08:18 2023
--- work/xf86-video-intel-31486f40f8e8f8923ca0799aea84b58799754564/src/uxa/intel_uxa.c Sat Jan 16 05:59:05 2021
***************
*** 660,666 ****
} else
size = intel_pixmap_pitch(pixmap) * pixmap->drawable.height;

! if (bo->size < size ) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"%s: size of buffer object does not match constraints: size=%ld, must be greater than %d, but less than %d\n",
__FUNCTION__, (long)bo->size, size, intel->max_bo_size);
--- 660,666 ----
} else
size = intel_pixmap_pitch(pixmap) * pixmap->drawable.height;

! if (bo->size < size || bo->size > intel->max_bo_size) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"%s: size of buffer object does not match constraints: size=%ld, must be greater than %d, but less than %d\n",
__FUNCTION__, (long)bo->size, size, intel->max_bo_size);

以上

FreeBSD 13 stable X trouble

2022-11-26 18:39:39 | パソコン・インターネット
FreeBSD 13 stable 運用中に、全部コンパイルしなおしたら、起動しなくなった。
起動後、画面がピンクになり、だんまり。外からもログインできない。

カーネルを1つ前に戻したら立ち上がった。
PKG類は全部削除。2週間ぐらいソースが更新するたびにコンパイルしたがだめ。

915kms のドライバを /etc/rc.conf に書かないと、OSは起動することがわかった。
Xを起動しようとすると、Intelボードなので、このドライバがないとだめ。

ドライバのPKGは、カーネルモジュールを含んでおり、ファイルは、/boot/module の配下にあることが
わかった。このとき /boot/module の配下のファイルが更新されていないことがわかった。

やったことは次の通り。

1.カーネルビルド時の障害解消
   /boot/module の配下が更新されていないのは、build kernel の途中で、
moduleをコンパイルしようとした最初にエラーが発生していた。
   linux --- .c というソースが、ヘッダファイルがないといってエラーになっていた。
   自動生成されるファイルのようだったので、include 行を削除した。これで、
   module はコンパイルされ、インストールされるようになった。
2. カーネルビルド時に外部のドライバをコンパイルして組み込む方法
   FreeBSDのハンドブックのビデオカードに記載があった。/etc/make.confに
   ビデオカードのドライバのソースパスを記載しておく
3. Intelボードのドライバのエラー
   コンパイルして、インストールして、startxを実行するとエラーになる。
   Intelのドライバーの中で、ハードのバッファのサイズのチェックをしており、
   そこで落ちている。式を見ると、最小値と最大値の間かどうかをチェックしているが、
   システムがもっている最大値が最小値より小さい。そこで、ドライバのソースを
   改修することにした。
    /usr/ports/x11-driver/xf86-video-intel/work
   の下。cleanしてコンパイルすると、ソースを生成するので、ソースの変更が消えてしまう。
   そこで、clean してコンパイルした後、その部分のソースを変更し、そのディレクトリないだけで
   make; make install した。これによって、修正したドライバが、OSのドライバ置き場に
   インストールされた。

上記の3つにより、無事にXが起動できるようになった。
これから、mozc, fcitx, Linux版chrome, Libre office, mixer など順番に必要なものを再インストールする
ことになる。

また人並みの環境にもどることができた。

Firefox/Chrome/Chromium on FreeBSD

2022-03-21 11:07:00 | パソコン・インターネット
FreeBSD Stable をバージョンアップしたら、ブラウザから音がでなくなった。

 ・Firefox (FreeBSD native) --- 音が出ない
 ・Chromium (FreeBSD native) -- 音が出る
 ・Chrome (ubuntu ABI) -------- 音が出ない

Chromeは、起動する前には、root で、service ubuntu restart
が必要。再インストールしたら音がでなくなった。
また、一からインストールすればよいのだろうか。

Grub で起動できない件は解決

2021-04-04 10:21:00 | パソコン・インターネット

起動できなかったのができるようになった。

Linux で、grub-customiser を機動してしてメニューを再構成しただけ。
起動時のgrubの作ったメニューの中で、FreeBSDを指定すると
立ち上がるときと、メニューに戻るときがある。なぜかは不明。
とにかく立ち上がるようになって、なにより。
せっかく買ったSSDからは起動できないことはかわらない。
grub2 のメニューからどうやって指定してよいのかがわからない。
やっているがうまくいかない。

そのため、HDからマウントして、symbolic linkして、src のコンパイル
などで使用中。


FreeBSD 12.1 文字化け

2020-05-03 14:40:00 | パソコン・インターネット

1. 問題
・FreeBSD 12.1-STABLE r360560あたりを入れると、Xorgを起動した後のキーボードを打つとランダムな文字が表示される。表示は同じキーを押しても異なる文字になる。要は文字が無茶苦茶になる。
・いろいろ対処したが、途中段階では、jp106の右端のキーである、「バー」「バックスラッシュ」「アンダーバー」が入力できない問題や、emacsでは、mozcで日本語入力できるが、Mate terminalでは日本語入力に切り替わらないという問題が発生した。
・以下の対処によって、上記のすべての問題は解決している。

2. 現状のバージョン
- X.Org : X Server 1.20.8
- OS : FreeBSD 12.1-STABLE r360560 GENERIC amd64

3. 参考にしたWebサイト
- https://forums.freebsd.org/threads/keyboard-configuration-disaster.74850/
- https://forums.freebsd.org/threads/new-xorg-switch-from-devd-to-udev.74144/page-4

4. 原因と対処の概要
・原因は、FreeBSDが12.1からUDEVに変わったこと。なぜか、12.1-RELEASEp3 は問題ないのだが。。
・対処としては、以下を行う。
- X関係のモジュールのUDEV対応・最新化
- sysctl の設定
- Xの設定ファイルの最新化(UDEV対応)

5. 対処
5.1 Xorg関係のイカをportsから再インストール。
devel/libudev-devd
x11-server/xorg-server
x11/libinput
x11-drivers/xf86-input-libinput
その後、各行に対して以下を実行する。
# cd /usr/ports/上記のディレクトリ
# make clean; make rmconfig ; make ; make deinstall ; make reinstall

5.2 sysctlの設定
kern.evdev.rcpt_maskを初期値の3から12に変更
- file: /etc/sysctl.conf
- 追加行:
kern.evdev.rcpt_mask=12

5.3 Xの設定ファイル
- /etc/X11/xorg.conf.dの下と/usr/local/etc/X/xorg.conf.d/の下に
存在する設定ファイルをマージする。具体的には、前者の下のinput.confは
削除した。後者の下の 99-myinput.conf に内容をマージした。

Section "InputClass"
Identifier "libinput keyboard catchall + jp106x"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "XkbRules" "evdev"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
Option "XkbOptions" "ctrl:nocaps"
EndSection
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "MiddleEmulation" "on"
Option "DisableWhileTyping" "off"
EndSection

5.4 念のためのカーネルの確認
上記の設定を有効にするには、kernelがEVDEVをサポートするようになっていないといけない。デフォルトはサポートするようになっている。すなわち、GENERICファイルを編集していなければ問題ない。念のため、カーネルの設定ファイルを確認することを進める。以下の2行があればよい。標準のGENERICは、/usr/src/sys/amd64/confの下にある。削除していた場合は補ってカーネルを再インストールすることが必要。

# evdev interface
options EVDEV_SUPPORT # evdev support in legacy drivers
device evdev # input event device support


6. 再起動
(1) キーボード設定の確認のために、setxkbmapを実行。xkb_keycodesの中に"evdev"が入ればOK。

% setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+japan" };
xkb_symbols { include "pc+jp+inet(evdev)+ctrl(nocaps)" };
xkb_geometry { include "pc(pc104)" };
};

(2) /var/log/Xorg.0.log の確認。
設定ファイルに設定した、キーボードのモデル名がログに入っていることを確認する。
% grep xkb_model /var/log/Xorg.0.log
[ 36.524] (**) Option "xkb_model" "jp106"
[ 36.624] (**) Option "xkb_model" "jp106"
[ 36.625] (**) Option "xkb_model" "jp106"
[ 36.626] (**) Option "xkb_model" "jp106"
[ 36.628] (**) Option "xkb_model" "jp106"

7. 動作確認
(1) Terminalを起動して、CTRL-スペース及び全角/半角キーでmozcが起動することを確認
(2) アンダーバー、バー、バックスラッシュが入ることを確認
(3) emacsを起動して、CTRL-スペースではmozcが起動しないこと、全角/半角キー及びCTRL-バックスラッシュでmozcが起動することを確認

ようやく終わった!