Ubutntu 18.04にSW4STM32を入れる

サポートがUbuntu 14.04って放棄されてませんか、stさん。。。

ということで、試してみたかったのでインストールしていきます。

1.
まず
www.openstm32.org
にアクセスしてregisterします。
(httpアクセスでセキュアじゃないってエラーがブラウザから死ぬほど来ますが)
ログインできたら、ホームに戻って

Step 1: Explore

    Search for Content
    Visit Wiki Pages
        You can start from Wiki Home 
    Read Blogs and Forums
    Look at the FAQs
    Install System Workbench for STM32 - Bare Metal Edition
        Instructions are provided here
        You can download the System Workbench for STM32 installer from the download area. 

となっている部分のケツのdownload areaにアクセスします。
アクセスしたら
install_sw4stm32_linux_64bits-v2.6.run
をダウンロードします。

2.
cd コマンドを使ってダウンロード先まで移動した上で、

chmod +x  install_sw4stm32_linux_64bits-v2.6.run
sudo ./install_sw4stm32_linux_64bits-v2.6.run -f

を実行します。
chmodは実行権を得るため、./ -fは強制的にインストールするためです。
ここからコンソール画面でインストールするけどええか?みたいな画面がでてくるのでひたすら O(オー) or 1 or y
を押していきます。

3.
インストール完了するとデスクトップにショートカットを作ってくれますが、ubuntu 18.04さんは全く信用してくれないので実行できません。
そこで、端末から実行します。

cd /
sudo su
cd root/Ac6/SystemWorkbench
./eclipse

と実行すればSW4STM32の実行完了です。

4.
つづいて、CubeMXを入れるためにEclipseプラグインをインストールします。
下記のstサイトにサクセスして、ダウンロードを完了させます(要my st アカウント)
www.st.com
インストールを終えたら解凍して、SW4STM32(eclipse)の
Help->Install New Software
から上記の解凍ディレクトリをしていしてやると自動で入れてくれます。
あとは
Window->Show view->Other->Other
からeclipse内でCubeMXを開いて終わりです。
参照:
ropot.hatenablog.com

5.
CubeMXからGenerate Codeでプロジェクトを作成します。
Toolchain/IDEはIARの場合だとEWARMですが、今回はSW4STM32を選択します。
これを選択してプロジェクトを作成すると、SW4STM32で開くかどうかを確認されるので、YesをクリックするとSuccessfuly importedと表示されてeclipse側でコードを表示できます。

SW4STM32入れてる時点でST Linkも入れてくれてるのでこれで書き込みできます(Lチカ実証済)

windowsのCubeMXでプロジェクト作るとBlue PushButtonとかLD2とかデフォルトで設定されてるのにこの環境だと設定されない?
とりあえずwindowsiocファイル作ってそれをSW4STM32で開けるようにしてみようかなとか思います。

Kitematicをubuntuにインストール

まずは
github.com
からzipファイルを保存。
(現段階で最新のヴァージョンが0.17.3)

そこから解凍すると、
Kitematic-0.17.3-Ubuntu > dist > Kitematic_0.17.3_amd64.deb
とファイル構造がなっているので、distまでディレクトリを移動して、

sudo gdebi Kitematic_0.17.3_amd64.deb

とするとインストール完了。

そこから、端末で

sudo kitematic

とするとkitematicの起動完了。
sudoなしで起動するとDockerログインもできなければDockerの環境も認識してくれないエラーに陥るので注意。
(これを書いている中の人は陥りました。
github.com
このissueの最後にSuper Userでやれ!
って書いてあったのを見て救われました。

WSL(Ubuntu 18.04)でdocker 入れて大変な目にあった

紆余曲折を時系列順に書いていきます。

1.
qiita.com
このサイトを参考にしてubuntuで入れるが如くGPG鍵を使うことに。
しかし、うまくいかず。
どうやらWSLから使うためにはDocker for Windowsが必要だとかいう記事を見つけてこの段階でインストール。

2.
qiita.com
の記事を参照して1の代わりにdocker.ioをインストールすることに。

3.
daemonが動かないっぽい。
qiita.com
どうやらDocker for Windowsでネットワーク設定を行った後にWSL上のDockerの設定ファイルもいじらないといけないんだとか。

4.
デーモンが動いてようやく遊べると思いきや、ネットワークエラーでdocker pullができない。
maku77.github.io
を参照。
WSL上のDockerをCUIでいじる。
色々再起動してから、

sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

でようやく起動完了。

5.
ネットワークもつながりようやくおれの時代きた!!と思いきや
"docker : failed to register lyaer"なるエラーが。
ぐぐってみると、
qiita.com
こんな記事が。
せっかくdocker.ioでがんばったのに結局無意味かよ。。。
というところで、apt rm docker.ioをしてから上記記事の通り、docker ce 17.09.0を入れることに。

6.
これでようやくdocker pullもできて一安心

といったところです。疲れた。

その他、dockerインストール直後とかそもそもDocker is not runningとか言って、service docker startしても動き出さないことがしばしばあったので、Windows自身を再起動させたり、Docker for Windowsをrestartさせてみたり、なんだり。。。。

Ubuntuコマンド自分用(随時更新)

<ディレクトリのコピー>

cp -r コピー元ディレクトリ コピー先ディレクトリ


<ディレクトリの削除>

rm -r 削除対象ディレクトリ


<root権限>

sudo su

権限取得

exit

権限解除


ディレクトリのファイル確認>

ls -l

<使用メモリ確認>

free


<サービス開始/状態確認/再開>

service "アプリ名" start/status/restart

<インストールされているソフトウェアの確認>

dpkg -l

一覧表示

dpkg -l | grep "condition"

絞り込み検索

<ファイル書き込み権限変更>

chmod 777 "ファイル名"

4 読み込み 2 書き込み変更 1 実行
で、左から所有者、グループ、その他
なので、777は所有者、グループ、その他(要は全員に)ファイルアクセスの全権付与を行う という意味。

Docker for windows とかKitematic(on Windows)のプロキシ

結論から言うと、自分で察していた通りプロキシが原因でした。(WSLの時もプロキシ設定がされていなくてapt updateできなかったり、やっぱりプロキシが悪さを)

Docker for Windowsでプロキシを設定するためには、
f:id:tyryuy:20181012130510p:plain

タスクトレイ(っていう名前初めて知りました)にひっそりたたずむクジラさんマークを右クリックして、settingsに入ると設定できます。

で、Proxiesのところに

http://~~~:port number

みたいな感じで打ち込むと設定完了です。
晴れてrun hello-worldもできました。

あと、Kitematicもプロキシのせいで動きませんでした。
以下のサイト様の方法でどうにかなりました。
www.cresco.co.jp
まさか、Kitematicのセッティングからいじるかと思いきや、コマンドプロンプトからの起動でねじふせなきゃいけないとは。。。

Docker 自分用メモ

docker run "イメージ名"

イメージからコンテナを作成
--name オプションでコンテナ名前付
--privileged でusb等のアクセス権付与
例えば、

sudo docker run -i -t --net host -e DISPLAY=$DISPLAY \
    --privileged --name test1\
    -v $HOME/.Xauthority:/root/.Xauthority:rw \
    ubuntu /bin/bash

とすれば、ubunbtu起動時に
全権付与
名付け
ホストのネットワーク利用
ホストディスプレイ出力(xauthおよびDISPLAY値)
を指定してコンテナ作成。
この場合、
ホスト側の端末で

xhost local:

と打ってやればコンテナのアプリをディスプレイに出力可能。
コンテナ稼働が終わったら、

xhost -local: or xhost -

でディスプレイ出力を閉じる


docker stop/kill

コンテナ停止
イメージはあくまでコンテナを作るためのもとになるデータだからstart/stopには関係なし


docker start
docker attach "コンテナID"

stop/killしたコンテナを再起動(killはコンテナを削除するわけではない)
attachすると起動したコンテナでbashできる。
attachの他、exec ~~~~ /bin/bash
も同様の働き(?)
attach状態を解除するためにはexitを入力してあげる。
exitした段階でコンテナは停止するので注意。


1 docker ps -a
2 docker container list
3 docker image list

1 停止しているコンテナからなにまで全てを表示
2 稼働中のコンテナリスト
3 イメージリスト


docker rm "container name"

コンテナのID番号を指定してコンテナを削除。


docker rmi "image name"

イメージの削除
タグ名を指定するとタグを削除してくれる。(タグが一つだけだと単なるイメージ削除になる(?)複数だとタグ削除。)


docker commit "コンテナ名" "イメージ名"

コンテナのイメージ化。
下のtagおよびpushとまとめて覚えておきたい。


dokcer tag "イメージ名" username/repository name:tag name
docker push username/repository name:tagname

ローカルに保存しているイメージ名をdokcerルールに従って変更し、Docker Hubに送り出す。


docker cp "移送対象" "移送先"

ホスト<->コンテナ間のファイルコピーを行える優れコマンド。




<Dockerでanaconda環境を実行>
qiita.com

sudo docker run \
    -d -i -t \
    -p 8888:8888 \
    --name jupyter-notebook \
    -v $HOME/jupyter-notebook/notebooks:/opt/notebooks \
    continuumio/anaconda3 \
    /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --no-browser --allow-root"

上記だと--nameでコンテナに名前をつけている。
イメージをrunした後に

docker logs jupyter-notebook

とするとtoken付きURLが発行されている。(詳しくは上記Qiita記事参照)

Ubuntu 18.04でdockerをインストールした時のエラー

"このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています"

 

なんてエラーが出てsudo apt-get updateができない他、dockerインストールができない等の問題を引き起こしていました。

原因はつい先日入れたonedrive free clientの際にD-aptも入れてたらしく、それが更新を妨げていました。(全くdocker関係なし)

 

ということで、解決策は以下のサイト様を参考にしました。

hombre-nuevo.com/etc/apt/sources.list

をいじってあげると。

これで晴れてdockerインストールできます。

めでたしめでたし。