URL 入力欄に、
about:config
と入力する。
開いた画面の検索欄に、
app.update.auto
と入力する。
開いた項目はデフォルトで真偽値の true の値を持っているはずなので、項目をダブルクリックし false に変更する。
この記事のリンク元 | 1 |
URL 入力欄に、
about:config
と入力する。
開いた画面の検索欄に、
app.update.auto
と入力する。
開いた項目はデフォルトで真偽値の true の値を持っているはずなので、項目をダブルクリックし false に変更する。
まず、Build Environment の `ReactOS Build Environment for Unix-compatible Operating Systems Version 2.1.2' から RosBE をダウンロードし中身を展開する。
RosBE-Unix-2.1.2/sources/make.tar.bz2 アーカイブの中にある configure を編集し、
# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
を、
# if _GNU_GLOB_INTERFACE_VERSION >= GLOB_INTERFACE_VERSION
と変更し、アーカイブの中身を更新してから、
$ cd RosBE-Unix-2.1.2
$ ./RosBE-Builder.sh
として、表示に従い RosBE のインストール先を指定し RosBE をインストールする( configure の編集をしないまま RosBE-Builder.sh を実行すると alloca の未定義参照のエラーで RosBE のソースのコンパイルに失敗する。(※1))。デフォルトでは /usr/local/RosBE にインストールされるので、その場合は前もって su で root 権限をもたせておく。
次に、
git clone https://github.com/reactos/reactos.git
を実行し、reactos のソース環境をクローンする。
それから、
$ cd RosBE
$ ./RosBE.sh
のようにして RosBE のシェルに入り、
$ cd reactos
$ ./configure.sh
とすることで reactos/output-MinGW-i386/ 以下が作成される。
この後、
$ cd output-MinGW-i386
で reactos/output-MinGW-i386 の中に移動するが、そのまま ninja bootcd を実行したのでは、 gcc がコンパイル中にプリコンパイルヘッダのエラーが起きビルドが通らない(※2, ※3)ので、 reactos/output-MinGW-i386/CMakeCache.txt を編集し、
PCH:BOOL=1
を、
PCH:BOOL=0
のように変更してから、
$ ninja bootcd
とすることで ReactOS のブートCDが作成される。
VMware Player をインストールして使用する場合に、 `Create a New Virtual Machine' から guest OS の iso イメージを読み込み起動しようとしたとき、 modconfig がモジュールを更新しようとするときがある。その際に vmmon のコンパイルのところで止まってしまい実行出来なかった。
止まってしまう原因はいくつかあって、まず、 vmmon, vmnet のソースコードの一部が最近のカーネルと不整合を起こしているためコンパイル時にエラーとなることと、 script の実行時にもエラーが出ること、そして、コンパイルして作成されるカーネルモジュール vmmon.ko, vmnet.ko に署名がされていないため起動に失敗することだ。
まず、カーネルコードとの不整合については、 Michal Kubeček 氏の GitHub に修正版のソース一式を挙げてくださっているので、そちらを使用させていただく。
sudo /etc/init.d/vmware stop
としてサービスを停止しておいてから、氏の GitHub の INSTALL に記述されている通り、
wget https://github.com/mkubecek/vmware-host-modules/archive/player-14.1.1.tar.gz
tar -xzf player-14.1.1.tar.gz
cd vmware-host-modules-player-14.1.1
make
make install
としてやれば vmmon.ko, vmnet.ko の修正版がインストールされる。( 14.1.1 のところは使用する VMwarePlayer のバージョンに置き換える。ただし、氏の GitHub に修正版が上がっていることが前提。)
これで vmmon, vmnet のコンパイル時のエラーは解消される。
このとき、 make したとき、
./scripts/***: *** 行: printf: 0x十六進数ダンプ:: 無効な十六進数です
といったエラーも出るが、これは LANG=C make とすることで解消できる。
この後、 make install した後そのまま、
sudo /etc/init.d/vmware start
とした場合、
Starting VMware services:
Virtual machine monitor failed
Virtual machine communication interface done
VM communication interface socket family done
Blocking file system done
Virtual ethernet failed
VMware Authentication Daemon done
のように2つのモジュールの起動に失敗するが、これは UEFI の validation 機能が有効になっている場合に更新したカーネルモジュールに署名がされていないためなので、
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /*/*.ko
のようにして vmmon.ko, vmnet.ko に署名してやると起動できるようになる。 MOK.priv, MOK.der は事前に作成しキーを登録しておかなければいけない。
VMware が自動的にモジュールを更新しようとしたとき、この署名の操作をしないため、 UEFI の validation が有効になっていると更新に失敗するはずだ。( VMware はなぜこの問題に対応しないのだろう? )
キーワード: VMware Player modconfig
以前から、KiB, MiB などの表記を見かけることはあったが、特に気にせずスルーしていた。
なんとなく気になり検索してみたところが、
kB = 10^3B = 1000B, KiB = 2^10B = 1024B
MB = 10^3kB = 1000kB, MiB = 2^10kB = 1024kB
なんだそうな。サイトによっては、頭ごなしにこれだけ書いてあったり、サイトによっては、もう少し説明しようとして、人間にとっての「キロ」は10の3乗だから1000倍するので、 kB は 1000B なんだと書いてあった。
あのさあ・・・。「バイト」が出てくる時点で、これってコンピュータの世界の単位だって分かるよね?だったら kB = 1000B だなんて思わないと思うんだがなあ。コンピュータの世界で kB つったら、 1024B に決まってると思うし、コンピュータ以外の領域で「バイト」の単位を使う数値を使うことて、まあ、無いよね。
ちなみに、 kiB は、「キビバイト」と読むのだそうな。・・・キビ?きびだんご?
一体どうしてこんな情けない発音の単位が出てきたのか?
Wikipedia を開いてみたら、2006年に「SI単位系」で、「キロやその他のSI接頭語は、決して2のべき乗を表すために用いてはならない」とかお定めになったからのようだ。「キビバイト」の他にも「メビバイト」「ギビバイト」「テビバイト」「ベビバイト」「エクスビバイト」とか定義なさったらしい。
キロバイト、メガバイト、ギガバイト、テラバイト・・・で慣れ育った身としては、まるでエビか団子みたいな読み方の単位は使いたくないなあ。厳密に正確に・・・というのも必要な場面もあると思うが、それぞれの世界で醸成された文化っていうものも大切にしていただきたいものだ。
こちらのサイト を参考にした。
切替可能な gcc を一覧に登録するには、
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
とする。ここで、 70 は優先順位を表し、大きい数値ほど優先順位が高くなる。
このとき、同時に、
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70
とすると、 gcc と g++ の2つのリストをそれぞれ別々に管理して別々に切り替えできそうに思うが、これだと g++ の方を設定しようとしたとき、 g++ は gcc のスレーブなのでだめ、と怒られエラーになる。
gcc, g++, gcov のバージョンを連動させて切り替える場合、 g++, gcov は gcc のスレーブなので、
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 48 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5 --slave /usr/bin/gcov gcov /usr/bin/gcov-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 --slave /usr/bin/gcov gcov /usr/bin/gcov-6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
として、連動して切り替わるように設定する。
この状態で、
sudo update-alternatives --config gcc
とすると、切り替え可能な gcc の一覧が表示され、 gcc のバージョンを選択することで、使用する gcc, g++, gcov のバージョンを連動させて選択することができる。