Linux エミュレータから使うブラウザ。

実は、 FreeBSD の Firefox を利用して Y!mobile のホームページを見ると『推奨のブラウザをご利用ください』と出てそれ以上先に進めなくなってしまう。

google Chrome ならええんかい? とか思っても FreeBSD の Chrome は Chromium で、かつ、今の世の中になっても qt5 を利用しているので、インストールしたくない。仮に ports からイントールして常用したとしても新しいバージョンが出ると毎回 3,4 時間くらいコンパイルに時間がかかって辛いし・・。なにか良いものはないものか・・。

僕的には qt6 対応の標準的なブラウザが欲しいのであります。今 qt6 を利用するブラウザとなると qt6-webengine を利用しているので konqueror や Falkon 辺りかな。まぁ、これらは KDE6+Plasma6 インストールすると入るのだけど(最近、Falkon はメインストリームから外されたかな)。

しかし、なんか、もっとメジャーなブラウザがほしいと思い、探し回っていてふと思った。
Linux 版の Chrome だけど、これは ports にもなっている。 /usr/ports/www/ 辺りを見ると linux-chrome とか linux-brave とかいうブラウザが存在しています。これ使ってみようかなぁっ!!

 
と、言うことで、前フリはここまで。今回は FreeBSD に Linux 環境を整えてみます。とはいいつつ、もう随分と前から FreeBSD で Linux のアプリが動作します。僕も随分前に色々試したこともありました。が、このブログのエントリを検索してみても、ネタとして書いたことないかもですね・・。

 
では、早速環境を整えましょう。

# cd /usr/ports/www/linux-brave/
# make install
# cd ../linux-chrome/
# make install

 
こんな感じでしょうか。 Linux エミュレータ環境をドドドと、インストールしてくれます。今回は FreeBSD/amd64 15.0-RELEASE なのですが、 linux-rl9 (Rocky Linux 9.7 の環境)がインストールされるようです。RPM 的には合計 88 個。すごい量ですねぇ。
/usr/ports/distfiles/rocky/ の中は全部で 516MB になります。それなりに Disk の肥やしですねf(^^;;。

 
それでは、環境が整ったようなので、実際に起動してみましょう。
あ。 /etc/rc.conf で linux_enable=”YES” を記述しましょう。カーネルモジュールについては kld_list=”amdgpu.ko” とか書いていると思うので、既に linux.ko や linux64.ko が kldload されていると思うので、特に問題はないでしょう。

と、いうことで気を取り直して起動してみます。

$ file /usr/local/share/chrome/chrome
/usr/local/share/chrome/chrome: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=c02ff1455d57b0a4d8f61bea1cf75241e6f6f051, stripped
$ /usr/local/bin/google-chrome
[1225/142428.343466:WARNING:chrome/app/chrome_main_linux.cc:82] Read channel stable from /usr/local/share/chrome/CHROME_VERSION_EXTRA
[4507:4507:1225/142428.447050:ERROR:base/memory/platform_shared_memory_region_posix.cc:214] Creating shared memory in /dev/shm/.com.google.Chrome.vT6kQZ failed: サポートされていない操作です (95)
[4507:4507:1225/142428.447278:ERROR:base/memory/platform_shared_memory_region_posix.cc:217] Unable to access(W_OK|X_OK) /dev/shm: 許可がありません (13)
[4507:4507:1225/142428.447287:FATAL:base/memory/platform_shared_memory_region_posix.cc:219] This is frequently caused by incorrect permissions on /dev/shm.  Try 'sudo chmod 1777 /dev/shm' to fix.
[1225/142428.456415:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:44] ptrace: Invalid argument (22)
[1225/142428.456766:WARNING:third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc:400] Couldn't initialize main thread.
[1225/142428.456785:ERROR:third_party/crashpad/crashpad/util/linux/proc_task_reader.cc:47] format error
[1225/142428.456792:WARNING:third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc:391] thread ID 4507 not found in process
[1225/142428.456816:ERROR:third_party/crashpad/crashpad/snapshot/linux/process_snapshot_linux.cc:129] thread not found 4507
[1225/142428.456915:ERROR:third_party/crashpad/crashpad/util/linux/proc_task_reader.cc:47] format error
トレース・ブレークポイントトラップ(coreを出力しました)
$

 
あら・・。orz

起動せずに core dump してしまいました。出力されたメッセージをよぉーく見てみると『Creating shared memory in /dev/shm/.com.google.Chrome.vT6kQZ failed: サポートされていない操作です (95)』と、表示されています。この辺りをヒントに調査してみると、以下のようになっていました。

$ ls -lad /compat/linux/dev/shm
dr-xr-xr-x  2 root wheel 512 Dec 26 07:44 /compat/linux/dev/shm/

 
Linux 上で動作するアプリケーションはシェーアドメモリを利用するのですが、その場合 /compat/linux/dev/shm/ を利用しますが、一般ユーザで起動しても書き込み権限がないので起動せず終了してしまうようです。

では、 /etc/fstab はどうなっているの? と、いうことですが、以下のようになっています。

linproc         /compat/linux/proc      linprocfs       rw      0       0
linsysfs        /compat/linux/sys       linsysfs        rw      0       0
tmpfs           /compat/linux/dev/shm   tmpfs           rw,size=1g,mode=1777    0       0

 
tmpfs を 1GB 確保し mode 1777 でマウントするように記載しているのですが、実際には 555 でマウントしてしまっているようです。どうしてだろ?僕の設定が何か足りないのか?
なので、しょーがないので、一旦 umount /compat/linux/dev/shm してから mount -a してあげると、今度は 777 でマウントできました。何かがおかしい・・。orz

再度 /usr/local/bin/google-chrome や /usr/local/bin/brave-browser を起動すると無事に起動するのでありましたっ!!

なんかすごいっ!!

せっかくなのでブラウザを並べてみました。一番下が FreeBSD 版 Firefox。真ん中が Linux 版 brave-browser。一番上が Linux 版 google-chrome になります。良い感じですね;-)。
『これより三役』って、雰囲気です。 vivaldi があるともっと嬉しかったですが。

linux-chrome なり linux-brave のどちらか一方をインストールすると Linux 環境が整うため、あとは比較的容易にインストールできます。そらそーだ。ただ単に dnf install で RPM をインストールするだけだし。自力で /usr/ports/www/chromium/ をソースからコンパイルするより簡単です;-)。

 
が、使い込んでいくと何個か目につくようになりました。

一個目。日本語入力できないですね。これはまだ、格闘し足りないのかもしれません。もしかしたら FreeBSD 側の fcitx5+mozc で Linux のアプリに対して文字入力できるようになるのかもしれませんが、僕はまだそこまでたどり着いていません。
引き続き調査したいと思います。

二個目。上に書いた通り FreeBSD 側の機能を受け付けてくれないのに、KDE6+Plasma6 の場合では kdewallet を利用します。また、ブラウザで Proxy サーバを設定する場合、 systemsettings の「プロクシ」設定を利用したりと、結構 FreeBSD 側のモノを利用したりしています。

 
とまぁ、こんな感じで使い込み始めたのですが、ここで一番上に戻って、Linux 版の Chrome で Y!mobile のサイトにアクセスしてみるとどうなる? と思い確認してみたところ・・。果たして、やはり「推奨のブラウザをご利用ください」と、表示されてしまうのでありました・・。
もう OS レベルのお話なのでしょうな。素直に Windows か macOS 、はたまた、スマートフォンで見るのが良いのでしょう・・。

 
しかしっ!! FreeBSD 上で動作するブラウザが増えたこと良いことです。また、せっかく Linux 環境が構築できたので、他にも有用な Linux 専用アプリがあったらインストールして試してみたいと思いました。