Ubuntu 14.04に仮想マシン管理ソフトをインストールしてPython3でSphinx
インストール(ホストPC)
本当はqemu-system virt-managerだけで良いはずだが、推奨パッケージ(suggests)も一応入れている。
sudo apt-get install qemu-system virt-manager qemu-kvm qemu radvd virt-viewer python-guestfs python-spice-client-gtk
一般ユーザでvirt-managerを立ち上げOSをインストール(ホストPC)
# vim /etc/libvirt/libvirtd.conf unix_sock_group = "libvirtd" unix_sock_rw_perms = "0770" ... auth_unix_ro = "none" auth_unix_rw = "none"
上記ように修正。
sudo service libvirt-bin restart
virt-manager
一般ユーザで起動。インストールするOSはDebian(jessie)に決定。 インストール時に'Web server'の項目をONにした。
※sudo起動してしまった場合
一度sudoで起動したあと、一般ユーザ権限で起動すると'No write access to 〜'という表示が出る。
sudo rm -rf ~/.virt-manager
で設定ファイルを消せばエラーは消えるはず。
そもそもlibvirtdグループに入ってない人は
sudo adduser USER_NAME libvirtd
という感じで。
Debian(jessie)の設定(仮想PC)
sudoを使えるように
sudoグループに一般ユーザを追加する。 ただし、一度ログアウトする必要がある?
su apt-get install sudo adduser USER_NAME sudo logout
Python-3.4.2インストール
本当はapt-get installしたいが、ensurepipがまだ使えないのでソースからビルド。ついでにwgetで短縮URL使う方法も紹介。
sudo apt-get build-dep python3.4 wget --trust-server-names http://goo.gl/fHJ7Bo tar -xvf Python-3.4.2.tar.xz cd Python-3.4.2 ./configure make make test sudo make install python3 -m ensurepip --upgrade
Sphinxのセットアップ
このときソースとビルドを分けるオプションを有効にする。
sudo pip3 install sphinx mkdir ~/Labdoc cd ~/Labdoc sphinx-quickstart
apacheのセットアップ
sudo mv /var/www/html /var/www/html.bak sudo ln -s ~/Labdoc/build/html /var/www/html sudo service apache2 reload
物理ネットワークに接続させる(ホストPC)
仮想マシンの設定画面(iボタンをクリック)からNICを選択。
ソースデバイス: ホストデバイス eth0:macvtap ソースモード: Bridge
※Bridge接続した後にホストマシンのネットワークが繋がらない問題が発生した場合
おそらくカーネルのアップデートで再起動が必要なときなので、素直に再起動してからBridge接続の設定をやり直す。
※それでもうまく行かない場合
Wifiアダプタをぶっさして、代わりにソースデバイスに指定する。
仮想マシンを静的IPに変更(仮想PC)
このとき、192.168..の中身は、物理ネットワークのゾーンを指定する。
sudo cp /etc/network/interfaces /etc/network/interfaces sudo vi /etc/network/interfaces
# vi /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.*.* network 192.168.*.0 netmask 255.255.255.0 broadcast 192.168.*.255 gateway 192.168.*.1
eth0を再起動。
sudo service ifup@eth0 stop sudo service ifup@eth0 start
参考文献
OS X Mavericks (Mac) で Go + Eclipse (GoClpse) な環境を整える。
プログラミング言語Goのインストール
brewを用いてプログラミング言語Goの環境をインストール。
brew update brew install go
次に.zshrcを編集して{$GOROOT, $GOPATH}を設定しパスを通す
※($GOARCHなどをセットすると、go getしてもbinが作成されなくなる。クロスコンパイラ関係の問題?)
vim ~/.zshrc
if [ -x "`which go`" ]; then export GOROOT=`go env GOROOT` export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin fi
GOPATH用のフォルダを作成して、Gocode(自動補完)をインストール
source ~/.zshrc
mkdir ~/go
go get -u github.com/nsf/gocode
Go + Eclipse = GoClipse
- Eclipseのダウンロードページから最新版をダウンロード
- Help->Install New Softwareを選択
- work with:に「http://goclipse.github.io/releases/」を入れてAdd
- Nameに「GoClipse」を入れてOK
- パッケージを選択しNextを押してインストール
- Eclipse->環境設定->Goを選択
- GOROOT : /usr/local/opt/go/libexec
- GOPATH : /Users/YOUR_NAME/go
- Eclipse->環境設定->Go->Gocodeを選択
- Gocode path : /Users/YOUR_NAME/go/bin/gocode
- Applyを押してOKで完了(※Go Toolsに関するパスはGOROOTを設定すれば自動的に設定される)
GoClipseを試す
- Go Projectを新規で作成し、PerspectiveをGoに切り替える
- プロジェクトを右クリックし、New->Go FIle
- Source File : Hello.go
- Command Source FileのリストボックスからEmpty Main Functionを選択してFinish
- 自動補完(Content Assist)の動作確認もかねて下のコードを入力してRun
package main import ( "fmt" ) func main() { fmt.Println("Hello, 世界") }
動作結果
Hello, 世界
参考文献
Jetson TK1のセットアップ&Ubuntu 14.04 (zsh) でのクロスコンパイル環境を整える
Jetson TK1側での設定
とりあえずX Windowを起動できるように。
CUDAの開発環境を整える。
gistf85713ac8d06dd1c3b5f (この手順をとばすと、/usr/lib/arm-linux-gnueabihf/tegraのフォルダが配置されない)
ホストPCの設定
基本的にはNVIDIA Nsight Eclipse Edition for Jetson TK1 | Parallel Forallを参考に。 zshでない人は、各自のターミナル環境に合わせて臨機応変にお願いします。
※かなりバッドノウハウ感があるので、dpkg --add-architecture armhfしたあとにapt-get updateしても404 Not Foundを出さない方法を募集!
boxfilterを動作させてみる
プロジェクト作成
- Nsight起動
- File->New->CUDA C/C++ Projectを押す
- Project Name は「boxfilter-arm」
- Import CUDA Sample を選択
- Toolchainsが“CUDA Toolkit 6.0”になっていることを確認
- Select the CUDA sample で「boxfilter」を選択
- そのままNext
- CPU architecture を「ARM」に変更
- Finishを押す
※Toolchainsが“CUDA Toolkit 6.0”になっていない人は、ls -la /usr/local/などで cuda -> cuda-6.0というシンボリックリンクになっているか確認。cuda-6.5になってる人は削除orリネームして
sudo ln -s /usr/local/cuda-6.0 /usr/local/cuda
でシンボリックリンクを貼り直す。
プロジェクト設定
- (boxfilter-armのプロパティから)Properties->Build->Settings->Tool Settings->NVCC Linker->Librariesを選択
- NVCC Linker->Miscellaneous を選択
- Other roption(-Xlinker[option])に「--unresolved-symbols=ignore-in-shared-libs」を追加(※参考元では−−の2本棒がつながっていたのでコピペに注意)
- Applyを押してOKで完了
ソースコード修正
boxFilter.cppにsetenv ("DISPLAY", ":0", 0);を追加。
int main(int argc, char **argv) { int devID = 0; char *ref_file = NULL; #if defined(__linux__) setenv ("DISPLAY", ":0", 0); #endif pArgc = &argc; pArgv = argv;
時間経過で終了するように変更。
void display() { static int icnt = 120; while(!icnt--) { cudaDeviceReset(); _exit(EXIT_SUCCESS); } sdkStartTimer(&timer);
- Build Projectでエラーが出てないことを確認
- Run As->Remote C/C++ Application
- Jetson TK1へのssh接続と同じ要領で、Remote Connectionにターゲットを指定
- Toolkit pathをDetectで自動指定(通常は/usr/local/cuda-6.0/binになる)
- Finishで実行
デバッグもこんな感じで頑張る。