Unix V6 互換 OS xv6 をMac OS X El Capitan(v10.11)で Homebrew で動かす

El Capitan (v10.11) にて Homebrew パッケージ管理システムを使ったクロスコンパイル環境構築を行いました。

UNIXはもともと DEC社のPDP-11上に実装されて, C も古代の Pre K&R で書かれていて、今の時代適用できないとUNIX V6 は 現代風Xv6 へと、さらに進化します\(^o^)/

xv6 けっこう以前から話題になってた様です。

xv6(x86 version 6)は、MITマサチューセッツ工科大学Operating Systems Engineering (6.828)という講義の教材として使うために、UNIX V6ANSI Cに書換え、x86に移植したOS

でこれを動かす環境を Mac OS X El Capitan (OS X v10.11) の上で動作する環境構築を行いました。

ほぼ http://attonblog.blogspot.jp/2015/04/32bit-xv6-yosemite.html こちらのサイトの通り実行しました。

1. Install Xcode. After installing Xcode install the Command Line Tools from the Downloads section of Xcode's preferences. I've installed Xcode Version 7.3.1(7D1014).
*** 最新の Xcode 7.3.1 がインストールされてます。

2. Install Homebrew
$ brew doctor <- 何かおまじないが必要(^_^;)

$ brew install homebrew/versions/gcc49
まずは GCC を導入

$ brew tap dongz9/devel
標準の homebrew にはXv6 の開発環境が無いので、追加のリポジトリ定義ファイルを利用させてもらう
https://github.com/dongz9/homebrew-devel に定義ファイルが管理されている。 

$ brew install --HEAD i386-elf-qemu
PC エミュレータをインストール

$ brew install i386-elf-binutils i386-elf-gcc i386-elf-gdb
ツールチェーン言われる一連の開発環境を導入

以上で Mac OSX 上に xv6 の開発環境が出来たので、 xv6 のソースコードを入手します。

$ git clone git://github.com/mit-pdos/xv6-public.git

あとは Makefile
35:   TOOLPREFIX = i386-elf-
54:   QEMU = qemu-system-i386
と修正して

$ make qemu-nox 
で  qemu 上でxv6 が動きます。
qumu を終了するには Ctrl-A x

あとは、xv6 のサイト (xv6, a simple Unix-like teaching operating system)や 関連の話題ググると日本語情報を含めて沢山の情報が出てきますので、Unix OS の勉強になります。

* xv6 は ラズパイに移植されたり、仮想記憶を付け加える事もされているそうです。

アマゾンの定額読み放題 開始

アマゾンの定額で電子書籍の読み放題が始まりました。一ヶ月の無償体験が有るのでさっそく申し込みました。

Mac Fan, DOS/V Power Report が有るので、これだけでも月額の費用は元が取れます。

気になっていたコンピュータ関連では以下の本を読んでます。

Windows 上で QEMU って CPU エミュレータ上でウインドウOSを作った、700ページの本です。分かりやすいと評判が良いようです。

簡単な内容かと思いましたが、内容はかなり深く本格的なのはびっくりしました。いきなりパーセプトロンで文字認識から始まります。

まだ読んでませんが、x86 を勉強したかったので、楽しみです。

図書館で一度借りましたが、読み終えず返してしまった本。かなり読みやすい印象です。

一ヶ月で読み終えられるかですが、楽しみです。


ハーバード大、ブラウン大、スタンフォード大の教育用 OS

以前まとめてみましたが

他にハーバード大学ブラウン大学が教科書を出版していることを見つけました。


教科書はこちらです。

MIPS CPU を仮想環境(System/161)下で動かして、その上で OS/161 を動作させる方法を取ってます。

既に日本の早稲田の学生が卒論で ARM 上で OS/161 を動かす事を研究してました。とても貴重な試料です。


こちらの大学で使われている教科書は

でコースで作った教材 OS は Weenixで以下からソースコードをゲット出来ます。




教科書は特に無く、John Ousterhout先生の講義ノートがメイン。参考書として
教材のOSは PintOSソースコード
から手に入れられます。

Deep Learing 深層学習の学習(^O^)

図書館で「人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)」を借りて読んだら久々に感動しました。

イメージ 1

1980年代にアメリカのコンピュータ会社に就職したので第2次人工知能ブームのまっただ中でした。当時の通産省が数百億円を予算化して、かなりばらまいていた記憶があります。今から見ると、CPUの速度と、インターネットが無かったので、上手く行かなかった様です。その後下火になり、人工知能研究は長いトンネルに入ったそうです。

この本によると、2013年に Google の画像認識コンペでカナダ トロント大学ジェフリー・ヒントンの開発したディープラーニングが圧倒的な成績を収め、この辺から第3次人工知能ブームが訪れました。

そこで、ミーハーな自分は、まずは資料と

イメージ 2
こんな本を買っちまいました。ざっくりと見た感じは比較的分かりやすい数学(線形代数)を使って理論を説明してます。基本は脳のニューロンをモデルにしてますので、コンピューターで有りながら、生物を関連が有って、かなり興味が有る分野です。

python の勉強と環境設定

最近 Python がかなり流行している感じです。仕事で利用しようと勉強しました。この連休中に集中的にやりました。

本が大事ですので、良さそうな

イメージ 1


初学者が最初に悩むのが python2 と python3 の利用ですが、この本は python3 を強く進めるのでそちらに決めます。

次に Mac に Python3 をインストールします。

まず、 XCode をインストールしてから、 homebrew(フリーソフト導入パッケージマネージャー)を使って簡単に導入できました。

あとは本を読みながら利用しているモジュールを pip コマンドを使って導入します。

一通り勉強したら、自分が管理している CentOS5 に python3 を導入します。

ただ python2 も必要なので、両方を切り替えて使うようにします。


を参考にさせていただいて構築しました。

久しぶりに新しい言語を勉強しましたが、インデントの位置で意味が変わるのはかなり変わった言語です・・・かっこを間違えて実行が変わらないので良いかと思います。
あと、ものすごく沢山のモジュールやパッケージが有るので、必要な物からぼちぼちと覚えてゆく感じです。

特に画像処理や人工知能機械学習)に利用したいです。





CentOS5などの古い環境でLet’s Encryptを使う

最近話題の Let’s EncryptSSL 証明書を3ヶ月間ですが、無償発行してくれます。

会社のサイトを対応したいと思いましたが、比較的新しい OS には対応出来ますが、古い CentOS5 ではサポートされてないです。

そこで、ネットを調べると、情報を提供してくれてるサイトが有りました。


そのまま実行したら簡単に習得出来ました。ほんと便利な世の中になりました。ありがたや、ありがたや(^O^)

SimpleCV の勉強

最近、プログラミング言語 Python を勉強始めたんで、たんなる言語の勉強ではつまらないので、ついでに画像処理もって 

イメージ 1





を始めました。まずは メインで使っている MacBookPro にインストールしようと、2日間も格闘しましたが、USBカメラからの画像表示が上手く断念。Windows に入れようとしましたが、いまいち利用が不自然なので、結局 ラズパイの上でやることにしました。

まずは最新の RASPBIAN OS March 2016を導入。 

最初から GUI が立ち上がるのでびっくり。ちょっと様子が違うので戸惑いました。
ネットを探すと設定に関してとても親切な解説がありますので、初めての方はそちらを参照すると良いですね。例えば以下など


ssh でログインで嵌ったこと

いつも使っている Putty でログイン出来ず困りました。何故かと言うと暗号化方式が変わった様です。そこで最新の putty を以下からダウンロード

これで無事ログイン出来ました。

あと IP アドレスが変わっても、名前で参照出来る様に
% sudo apt-get install avahi-daemon
この後
/etc/hostname
/etc/hosts
を変更します。


ここまでの準備で、やっと SimpleCV を導入します。

$ sudo apt-get update
$ sudo apt-get install ipython python-opencv python-scipy 
$ sudo apt-get install python-numpy python-setuptools python-pip
$ sudo pip install svgwrite


ラズパイの標準カメラだと上手く動かないので、以下の文書を参考に
ドライバーを導入します。


Add the following line to the file /etc/apt/sources.list :

$ sudo apt-get update
$ sudo apt-get install uv4l uv4l-raspicam
The last two commands will upgrade UV4L to the most recent version, if it's already installed.

If you want the driver to be loaded at boot, also install this optional package:
$ sudo apt-get install uv4l-raspicam-extras
As a convenience, the above package will also provide a service script for starting, stopping or restarting the driver at any time:
$ sudo service uv4l_raspicam restart


まずは simplecv を起動してカメラテストを実施。

SimpleCV:1> c = Camera()
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument

SimpleCV:2> i = c.getImage()
SimpleCV:3> i
SimpleCV:3: <SimpleCV.Image Object size:(640, 480), filename: (None), at memory location: (0x2381af8)>
SimpleCV:4> i.show()



と驚くほど簡単に画像が扱えます。
さらに、SimpleCV の勉強は以下のリンクでやってます。

で本格的に始めようと思ったら・・・

SimpleCV の、公式サイトに行ってみると 2014 年を最後に更新が無さそうで、休眠してる感じですね。これを見て、やっぱり方針を変えます。

標準のPythonOpenCV でやってゆく事にしました(^_^;)