Raspberry Pi 4上のUbuntu 21.04でFirecrackerを動かしてみた

手順メモ。 公式のInstructionはここ。 firecracker/getting-started.md at main · firecracker-microvm/firecracker KVMは有効済みなのでOK。 拡張ACL設定 /dev/kvmにアクセスするための設定。 sudo apt install acl sudo setfacl -m u:${USER}:rw /dev/kvm Firecrackerバイナリ取得 ダウンロード。 release_url="https://github.com/firecracker-microvm/firecracker/releases" latest=$(basename $(curl -fsSLI -o /dev/null -w %{url_effective} ${release_url}/latest)) arch=`uname -m` curl -L ${release_url}/download/${latest}/firecracker-${latest}-${arch}.tgz \ | tar -xz バイナリを/usr/local/bin/に移動。 cd release-${latest} mv firecracker-${latest}-${arch} firecracker chmod +x firecracker sudo mv firecracker /usr/local/bin/ Firecracker実行 Firecrackerプロセスを起動し、API呼び出しを受け付ける準備をする。 sudo rm -f /tmp/firecracker.socket firecracker --api-sock /tmp/firecracker.socket 以降は別の端末を起動して実行。 MicroVM起動 以下のスクリプトを実行してKernelとRootFSを取得。 arch=`uname -m` dest_kernel="hello-vmlinux.bin" dest_rootfs="hello-rootfs.ext4" image_bucket_url="https://s3.amazonaws.com/spec.ccfc.min/img" if [ ${arch} = "x86_64" ]; then kernel="${image_bucket_url}/quickstart_guide/x86_64/kernels/vmlinux....

2021-05-29 Sat ·     "Masahiro Hiramori"

TVM VTAに関するメモ書き

TVM VTAに関してのメモ書き。2021/4/29現在の情報。 Q. どのボードを選ぶべきか A. PYNQ-Z1がおすすめ 現時点VTAのInstallページには、PYNQ-Z1とDE10-Nanoのセットアップ手順が書かれている。 しかしDE10-Nanoは手元で試した限り、LinuxのCMA(Contiguous Memory Allocation)周りが正しく設定されていないようで動かなかった。 TVM Community Discussionを見ても動かない旨の報告がある。 一方PYNQ-Z1は、セットアップ手順通りに進めれば動いた。 VTAをとりあえず試してみたいという目的であれば、PYNQ-Z1がおすすめ。 mainブランチで動かない可能性がある 最近VTA周りの変更が多く、かつVTAのテストケースが貧弱のため、mainブランチでVTAが動かない事がよくある。 手順通りに進めてもエラーが出るのであれば、古いコミットを試すとよい。

2021-04-29 Thu ·     "Masahiro Hiramori"

DE10-NanoにTVM VTAのRPC Serverを導入する

Terasic DE10-NanoにTVM VTAのRPC Serverを導入したので作業メモ。 DE10-Nanoセットアップに従う 必要なもの DE10-Nano microSDカード 8GB以上推奨、microSDXC非対応な気がするので注意 microUSBケーブル シリアル通信に必要 LANケーブル ネットワークに繋ぐのに必要 DE10-Nanoのセットアップ まずはTerasicのページからAngstrom Linuxイメージをダウンロードする。 de10-nano-image-Angstrom-v2016.12.socfpga-sdimg.2017.03.31.tgz ダウンロードしたファイルをmicroSDに書き込む。Win32DiskImagerを使用。 DE10-Nanoに電源ケーブルを接続、microSDをDE10-Nanoに挿入、microUSBケーブルでDE10-NanoとPCを接続する。 PC上でターミナルエミュレータでDE10-Nanoに接続する。TeraTermを使用。 ユーザ名:root、パスワードなしでログインする。 以降はDE10-Nano上で実行する。 パッケージ導入 システムパッケージをアップデートし、必要なパッケージを導入する。 opkg update opkg upgrade opkg install cmake coreutils Python導入 Angstrom Linuxに入っているPythonは古すぎるので、Pythonソースビルドする。 ソースコードをダウンロードし、ビルド、インストールする。 mkdir ~/workspace cd ~/workspace curl -O https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz tar xvf Python-3.8.8.tgz cd Python-3.8.8 ./configure make make install python、python3コマンドのシンボリックリンクを導入したPythonに置き換える。 rm /usr/bin/python ln -s /usr/local/bin/python3.8 /usr/bin/python rm /usr/bin/python3 ln -s /usr/local/bin/python3.8 /usr/bin/python3 pipを最新バージョンに更新する。 /usr/local/bin/python3 -m pip install --upgrade pip Git導入 Angstrom Linuxから導入できるGitはバージョンが古いので、これもソースビルドする。...

2021-04-12 Mon ·     "Masahiro Hiramori"

Windows/LinuxでプロセスIDをC/Pythonから取得する

Windows/LinuxでプロセスIDをC/Pythonから取得する方法。 Windows/C GetCurrentProcessId()を使う。 #include <stdio.h> #include <windows.h> int main(void) { printf("Process ID = %d\n", GetCurrentProcessId()); return 0; } Linux/C getpid()を使う。 #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { printf("Process ID = %d\n", getpid()); return 0; } Python os.getpid()を使う。 import os print("Process ID = ", os.getpid())

2020-07-08 Wed ·     "Masahiro Hiramori"

TFRT(TensorFlow Runtime)をUbuntu 18.04 on WSLでビルドした

TFRT(TensorFlow Runtime)は、TensorFlowの新しい実行ランタイムでパフォーマンスが良いらしい。 Linux(WSL)上でビルドしたので、メモ。 実施環境 Ryzen 5 1600 32GB RAM Ubuntu 18.04 on WSL1 必要なツール導入 Clang 9以上とlibstdc++ 8以上、Bazel 2.0.0〜3.1.0が必要なので、導入する。 $ sudo apt update $ sudo apt install clang-9 $ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 9 $ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 9 $ sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install -y gcc-8 g++-8 $ wget https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-linux-x86_64 $ mv ./bazel-3.1.0-linux-x86_64 ~/bin/bazel # PATHが通っているディレクトリ ちゃんと導入できたか確認。 $ clang++ -v |& grep "Selected GCC" Selected GCC installation: /usr/bin/....

2020-05-13 Wed ·     "Masahiro Hiramori"

macOSでRISC-V版FedoraをQEMUで起動する

macOS上のQEMUでRISC-V版Fedoraを動かしてみた。ビルド済みバイナリは下記から取得できるものを使用。 https://fedorapeople.org/groups/risc-v/disk-images/ 実施環境 macOS Catalina 10.15.4 brew導入済み 手順 HomebrewでQEMUを導入する。 $ brew install qemu ワークスペースに移動し、Linuxカーネル、ブートローダ、Fedoraディスクイメージをダウンロードする。 $ cd ~/workspace $ mkdir risc-v-fedora $ wget https://fedorapeople.org/groups/risc-v/disk-images/vmlinux $ wget https://fedorapeople.org/groups/risc-v/disk-images/bbl $ wget https://fedorapeople.org/groups/risc-v/disk-images/stage4-disk.img.xz $ xzdec -d stage4-disk.img.xz > stage4-disk.img 以下のコマンドでQEMUを起動する。 $ qemu-system-riscv64 \ -nographic \ -machine virt \ -kernel bbl \ -object rng-random,filename=/dev/urandom,id=rng0 \ -device virtio-rng-device,rng=rng0 \ -append "console=ttyS0 ro root=/dev/vda" \ -device virtio-blk-device,drive=hd0 \ -drive file=./stage4-disk.img,format=raw,id=hd0 \ -device virtio-net-device,netdev=usernet \ -netdev user,id=usernet,hostfwd=tcp::10000-:22 ユーザ名はroot、パスワードはriscvでログインする。...

2020-04-29 Wed ·     "Masahiro Hiramori"

RaspbianにTensorFlow Lite 2.1とOpenCV 4を導入する

前回の記事で導入したRaspbian Busterに、TensorFlow LiteとOpenCVの環境を構築したのでメモ。 Python 3.7.7導入 $ sudo apt-get install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python-openssl $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ sudo vi ~/.bashrc # 以下を追記 # ここから export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" # ここまで $ source ~/....

2020-04-27 Mon ·     "Masahiro Hiramori"

Raspberry Pi 3にRaspbian Busterを導入する

Raspberry Pi 3 Model BにRaspbian Busterを導入したので作業メモ。 実施環境 MacBook Pro 13インチ 2017年モデル macOS Catalina 10.15.4 Raspberry Pi 3 Model B Raspbian Buster with desktop Raspbianイメージを取得 $ cd ~/Downloads $ wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2020-02-14/2020-02-13-raspbian-buster.zip Raspbianイメージを書き込み microSDカードをMacBook Proに接続する。以下のコマンドでイメージを書き込む。 $ diskutil list $ diskutil umountDisk /dev/disk2 $ cd ~/Downlaods $ unzip 2020-02-13-raspbian-buster.zip $ sudo dd bs=1m if=2020-02-13-raspbian-buster.img of=/dev/rdisk2 conv=sync $ sync $ diskutil umountDisk /dev/disk2 Raspberry Piにマウス、キーボード、ディスプレイを接続する。 microSDをRaspberry Piに入れ、microUSBケーブルを接続すると起動。 初期設定 デスクトップが起動すると初期設定画面が表示されるので、ユーザパスワード、無線LAN接続などを設定する。 デスクトップが表示されたら、端末からsudo raspi-configコマンドでコンフィグを起動する。 Interfacing Optionsを選択し、カメラを接続するためP1 Cameraと、開発用PCからリモートで接続できるようにP2 SSHとP3 VNCをそれぞれ有効にする。...

2020-04-25 Sat ·     "Masahiro Hiramori"