ubuntuでgoogle chomeのインストール
google chomeのインストール
コマンド
忘れてしまうので防備録。
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list curl https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo apt update sudo apt install google-chrome-stable
以上。
Nvidia-docker エラーがでた
Nvidia-docker エラーがでた
エラー
apt update
を実行したら以下のエラーが出た。
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://nvidia.github.io/libnvidia-container/ubuntu18.04/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: Failed to fetch https://nvidia.github.io/libnvidia-container/ubuntu18.04/amd64/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: Failed to fetch https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: Failed to fetch https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD W: Some index files failed to download. They have been ignored, or old ones used instead.
対策
gpgkeyの更新で解決できた。
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add -
以上。
ROSのチュートリアルをdockerで実行する
ROSのチュートリアルをdockerで実行する
1. dockerで環境構築
- Docker version 19.03.1
docker pull ros:melodic
docker run -it --rm ros:melodic
2. work spaceの作成
- 参考
ja/catkin/Tutorials/create_a_workspace - ROS Wiki
mkdir -p catkin_ws/src cd catkin_ws/src/ catkin_init_workspace cd .. catkin_make source devel/setup.bash
echo $ROS_PACKAGE_PATH >> /catkin_ws/src:/opt/ros/melodic/share
3. ROS packageの作成
- 参考
ROS/Tutorials/CreatingPackage - ROS Wiki
cd /catkin_ws/src/ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp cd .. catkin_make source devel/setup.bash
roscd beginner_tutorials mkdir scripts cd scripts # install curl apt update apt install curl # download taker.py curl -L -O https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/talker.py chmod +x talker.py # download listener.py curl -L -O https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/listener.py chmod +x listener.py roscd source setup.bash
4. コンテナーをイメージ化
# ctrl+p ctrl+qで抜ける # cotainer IDを確認する docker container ls # 作成したcontainerをcommitする docker commit <ID> ros/tutorial # コミット済みcontainerを停止する docker stop <ID>
5. docker networkの作成
- 参考
docker network create rosnet
6. 実行
各ターミナルごとにコマンド実行する
docker run -it --rm \ --net=rosnet \ --name master \ ros/tutorial \ roscore
docker run -it --rm \ --net=rosnet \ --env ROS_HOSTNAME=talker \ --env ROS_MASTER_URI=http://master:11311 \ --name talker \ ros/tutorial \ /bin/bash -c "source /catkin_ws/devel/setup.bash; rosrun beginner_tutorials talker.py"
docker run -it --rm \ --net=rosnet \ --env ROS_HOSTNAME=listener \ --env ROS_MASTER_URI=http://master:11311 \ --name listener \ ros/tutorial \ /bin/bash -c "source /catkin_ws/devel/setup.bash; rosrun beginner_tutorials listener.py"
7. docker-composeによる一括立ち上げ
- 参考
同一PC内での立ち上げであればdocker-composeが楽。
docker-composeのインストール
- 参考
Docker Compose のインストール — Docker-docs-ja 17.06.Beta ドキュメント
# rootで実行 sudo -i curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose exit # 確認 docker-compose --version > docker-compose version 1.6.2, build 4d72027
docker-compose.ymlの作成
mkdir ros-tutorial cd ros-tutorial sudo gedit docker-compose.yml
- docker-compose.yml
version: '2' services: master: image: ros/tutorial container_name: master command: - roscore talker: image: ros/tutorial container_name: talker environment: - "ROS_HOSTNAME=talker" - "ROS_MASTER_URI=http://master:11311" command: /bin/bash -c "source /catkin_ws/devel/setup.bash; rosrun beginner_tutorials talker.py" listener: image: ros/tutorial container_name: listener environment: - "ROS_HOSTNAME=listener" - "ROS_MASTER_URI=http://master:11311" command: /bin/bash -c "source /catkin_ws/devel/setup.bash; rosrun beginner_tutorials listener.py"
実行
# 実行 docker-compose up -d # 確認 docker-compose logs listener # 停止とコンテナの削除 docker-compose down
以上。
Jetson nanoでNvidia container runtimeを使用する
これが来るのを待っていました。
JetPack 4.2.1にすればdockerコンテナーでGPUを使用できるようだ。
Jetpackのインストール
Nvidia container runtimeがインストールされているかを確認
sudo dpkg --get-selections | grep nvidia-container
libnvidia-container-tools install libnvidia-container0:arm64 install nvidia-container-runtime install nvidia-container-runtime-hook install
dockerのランタイムを確認する
sudo docker info | grep nvidia
Runtimes: nvidia runc
CUDA sampleを試す
# workdirを作成 mkdir -p run-cuda-sample/docker-build cd run-cuda-sample/docker-build cp -r /usr/local/cuda/samples . # Dockerfileを作成 cat << EOF > Dockerfile FROM nvcr.io/nvidia/l4t-base:r32.2 # run a simple N-body simulation using the CUDA nbody sample RUN apt update && apt install -y --no-install-recommends \ make \ g++ \ && rm -rf /var/lib/apt/lists/* COPY ./samples /tmp/samples WORKDIR /tmp/samples/5_Simulations/nbody RUN make clean && make CMD ["./nbody"] EOF # docker build sudo docker build -t cuda/nbody-run . # docker run xhost +si:localuser:root sudo docker run --runtime nvidia \ --network host \ -it --rm \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix/:/tmp/.X11-unix \ cuda/nbody-run
ESCで終了できます。
できました!! これで色々いじれます。
以上。
Jetson nanoでusb boot & swapfile
Jetson nanoを入手してやっとセットアップしました。
2019.08.02 JETPackを更新したので、記事も編集しました。
インストールしたJatPack
L4T 32.2 (JetPack 4.2.1)
microSDにOS書き込み
以下のサイトを参考にしました。
Ubuntuで作成したがEtcherでは
うまくいかなかったのでコマンドラインから作成した。
# SDカードのデバイス名の確認 dmesg | tail | awk '$3 == "sd" {print}' # 以下のように61.9GBのSDカードを発見 デバイス名はsdc #[ 4568.474656] sd 6:0:0:0: [sdc] 120946688 512-byte logical blocks: (61.9 GB/57.7 GiB) # ダウンロードしたOSイメージ(zip)データをSDカードに書き込む unzip -p ~/Downloads/jetson-nano-sd-r32.2-2019-07-16.zip | sudo dd of=/dev/sdc bs=1M status=progress
HDMIやマウスやキーボードをちゃんと接続して起動しないと
あとから接続しても認識しなかったのでちゃんと接続してから起動しよう。
USB(SSD)ドライブからブートする
以下のサイトを参考にしました。
git clone https://github.com/JetsonHacksNano/rootOnUSB cd rootOnUSB/ ./buildKernel.sh # ! EXT4にフォーマットしたSSDを接続する # mount pointを作成 sudo mkdir /mnt/ssd # デバイス名を確認 lsblk #sda 8:0 0 59G 0 disk #└─sda1 8:1 0 59G 0 part # マウントする sudo mount -t ext4 -o defaults /dev/sda1 /mnt/ssd # ラベル名をつける sudo e2label /dev/sda1 NanoSSD64GB # ラベル名を確認 sudo e2label /dev/sda1 ./copyRootToUSB.sh -v NanoSSD64GB # ルートドライブを設定 cd /boot/extlinux/ sudo cp extlinux.conf extlinux.conf.orig sudo gedit extlinux.conf # 編集前 ## LABEL primary ## MENU LABEL primary kernel ## LINUX /boot/Image ## INITRD /boot/initrd ## APPEND ${cbootargs} quiet # 編集後 ## LABEL primary ## MENU LABEL primary kernel ## LINUX /boot/Image ## INITRD /boot/initrd ## APPEND ${cbootargs} rootfstype=ext4 root=/dev/sda1 rw rootwait ## ## LABEL sdcard ## MENU LABEL primary kernel ## LINUX /boot/Image ## INITRD /boot/initrd ## APPEND ${cbootargs} rootfstype=ext4 root=/dev/mmcblk0p1 rw rootwait # 再起動 sudo reboot # ルートドライブを確認 df ## Filesystem 1K-blocks Used Available Use% Mounted on ## /dev/sda1 60630892 16112052 41409260 29% / ## none 1780892 0 1780892 0% /dev ## tmpfs 2025464 4 2025460 1% /dev/shm ## tmpfs 2025464 20120 2005344 1% /run ## tmpfs 5120 4 5116 1% /run/lock ## tmpfs 2025464 0 2025464 0% /sys/fs/cgroup ## tmpfs 405092 12 405080 1% /run/user/120 ## tmpfs 405092 116 404976 1% /run/user/1000 ## /dev/mmcblk0p1 119808192 16101980 98690652 15% /media/kinacon/d0a54240-9799-4f63-a90b-1a3f5ca4eda8
途中でエラー発生
OS書き込み完了したもの(updateしていない状態)を使用しないと
./buildKernel.sh
で躓くっぽい。
解決方法
以下をインストールすることでうまく行きました。
sudo apt install bzip2=1.0.6-8.1 libbz2-1.0=1.0.6-8.1
スワップファイルでメモリ領域不足を解消
SDカードだとスワップファイルで何度も読み書きされると故障しやすい。
でも、SSDならその可能性はぐっと下がる(SSDのほうが耐久性が高い)
消耗品なので気にしないならSDカードでもOKかとおもいます。
以下のサイトを参考にした。
/var
にswapfileを作成して、自動でマウントするようにした。
# swapfileを作成 sudo fallocate -l 6G /var/swapfile sudo chmod 600 /var/swapfile # swapfileをスワップに割り当てる sudo mkswap /var/swapfile sudo swapon /var/swapfile # 起動時にマウントさせる sudo gedit /etc/fstab # 以下を記入 # # /var/swapfile swap swap defaults 0 0 # # 確認 free -m
Swapに6Gがある。
total used free shared buff/cache available Mem: 3964 600 2168 27 1194 3163 Swap: 6143 0 6143
以上。
docker imageの名前を変更(タグ付け)する
docker imageの名前を変更(タグ付け)する
IMAGE IDの確認
docker image ls
イメージを別名でコピー?する
# IMAGE IDは判別できるなら前方3桁でOK # NEWNAME = IMAGE_NAME:TAG docker tag [IMAGE ID] [NEW_NAME]
古いイメージ(rename前)を削除する
docker image rm [OLD_NAME]
以上。
ipynbファイルをpyファイルに変換する
ipynbファイルをpyファイルに変換する。
作業手順
1. jupyterをイントールする
pip3 install jupyter
2. .ipynbを.pyに変換する
jupyter nbconvert --to script filename.ipynb
同じディレクトリにfilename.pyが作成される
以上。
docker.ceのインストール
モチベーション
- DeepLeaningを学習するためにDocker上に環境を構築したい。
- 仮想環境なので試して削除ができる。
- 公開されている構築済みのイメージがあればより簡単に環境整備ができる
実行環境
Ubuntu18.04
dockerのインストール
以下のサイトを参考にインストール。
Get Docker CE for Ubuntu | Docker Documentation
古いバージョンのDockerをアンインストールする。
sudo apt remove docker docker-engine docker.io
リポジトリを設定する
sudo apt update sudo apt install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
Docker(docker-ce)の最新バージョンをインストール
sudo apt update sudo apt install docker-ce
sudoなしで動作するようにする
#グループ一覧を確認してdockerがあるか調べる cat /etc/group #なければdockerグループを追加 sudo groupadd docker #dockerグループにuserを追加 sudo gpasswd -a $USER docker #dockerデーモンを再起動 sudo systemctl restart docker.service #再起動 reboot
動作確認
docker run --rm hello-world
以上。