Posts

Showing posts from 2019

2mを越えた長さの細めのHDMIケーブル

3m程度の長さの細めのHDMIケーブルを購入したいと考えていたのだが、なぜか1.8から2m程度のものしかなくて、 きっと信号の減衰の関係で長いものは実現できないか、規格として定められていないのだろうと考えていた。 バッファローBSHD3Sシリーズというのが、 簡単に手に入るものでは細めで3mのものとしては唯一のもののようだ。 リピーターが内蔵されているもので、極性があってつなぐ向きが決まっているようだ。 ケーブル直径が3.7mmというのは、 エレコムDH-HDP14SS10BKのような3.2mmと比べると結構太い気もする。 5mだと直径4.4mmだそうなので、あまり細いという気はしない。

VMware ESXiでのVMXNET 2のサポート

VMware ESXi 6.7では、VMXNET 3を使っているのだが、VMXNET 2は提供されているのか把握していなかった。 ESXi 6.5仮想マシンでは、VMXNET 2 (Enhanced)というのがサポートされているようだ。 ESXi 6.7仮想マシンでは、VMXNET 3はサポートされているが、VMXNET 2はサポートされていないようだ。

CorvusSKK 2.7.6で.gzな辞書ファイルが利用できる

CorvusSKK 2.7.6で.gzな辞書ファイルに対応していた。 SKK辞書のページでは、gzipで圧縮された.gzファイルでダウンロードできる。 圧縮されていないファイルもダウンロードはできるのだが、自分で編集するものではないので、.gzファイルのままで利用できれば便利だと思っていた。 CorvusSKKは奇をてらっていないMicrosoft Windows用のSKKの実装として便利に利用させてもらっている。

LLVM/clangでビルドできるNetBSD-current

http://releng.NetBSD.org/builds/HEAD-llvm/によると、LLVM/clangでビルドを試みることができる NetBSD-currentは、以下のアーキテクチャーのようだ。 evbarm-earmevbppcmacppcsparcx86_64i386sparc64 evbarm-earmが、earmv6やearmv7に最適化したものに対応しているのか、earmだけなのかは確認しておきたい。

notmuch Emacs clientでGnuPS 2でPGP/MIMEな電子署名をする方法

notmuch Emacs clientでは、メッセージを書いているバッファーで、C-c C-m (つまりRET) s pと入力することで、PGP/MIMEな電子署名を付与することができる。

notmuch Emacs clientでPGP暗号化されたメッセージがDecryption Errorになる場合、または、GnuPG 2.2.16であらかじめパスフレーズをキャッシュしておく方法

IMAP4を利用することにして、Mewからnotmuch Emacs clientに乗り換えたのだが、なかなか機能の全容が分からず、電子メールの消化が進まなかった。 PGPで暗号化されたメッセージを受信した場合に、紫色のDecryption Errorが表示されて、復号できずに困っていたので、 どのようにすれば良いか書いておく。 まず前提としてGnuPG 2を使っている。 notmuch Emacs clientはGnuPG 2を使うのが標準のようなので、特に追加の設定はしていない。 Decryption Errorの意味は、GnuPG 2がパスフレーズを知らない状態を示しているようだ。 もしかしたら、~/.gnupg/gpg-agent.confにpinentry-program /usr/pkg/bin/pinentry-ttyではなく、 pinentry-program /usr/pkg/bin/pinentry-emacsを設定しておけば良いのかもしれないが、 今回の話はpinentry-ttyを使っている場合である。 pinentry-ttyは、GnuPG 2から呼ばない場合には、どうやら使えないようである。 また、gpg-agentコマンドも--allow-preset-passphraseコマンドライン引数か、 allow-preset-passphraseを~/.gnupg/gpg-agent.confに設定しておく必要があった。 私はzshをログインシェルにしているので、~/.zloginに、以下のように設定した。 現在はevalはしないで良いような気もするのだが、確認していないので、従前の設定を踏襲してある、 eval `gpg-agent -s --daemon --allow-preset-passphrase` 次に、パスフレーズをキャッシュしておく。 パスフレーズをキャッシュするには、/usr/pkg/libexec/gpg-preset-passphraseを使うのだが、 このコマンドにはkeygripという値を引数で指定する必要があるので、まずkeygripを確認する。 $ gpg2 --with-keygrip -K (snip) sec rsa4096 2004-07-12 [SC] 82A2DC91…

NetBSD上のwpa_supplicantで、WPA-EAPなWi-Fiアクセスポイントに接続する

とある所のWPA-EAPなWi-Fiアクセスポイントに接続する機会があって、NetBSDをインストールしたラップトップを使ってみた。 このラップトップには、NetBSD/amd64 8.99がインストールされていて、iwm(4)なデバイスを使っている。 まず、以下のような内容のテキストファイルを用意する。ここでは、wpa-eap.confと言うファイル名にしておく。 ユーザーIDとパスワードを使って認証するので、そのようにしている。 ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ scan_ssid=1 ssid="WIFIAPNAME" key_mgmt=WPA-EAP eap=PEAP identity="USERNAME@DOMAINNAME" password="PASSWORD" phase1="peaplabel=0" phase2="auth=MSCHAPV2" priority=0 } これを、以下のようにして実行する。 $ sudo wpa_supplicant -d -i iwm0 -c wpa-eap.conf この設定値がどこでも正しい訳ではないはずだが、とある所のものはこれで動く。

PuTTY 0.71とECDSA秘密鍵の組み合わせのバグ

Windowsを使わないとけない状況があって、当然のようにNetBSDな環境にログインできないと面倒で仕方がない事というのはあって、 PuTTYを使ってSSHでログインしている。 しばらく前に、PuTTY 0.71にした時に、ECDSAな鍵をログイン先のNetBSDで追加しようとするとエラーになって足せないと言う問題があった。 PuTTY bug pageant-ecdsa-assert-failに 掲載されているバグのようだった。 PuTTYのSnapshot版では直っているので、pageant.exeのみ入れ替えて使っている。 Windowsには、当然のようにSSHの秘密鍵はNetBSD環境にログインするためだけのものしか置いていないので、 記載されているようにpagenant.exeの起動時に秘密鍵を指定することはできないので、こうするしかないようだ。

PostgreSQLのODBCドライバーをバッチファイルで登録する

PostgreSQLにはOLE DBドライバーのFLOSSな64ビット版がないようなので、ODBCを使わざるを得ないように思う。 そうなると、ODBCデータソースを設定しておかないといけない。 開発しているのは、都合があって64ビット版Microsoft Windows 10上でMicrosoft Excelであり、 利用者は64ビットWindows 10上の32ビット版のExcelを使っている。 利用者はスキル的にODBCドライバーの設定など正しくしてもらえそうではないので、バッチファイルを管理者権限で実行してもらう くらいにおさめたい。 64ビットWindows 10上で、32ビットExcelと64ビットExcelのそれぞれ用にODBCデータソースを作成するバッチファイルは以下のようである。 rem 32-bit OS/32-bit Office C:\Windows\System32\odbcconf.exe /A {CONFIGSYSDSN "PostgreSQL Unicode" "DSN=dsnname|DATABASE=databasename|SERVER=servername|PORT=5432|UID=postgres|PWD=password"} rem 64-bit OS/64-bit Office: C:\Windows\System32\odbcconf.exe /A {CONFIGSYSDSN "PostgreSQL Unicode(x64)" "DSN=dsnname|DATABASE=databasename|SERVER=servername|PORT=5432|UID=postgres|PWD=password"} rem 64-bit OS/32-bit Office: C:\Windows\SysWOW64\odbcconf.exe /A {CONFIGSYSDSN "PostgreSQL Unicode" "DSN=dsnname|DATABASE=databasename|SERVER=servername|PORT=5432|UID=postgres|PWD=password"}

Microsoft ExcelのVisual Basic for Applicationsで、Excelが32ビットか64ビットか判定する

いまだに、Microsoft Office 2010を使わされているのである。 だからと言う訳ではないが、Visual Basic for Applications (VBA)を使うことがある。 その場合には、OLE DBを使ってデータベースにアクセスして取得したレコードセットを操作することが多い。 そこで問題になるのが、データベースサーバーがPostgreSQLの場合である。 公式のOLE DBライブラリーがWin64用には存在しないのである。 となると、ODBCドライバーをインストールし、バッチファイルでシステムデータソースを設定するしかない。 しかも、32ビットと64ビットでODBCドライバーの名前は異なるので、VBA内で切り替えなくてはいけない。 そういう場合に役立つのが、条件付きコンパイルである。 以下のように、定数Win64が真であるかどうかで判別すれば良い。 #If Win64 Then ' 64ビットMS Office用の処理 #else ' 32ビットMS Office用の処理 #end if VBAでは何をするにも面倒なので、JavaScriptでもPythonでも良いので使えるようになって欲しい。

qemuのオーディオ機能をHelenOSで確認する

Image
NetBSD上のqemuでオーディオ機能がちゃんと動くか確認しようと思っていたのだが、なかなかできなかった。 HelenOS 0.9.1 for IA32がSound Blaster 16とIntel HD Audioをサポートしているようで、 これらはqemuがエミュレートしてくれるデバイスでもあるので試してみた。 オーディオ出力は、PulseAudioを使うことにする。 pkgsrc/devel/SDL2をpulseaudioオプションを有効にしてインストールした上で、pkgsrc/emulators/qemuをインストールしてある。 $ cd /usr/pkgsrc/devel/SDL2 $ make PKG_OPTIONS.SDL2=pulseaudio install $ cd /usr/pkgsrc/emulators/qemu $ make install ホストは、NetBSD/amd64 8.99.42である。 SDL2がPulseAudioを使うようにするには、以下のように環境変数を設定しておく。 $ set SDL_AUDIODRIVER=pulseaudio $ export SDL_AUDIODRIVER Sound Blaster 16の場合には、以下のようにする。 qemu-system-i386 -cdrom HelenOS-0.9.1-ia32.iso -audiodev id=sdl,driver=sdl -soundhw sb16 Intel HD AUdioの場合には、以下のようにする。 qemu-system-i386 -cdrom HelenOS-0.9.1-ia32.iso -audiodev id=sdl,driver=sdl -soundhw hda 開いたqemuのウィンドウ内のHelenOSのターミナルで、以下のように実行すればデモ用のwavファイルを再生できた。 あまりデモ向きの音ではないような…。 / # wavplay demo.wav

Git bash for Windowsのフォントサイズを変更する方法

Git for Windowsを使っているのだが、標準ではGit bashのウィンドウのフォントが小さ過ぎるように感じている。 タイトルを右クリックし、Textを選択し、Fontの部分でフォントのサイズや種類を変更できる。

GNU troff (groff)で、UTF-8なファイルを処理する

groff 1.22.4では、UTF-8な入力ファイルを扱えるようになったという噂を聞いていたように思う。 私は、以前からgroffで日本語の含まれたPDFファイルを出力したかったのだが、groffでどこまでできるか試してみた。 だが、結論としては、groff 1.22.4で日本語の文字の含まれたPDFファイルを出力することはできなかった。 PostScriptファイルも同様に駄目である。 テキストファイルを出力する場合には、正しく動く。 HTMLファイルを出力する場合には、日本語の文字は数値実体参照になってしまい、1文字ごとにホワイトスペースも入ってしまい使えない。 でも、UTF-8なテキストファイルを出力できるだけでも、例えば日本語のman pagesを出力するには十分であり、 役に立つように思う。 msマクロの場合では、以下のようにすれば良い。 groff -Kutf8 -Tutf8 -ms test.roff > test.txt man pagesで使われるmdocマクロの場合では、以下のようにすれば良い。 groff -Kutf8 -Tutf8 -mdoc test.1 | less -R ここで、less -Rは、lessコマンドでエスケープシーケンスを反映させて表示すると言うことである。

Google G Suite MailとK-9 Mail for Android、Notmuch Emacs clientでスターを共有する

長年、POP3を常用してきたのでEmacs上のMewを使ってきたのだが、あまりに未読の電子メールを溜めてしまうので、 IMAP4であれば各端末間で未読既読等のステータスを共有し、時間を見付けて未読の電子メールを既読にできるのではないかと考えた。 最初は、muとそのEmacsフロントエンドであるmu4eを使おうとしたのだが、NetBSD上では日本語の電子メールを正しく扱えないようである。 あるいは、私の環境設定が間違っているのかもしれないが…。 いずれにしても、私では日本語の電子メールを扱うことができなかった。 そこで、同じようであると言うNotmuchを試してみた。これは、日本語も正しく扱える。いろいろ設定は必要だったが、 それについては機会を改めて書きたい。 最初の未読の電子メールを既読にする話に戻ると、既読にして行くと、対応が必要なものも既読になってしまう。 そこで、スターを付けておくことを考えた。Notmuchは自由にタグを付けることができるのだが、 G Suite Mailのウェブ画面とK-9 Mailで共有されるのが分かっているスターは、 Notmuchでそれがスター表示になるのまでも分かったのだが、Notmuchでスターを付けたり外したりする方法が 分からなかった。 Notmuch Emacs clientは、?キーを押すことで、その場面に適切なヘルプメッセージが表示されるのだが、 なかなかスターについて分からなかった。 結論としては、flaggedというタグがG Suite MailやK-9 Mailのスターを指しているタグだった。 なので、電子メールの一覧画面や電子メールメッセージの閲覧画面で、+flaggedと入力することでスターを付けることができ、 -flaggedと入力することでスターを外すことができた。 対応しないといけない電子メールで古いものを見付けてしまいがっかりしているが、それは別の話である。

Windowsでメニュー付きのDVDを再生したい場合

Microsoft Windows 10には、DVDを再生するソフトウェアは附属していない。 しかし、自分で作ったメニュー付きのDVD-Rに記録されたDVD-Videoを再生したい場合に、 何を使えば良いのか試してみた。 mpvとsmplayer、VLC3を試して、VLC3だけがメニューから選択して再生できた。

Authoritative name serverをNSDをマスターにしてknot DNSをスレイブで構成する

Authoritative name serverをマスターもスレイブもNSDで構成していたのだが、同じ実装で揃えるのはいけないと思い直して、 スレイブをknot DNSに変更していた。 後ほど参照する必要がありそうなことを書いておく。 NSDとknot DNSのいずれもpkgsrcからインストールしている。 # # nsd.conf -- the NSD(8) configuration file, nsd.conf(5). # # Copyright (c) 2001-2011, NLnet Labs. All rights reserved. # # See LICENSE for the license. # # This is a comment. # Sample configuration file # include: "file" # include that file's text over here. Globbed, "*.conf" # options for the nsd server server: # Number of NSD servers to fork. Put the number of CPUs to use here. server-count: 1 # uncomment to specify specific interfaces to bind (default are the # wildcard interfaces 0.0.0.0 and ::0). # For servers with multiple IP addresses, list them one by one, # or the source address of replies could be wrong. # Use ip-transparent to be able to list addresses that turn on later. # ip-address: 1.2.3.4 # ip-address: 1.2.3.4@5678 # ip-address: 12fe::8ef0 ip-address: xxx.xxx.xxx.xxx ip-…

od(1)の逆をするプログラム

od(1)やhexdump(1)で例えば16進数ダンプできるが、これを戻すコマンドはNetBSDにはないように見える。 Linuxのman pageを見ると、xxdというコマンドが紹介されている。 これは、vimの一部であるようだ。pkgsrcでは、pkgsrc/editors/vim-shareに含まれている。

GlobalSignの個人向けコードサイニング証明書

個人向けのコードサイニング証明書について調べていたのだが、GlobalSignの個人向けコードサイニング証明書は、2018年12月10日をもって販売終了していたようだ。

wpa_supplicantへのパッチの提出方法

wpa_supplicantにpatchを送る際のガイドラインを読まなくてはいけなかったので、試訳を書いておく。 hostap.gitへの貢献 このソフトウエアは、いかなるプロジェクトでもオープンソースかプロプライエタリーかを問わずに 利用できるパーミッシブなオープンソースライセンスの下で配布されています。 プロジェクトへの貢献は歓迎されていますが、貢献が正しくライセンスされていることを明確に記録する ことが重要です。 これを助けるために、次の手順が用います。 全ての貢献は、以下に示す修正BSDライセンスでライセンスされることが求められる。 Signed-off-byタグをコミットログメッセージの最後に含めることで、 これを受け入れたことを示します。 このタグはThe Developer Certificate of Origin version 1.1 (以下を参照; http://developercertificate.org/l でも入手可能) に合意したことを示します。 hostap.gitへの貢献の現在の要求事項 Developer's Certificate Origin 1.1へ合意したことを示すため、 このプロジェクトへのそれぞれの貢献のコミットメッセージの最後に以下の行を含めてください。 Signed-off-by: Your Name &t;your@email.example.org> 正しい名前を使ってください。偽名や匿名による貢献は、残念ながら受け入れられません。 プロジェクトへの望ましい貢献の提出方法は、 以下のhostapメーリングリストへ電子メールを送ることです。 hostap@lists.infradead.org このメーリングリストはモデレーションなしでメッセージを配信するには、 事前に購読しておく必要があります。 以下で購読手続きができます。 http://lists.infradead.org/mailman/listinfo/hostap パッチは全てを1つのパッチにまとめるのではなく、論理的に分割する方が良いです。 言い換えると、コードの整理と新機能、バグ修正は、それぞれのパッチに分けてください。 全てのパッチには変更を修正したコミットログが必要です(変更により何が修正さ…

Microsoft Windowsでのバッチファイルからバッチファイルを呼び出す方法

最近のMicrosoft Windowsであれば何でもPowerShellで良いのかと思うと、 標準入出力を使うと文字コードがおかしかったりして、 追求する時間もないのでMS-DOSの時代からあるバッチファイル(.bat)を使うことになってしまう。 バッチファイルからバッチファイルを呼ぶには、3通りの方法があって挙動が全て違うのだが、 いつも分からなくなってしまうので、まとめておく。 callを使う 以下のように2つのバッチファイルを用意する。 call.batからsubroutine.batを呼び出している。 >type subroutine.bat @echo off echo Subroutine is called. >type call.bat @echo off echo Before call call subroutine.bat echo After call 結果は以下のようである。 >call.bat Before call Subroutine is called. After call つまり、バッチファイルからバッチファイルをサブルーチン的に呼び出す方法は、このcallを使う方法である。 startを使う 以下のように2つのバッチファイルを用意する。 start.batからsubroutine.batを呼び出している。 >type subroutine.bat @echo off echo Subroutine is called. >type start.bat @echo off echo Before start call subroutine.bat echo After start 結果は以下のようである。 まず、start.batを実行したコマンドプロンプトウィンドウでは以下のように表示される。 >start.bat Before start After start 同時に、以下のような内容を表示する新しいコマンドプロンプトウィンドウも新しく開かれる。 Subroutine is called. > バッチファイルをそのまま実行する 以下のように2つのバッチファイルを用意する。 direct.batからsubroutine.batを呼び出している。 …

HP ProBook 450 G3/G5のMicrosoft Windows 10でのscroll lockキー

Microsoft Windows 10で使っているHP ProBook 450 G3とG5があるのだが、このマシンの内蔵キーボードにはscroll lockキーがない。 しかし、何らかのタイミングでscrool lockキーが押されてしまう現象があった。 試してみると、Fn+Cでscroll lockをトグルできるようだ。Ctrl+Cと隣りあってているキーバインドでscroll lockキーを割り当てているのは良くないのではないだろうか?

qemuのuser mode networkingで母艦のNFSサーバーに接続する

qemuuser mode networkingで NetBSDをゲストとして利用し、NetBSDホストがNFSでエクスポートするディレクトリーをmountする場合、以下のように/etc/exportに-noresvport,noresvmntを 設定しておく必要がある。qemuのuser mode networkingでは、ゲストはNATを経由してホストに接続することになるためであろう。 /export -mapall=username -noresvport,noresvmnt -alldirs

Microsoft Windowsのping.exeで、タイムスタンプ付きで結果を出力する

Microsoft Windows 10しか手元のターミナルがない環境でping.exeを長時間に渡って実行しておきたいのだが、 いつ応答がなかったり遅かったりするのか時刻が一緒に表示されていて欲しい。 PowerShellで、以下のように実行すれば良い。以下は8.8.8.8というホストにpingを送る例である。 ping -t 8.8.8.8 | %{(Get-Date).ToString() + " $_"} 最初と最後にごみが入るが、問題ないだろう。

Microsoft WindowsでIPv6が優先されている時に、IPv4なDNSサーバーを優先して使いたい場合

自分で自宅のLANではIPv4なIPアドレスを配布し、配布結果をDNSサーバーに登録するようにdhcpdを運用しているが、 Microsoft Windows 10ではNTTから貸与されるひかり電話対応のルーターをIPv6なIPアドレスを持つDNSサーバーを優先して使用してしまう。 NetBSDとdhcpcdの組み合わせでは、そもそもひかり電話ルーターをDNSアドレスとして認識しないのだが、これはこれでおかしいような気もする。 DHCPv6で配布されている情報を使っていないような気がする。 とりあえずLAM内では自分のDNSサーバーを優先して参照してもらわないと、見えないホストが存在することになっておもしろくない。 IPv6のDNSサーバーとして、IPv4なIPアドレスを指定するには、以下のようにすれば良かった。 ここで、IPv4なIPアドレスは、10.0.0.2であるとする。 ffff::10.0.0.2 自分のDNSサーバーはAAAAレコードも返すようにしているので、これでも問題ないだろう。

Windows 10のプロダクトキーはどこに格納されているのか?

Windows 10がプリインストールされたラップトップを、デバイスマネージャーを見たらWindowsを消してNetBSD/amd64をインストールして使っている訳だが、 ラップトップを修理に出す際には、Windowsに戻すしかない。 その際に、Windows 10をMicrosoftの配布するISOイメージから再インストールしたのだが、プロダクトキーを入力するのを求められなかったし、 Windows 7を10に無料期間中にアップグレードしたマシンのように後でオンラインで認証するような表示もなかった。 どうやら、ACPIのMSDMエントリーにプロダクトキーが書き込まれているらしい。NetBSD/amd64では以下のように確認できた。 HP Spectre x360 13-inch ae019TUでプロダクトキーがXXXXX-XXXXX-XXXXX-XXXXX-XXXXXの場合である。 # acpidump -cdt (snip) /* MSDM: Length=85, Revision=3, Checksum=222, OEMID=HPQOEM, OEM Table ID=SLIC-MPC, OEM Revision=0x1, Creator ID=HP, Creator Revision=0x10013 Data={ MSDMU.....HPQOEM SLIC-MPC....HP ................ ........XXXXX-XX XXX-XXXXX-XXXXX- XXXXX } */ (snip)

OpenBSD Problem Reports

https://www.openbsd.org/report.htmlの OpenBSD Problem Reportsを読んだので、訳を試みておく。 OpenBSDの問題の報告リリース済みのバージョンに関する問題の報告 リリース済みのバージョンについて、バグや問題を報告する前には、以下のチェックリストを確認してください。 まず、このリリースについてのパッチと正誤表を確認してください。次に、より新しいバージョンさリリースされていないか確認してください。最後に、各バージョン間の変更履歴を確認してください。 もしどれにもあなたの問題が含まれていなかった場合には、バグを報告する前にsendbug(1)コマンドについて学んでください。 currentの問題の報告 -releaseでも-stableでもなく、-currentのソースツリーにあなたの問題がある場合には、以下を確認してください。 少なくとも2回、その問題をテストしてください。その時のソースコードは数日離れたものにしてください。ソースツリーがコンパイルできないという問題は、それが長く続くのでなければ報告しないでください。この種の問題はあなたのミスであるか、作業中のソースツリーを利用してしまっていることがほとんどです。プロジェクトで働いている人は、少なくとも1日に1回はmake buildを実行しています。普通は異なるアーキテクチャーで1日に等も実行しています。AnonCVSサーバーは、実際の作業中のソースツリーが反映されるのに数時間かかることを覚えておいてください。各バージョン間の変更履歴に既に掲載されていないか確認してください。スナップショットを作る際には、十分に注意していますが、時にはミスをすることもあります。その場合は謝罪します。バグ報告を送るより、メーリングリストで話をする方が適切です。問題報告 常にできる限り多くの情報を提供するようにしてください。問題をピンポイントに絞り込むようにしてください。問題を再現できる明確な手順を教えてください。なるべく正確で混乱を生まないよ言葉を使うようにしてください。このことは、特に再現の難しい問題の場合には重要です。問題を説明するのに「クラッシュする」や「私の組み立てたマシンで奇妙な割り込みの問題が起きた」といった文は役に立ちません。 (メーリングリストやその他の知…

「リーダブルコード」より、「コードの欠陥にコメントをつける」

リーダブルコードを読んでいて、以下の表は覚えておきたいと思ったので抜粋しておく。 記法典型的な意味TODO:あとで手をつけるFIXME:既知の不具合があるコードHACK:あまりキレイじゃない解決策XXX:危険! 大きな問題がある TODO:は大きな問題に使って、小さな問題にはtodo:やmaybe-later:を使うという場合もあるかもしれない

HelenOSのよくある質問と答え

HelenOSについて興味があるのだが、日本語の情報がない。 FAQを読んでみたので記載しておく。 2019年1月18日時点のhttp://www.helenos.org/wiki/FAQの内容である。 基礎的な概念マイクロカーネルとは何か? マイクロカーネルオペレーティングシステムでは、 デバイスドライバーやファイルシステム、ネットワーキングなどの機能は、 カーネルスペースからユーザースペースへと追い出されている。 カーネルの外のコードは、通常のユーザープロセスとして実行される。 マイクロカーネル自体は、ユーザープロセスが実行と通信できる最低限の機能のみを提供する。 これは、伝統的なモノリシックなオペレーティングシステムが、これらのほとんどを カーネル内部に持っているのと対照的である。 マイクロカーネル設計に従ってオペレーティングシステムを構築する根拠は、 オペレーティングシステムのポリシーのほとんどをユーザースペースへと追い出し、 マイクロカーネル自体を可能な限りポリシーから自由にし、より大きな 拡張性を実現することである。 このことにより、マイクロカーネルは異なるオペレーティングシステムとしての性格を 提供することもできる。 これは同時に複数の性格を1つのマイクロカーネルの上に構築することさえ論理的には可能とする。 これにより、オペレーティングシステムカーネルに機能をハードコードするのではなく、 簡単に機能を変更できるようになる。 マルチサーバーマイクロカーネルにより、限定的なフォールトトレラントな利用も可能となる。 モノリシックなオペレーティングシステムのカーネルドライバーにバグがあった場合、 通常はシステム全体がクラッシュする。 しかし、マイクロカーネルオペレーティングシステムのユーザースペースドライバーにバグがあっても、」 ドライバーを実行するユーザープロセスがシステム全体をクラッシュさせることはない。 マルチサーバーとは何か? マイクロカーネルオペレーティングシステムの視野の範囲内では、 マルチサーバーは、複数のユーザープロセスにまたがってオペレーティングシステムの機能が 広がっていることを指す。 これは、全ての機能が1つのユーザープロセスに集約されているシングルサーバーマイクロカーネル とは異なる。 システムをマルチサーバーにしようという動機は、…

RISC OSがApache License Version 2.0になったので

RISC OSがApache License 2.0で公開される と言うニュースを見ていたのだが、具体的にどういう風に変更されたのか把握していなかった。 RISC OSのソースコードはCVSで管理されているのだが、 castleというディレクトリー がapacheというディレクトリーに改名されて、 LICENSEというファイルでApache License Version 2.0が 置かれるようになった。各ソースファイルにもApache License Version 2.0の 適用される旨のヘッダーが含まれるようになったのだが、 どうやらそれはCVSのリポジトリーを直接編集したように見える。