gooブログはじめました!

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

FreeBSD 13 stable X trouble (3)

2022-11-26 19:15:45 | 日記

Xのドライバのソースの修正箇所は以下の通り。


AAAA@XXXX:/usr/ports/x11-drivers/xf86-video-intel/work/xf86-video-intel-31486f40f8e8f8923ca0799aea84b58799754564/src/uxa % diff -c6 intel_uxa.c*
*** intel_uxa.c Sat Nov 26 18:06:04 2022
--- intel_uxa.c~ Sat Jan 16 05:59:05 2021
***************
*** 657,669 ****

height = ALIGN(pixmap->drawable.height, height);
size = intel_get_fence_size(intel, intel_pixmap_pitch(pixmap) * height);
} 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);
bo = NULL;
goto free_priv;
}
--- 657,669 ----

height = ALIGN(pixmap->drawable.height, height);
size = intel_get_fence_size(intel, intel_pixmap_pitch(pixmap) * height);
} 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);
bo = NULL;
goto free_priv;
}

AAAA@XXXX#

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 など順番に必要なものを再インストールする
ことになる。

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