https://svnweb.freebsd.org/ports?view=revision&revision=433722によると、Chromiumでsegfaultする場合があるのは、このパッチで直るようだ。早速試してみる。
追記: と思ったが、どれも既に適用済みだった。やっぱり57まで待つしかないかな。
https://svnweb.freebsd.org/ports?view=revision&revision=433722によると、Chromiumでsegfaultする場合があるのは、このパッチで直るようだ。早速試してみる。
追記: と思ったが、どれも既に適用済みだった。やっぱり57まで待つしかないかな。
Chromium 56.0.2924.87 (pkgsrc/wip/chromium-new)では、 Gentoo Linuxのフォーラムにあるのと同じように、 gmailやGoogle Calendar、Amazon.co.jp等でsegfaultしてしまい、使えない。 とりあえず57がリリースされたらまた試してみることにする。
Chromium 56をNetBSDで動かそうとしているのだが、 Google Calendarやgmailだとページの描画が終わった瞬間に何かがsegfaultして クラッシュ時のインフォメーションページに移行してしまい、 使うことができない。 デバッグビルドをしようとすると、8GB RAM+16GBスワップでもリンク段階で メモリーを使い果たしてしまう。
どこがいけないのか…。
NetBSDでのファイルシステムの扱いについて理解したいと考えているのだが、 いろいろなことが分からなくて、先に進まない。 そこで、既存の簡単なファイルシステムのサポートをNetBSDに追加してみることで 学習したいと考えている。
Linuxで最も簡単なファイルシステムは、cramfs (Compressed ROM file system) と言うものであるように見える。 なんで、Compressed ROM file systsmがcramfs と略されるのかというのは疑問ではあるが…。
とりあえず、既存のリトルエンディアンなcramfsのディスクイメージを 手元で作れるようにした。単にSUSE 13.1のutil-linux-2.23.2-34.1.x86_64.rpmを 展開し、NetBSD/amd64のcompat_linuxで動かしただけである。
ドキュメントがgnu-gpl-v2なソースコードを見ろとだけ書いてあって 困っているのだが、基本的には生成されたディスクイメージを見て、 パースするプログラムを書いている。 NetBSDカーネルでサポートする際にも、このコードは役立つものと考えている。
今のところ、ユーザーランドのプログラムであるパーザーでは、 Super blockとinodeをパースできるようにはなった。 後はzlib deflateで圧縮されたファイル本体のデータの取り扱いが できるようになれば良い。
今、イメージできないのは、zlibで圧縮されたデータをいつ展開するか と言う問題である。 例えば、これにはディスクイメージのマウント時に全てをRAMに展開しておく 方法と、個々のファイルにアクセスした際に展開する方法があると思う。 ユーザーランドのパーザーとしては、mmap(3)でイメージファイルを RAMのある範囲に割り当ててパースしてやれば良いのだが、 そもそもこう言う場合のNetBSDカーネルの流儀と言うのが分からない。
コマンドラインのユーティリティープログラムとしては、mount_cramfsと makefsでリトルエンディアンとビッグエンディアンの両方のディスクイメージを 作れるようにして置けば十分であろう。
FreeBSD Portsのwww/chromiumに含まれているパッチをベースに、 pkgsrc/wip/chromium-newで作業をしているのだが、 なかなかNetBSD向けのパッチをマージし切れないでいる。 だが、目新しいことはないので、時間はかかるがやって行けば良さそうだ。
FreeBSD Portsのパッチでは、is_bsdやtarget_os='bsd'という記載が あるのだが、これは、is_freebsdやtarget_os='freebsd'とでもしておかないと NetBSD向けにうまく分岐を作れない場合がある。 これについては、FreeBSD PortsのパッチがChromiumのupstreamに 提出されているかどうかを調査して、あるとしたらそれにコメントを付けないと いけないのだが、なかなか腰が上がらない。
特に、CLA (Contributor License Agreement)に同意するハードルが高い。 でも、ここはどうにかして、先に進みたい。
pkgsrc/wip/chromium-newとして、時折Chromium web browserをNetBSD/amd64-currentで動かせるように試している。 しかし、オーディオの再生ができないので、pkgsrc/www/chromiumとしてインポートすることはできないと考えていた。 だが、もしかしたら、これはaudio/alsa-plugins-ossがfloatで出力しようとして、OSSが受け入れられずに音が出ないという pkgsrc/www/firefoxと同じような問題なのかもしれないと言う気がして来た。 と言うことで、chromium-56.0.2924.87をビルドしてみることにした。
久しぶりにqemuのツリーをpullしてみると、 target/hppa と target/nios2 と言うのが追加されていた。 ちょっと見ただけだが、いずれもMMUも実装する方向ではあるようだ。
2017-02-13現在では、qemu-system-nios2はビルドされるが、hppaはまだツリーにあるだけのようだ。
$ qemu-system-nios2 -cpu ?
(何も返ってこない)
$ qemu-system-nios2 -M ?
Supported machines are:
10m50-ghrd Altera 10M50 GHRD Nios II design (default)
none empty machine
また、qemuのウェブサイトも 新しくなっている。
RedmineというIssue Tracking Systemがある。
多機能であるが使いやすく、ソフトウェア開発以外でも使えるので、
便利に使わせてもらっている。
pkgsrcだと、pkgsrc/deve/ruby-redmine
に収録されている。この記事の適用されるバージョンは、3.3.2である。
これはこれで、改善すべき点が山ほどあるパッケージなのだが、 とりあえず手軽に動かすと言うだけであれば、使えるものではある。
pkgsrc/devel/ruby-redmine
では、
標準ではunicornというアプリケーションサーバーで動かすことができるようになっている。
だが、標準ではあくまで、ルートディレクトリーで動かすような設定となっている。
だが、このようなサービスは、HTTPSで運用すべきであるし、
そうなると、サーバー証明書を取得するコストも考えると、
他のサービスと共有されたサーバー上で運用されることとなる。
一番簡単なのは、サブディレクトリーにアクセスすると、
Redmineを使用できるという運用である。
つまり、https://www.example.com/redmine/
にアクセスすると
使用できると言うことである。
この時、https://www.example.com/nextcloud/
にアクセスすると
Nextcloudが動いていると言った状態である。
変更すべきは3箇所である。
/usr/pkg/share/examples/rc.d/redmine_unicorn22
からコピーされた/etc/rc.d/redmine_unicorn22
(ここで22はRuby 2.2を使っていることを示している。)/usr/pkg/share/ruby22-redmine/app/config.ru
/usr/pkg/share/ruby22-redmine/app/config/environment.rb
/etc/rc.d/redmine_unicorn22
への変更RAILS_RELATIVE_URL_ROOT='/redmine'をunicornの起動の際の環境変数に追加する。
$ diff -u /usr/pkg/share/examples/rc.d/redmine_unicorn22 /etc/rc.d/redmine_unicorn22
--- /usr/pkg/share/examples/rc.d/redmine_unicorn22 2017-02-03 17:38:39.000000000 +0900
+++ /etc/rc.d/redmine_unicorn22 2017-02-03 18:43:18.000000000 +0900
@@ -19,6 +19,7 @@
cd /usr/pkg/share/ruby22-redmine/app
GEM_HOME=/usr/pkg/share/ruby22-redmine/gems \
GEM_PATH=/usr/pkg/share/ruby22-redmine/gems \
+ RAILS_RELATIVE_URL_ROOT='/redmine' \
/usr/pkg/bin/ruby22 \
/usr/pkg/share/ruby22-redmine/gems/bin/bundle exec unicorn \
-c /usr/pkg/share/ruby22-redmine/app/config/unicorn.rb \
/usr/pkg/share/ruby22-redmine/app/config.ru
run RedmineApp::Application
をmap
で囲む。
$ diff -u config.ru /usr/pkg/share/ruby22-redmine/app/config.ru
--- config.ru 2017-02-04 16:28:37.000000000 +0900
+++ /usr/pkg/share/ruby22-redmine/app/config.ru 2017-02-03 18:22:44.000000000 +0900
@@ -1,4 +1,7 @@
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
-run RedmineApp::Application
+#run RedmineApp::Application
+map ActionController::Base.relative_url_root || "/" do
+ run RedmineApp::Application
+end
/usr/pkg/share/ruby22-redmine/app/config/environment.rb
ActionController::Base.relative_url_root = "/redmine"
を最下行に追加する。
deuterium$ diff -u environment.rb /usr/pkg/share/ruby22-redmine/app/config/environment.rb
--- environment.rb 2017-02-04 16:30:29.000000000 +0900
+++ /usr/pkg/share/ruby22-redmine/app/config/environment.rb 2017-02-03 18:22:53.000000000 +0900
@@ -12,3 +12,4 @@
# Initialize the Rails application
Rails.application.initialize!
+ActionController::Base.relative_url_root = "/redmine"
/usr/pkg/etc/nginx.nging.conf
は以下のように設定しておく。
http {
(snip)
upstream unicorn_redmine {
server unix:/usr/pkg/share/ruby22-redmine/unicorn.redmine.sock fail_timeout=0;
(snip)
server {
listen 443;
ssl on;
(snip)
location /redmine {
try_files $uri @unicorn_redmine;
}
(snip)
}
(snip)
}
eCos (Embedded Configurable Operating System)に興味があるのだが、 公式にはもうしばらくリリースはされていないし、 CVSリポジトリーへのコミットもされていない。
eCosのbugzillaは、ユーザー登録が必要であるが、それを見ていると 時折バグや機能拡張は報告されている。 bugzillaにあるものは、ある意味bugzillaにまとまっていると言えるので、 それ以外に公開されているeCosに関するソースコードについて、 リンク集的にまとめておく。
この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...