ICTについて使える情報を発信していきます. 遠回りしたり, 自分のペースで...

このブログを検索

apt, ファームウェアのアップデートと自動アップデート設定 [RaspberryPi3]

私がしたRaspberryPiの設定は, 「RaspberryPiの設定 まとめリスト」にまとめてあります.

  • 今回の設定のメリット
    • パッケージの最新版を利用できる.
    • セキュリティ的にアップデートは随時しておいたほうが良い.
    • というか必須な感じ.
  • 今回の設定のデメリット
    • 不具合発生しそうとか? でもやったほうが良いよね.

sshしていることを前提にします.

aptのアップデート

aptのアップデートをします. ちまたではapt-getが多いですが, apt-getの上位互換がaptなので, aptを使うほうがよろしいらしい.
ソースはこちら「Is ‘apt-get’ deprecated? [duplicate]

まぁ, aptもapt-getもパッケージツールなので, 必要なものがaptに無ければapt-getを使うというぐらいで良いのかも.

ではssh先でaptのアップデート.

$ sudo apt update 
$ sudo apt upgrade 

aptのみで良いですが, apt-getもやりたい方はこちららしいです.

$ sudo apt-get update 
$ sudo apt-get upgrade 
$ apt-get dist-upgrade 

ファームウェアのアップデート

ssh先で次のコマンドを打ちます.

$ sudo rpi-update

その後, 再起動すれば終わりです.

$ sudo reboot

自動アップデート

いちいち手動でアップデートをするのもめんどくさく, 忘れることも多いと思うので自動アップデートも設定します. 次のコマンドを打ちましょう.

$ # 設定ファイルの作成, aptの自動アップデート設定
$ sudo sh -c 'echo "59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean" > /root/crontab_root_file'

$ # ファームウェアのアップデート自動化
$ sudo sh -c 'echo "59 23 * * * /usr/bin/rpi-update" >> /root/crontab_root_file'

$ # 自動アップデートの登録
$ sudo crontab -u root /root/crontab_root_file

ちょっとややこしいと思いますが, コマンドを追加している部分は

「echo “59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean”」

などです.

数字の部分「59 23 * * *」は順に「分 時 日 月 曜日」となります.
毎日23時59分に

「apt update ; apt -y upgrade ; apt -y autoremove ; apt autoclean"」

というコマンドを実行します. 自動アップデートや, アップデートした後に不要なものの削除などの設定です. ファームウェアのアップデートも同じです.

実際に登録されたかは, 次のコマンドを打てば良いです.

$ # 登録されたリストを表示
$ sudo crontab -u root -l
59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean
59 23 * * * /usr/bin/rpi-update

「/usr/bin/apt update ; /usr/bin/apt -y upgrade ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean」などが登録されているのがわかります.

おまけ

ワンライナーみたいにするなら,

$ (sudo crontab -u root -l ; echo "59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean" | sort | uniq) | sudo crontab -u root -

$ (sudo crontab -u root -l ; echo "59 23 * * * /usr/bin/rpi-update" | sort | uniq) | sudo crontab -u root -

こんな感じ.

自動再起動

こういうアップデートは再起動しないと設定が反映されない場合もあるので, 時々再起動しなければいけない場合があります.
自分はそれがめんどくさいので, 定期的に再起動してくれるようにこれも設定しました.

$ # 設定ファイルに追記
$ sudo sh -c 'echo "0 4 * * 1 /sbin/reboot" >> /root/crontab_root_file'

$ # 自動アップデートの登録
$ sudo crontab -u root /root/crontab_root_file

これは任意でやって下さい.

参考文献

Read More

NVIDIA DLI(DIGITSによる画像分類入門)をやってみた.

NVIDIA DLI(DEEP LEARNING INSTITUTE) の 「DIGITSによる画像分類入門」をやってみました.

NVIDIA DLIとは.

NVIDIA Deep Learning Institute (DLI) では、人工知能 (AI) とアクセラレーテッド コンピューティングに関するハンズオン トレーニングを提供することで、実世界の問題の解決に貢献しています。都合のよい時間に自分のペースで進めることができるオンライン コースを受けたり、インストラクターによるワークショップに参加していただけます 引用元 : NVIDIA DEEP LEARNING INSTITUTE

つまり, オンラインで機械学習やそれに関連したコースをオンラインで受けられるということです. 殆どが有料ですが, 無料なのもいくつかあります. また, GPUなどを使ってやるらしいので, 学習時間も速いです.

実際にDLIをやってみよう

NVIDIAの人が実際にやり方を公開しています.
https://qiita.com/ksasaki/items/65cd2a9e6b5f370bed0e

詳細な説明はそちらに任せて, こちらは大雑把な説明のみを書いていきます.

ハンズオンサイトに登録

実はDLIはQwiklabsという他のサイトを使う必要があります. これはNVIDIAのホームページでは見つかりにくくなっています.
QwiklabsにNVIDIAの提供しているラボ(演習)があります.

Joinが登録となりますので, 登録しましょう.

出典: Qwiklabs Home Page

言語設定

そのままだと英語で勉強します. 英語が読める人は良いですが, 読めない人はこの設定をしましょう.

ログインできたら
「My account」 -> 「Profile info」 -> 「Language」からJapaneseを選択し, 「UPDATE USER」を押しましょう. これで言語設定はできました.

出典: Qwiklabs My Account Page

「DIGITSによる画像分類入門」を試す.

では「DIGITSによる画像分類入門」を試してみましょう.

「Catalog」から「ラボ」を選んで下さい. 結構たくさんあります. この中で無料のものもいくつかありますので, 好きなものを試して下さい. 私は「DIGITSによる画像分類入門」を実際にやってみました.


出典: Qwiklabs Catalog Page

「ラボを開始」を押すと, しばらくセットアップが始まるので待ちましょう. セットアップが終わると「LAUNCH LAB」がでてくるので, それを押します. すると, タブでjupyter notebookが開きます.

出典: Qwiklabs DIGITSによる画像分類入門 Page

あとはjupyter notebookに従って自習しましょう.

まとめ

実際にNVIDIA DLIをやってみました.
NVIDIAのホームページから, 無料のものをたどるのが難しかったため記事にしました.

参考文献

Read More

IPアドレス固定(DHCP固定割当設定) [Oculus Go]

今日はoculus goのIP固定について.

※ 重要 (2018-06-01追記)
Oculus GoのWifi設定から, 自分のWifiネットワークを長押しで, Wifiの詳細設定ができるということが分かりました…こちらが圧倒的に楽ですね.

Wifiルーターには「DHCP固定割当」という機能があります.
これは, 特定のMACアドレスに特定のIPアドレスを割り振るという方式です.

MACアドレスとは, コンピュータ1つ1つで違う値が設定されています(指紋みたいなもの).
これさえわかれば, ルーターからパソコンを簡単に調べることができるので, このパソコンにはこのIPと割り振る設定ができます.

では, 早速固定していきましょう.

環境 & 必要なもの

  • Oculus Go
  • ルーターとその管理者権限
  • Mac(PC)

Oculus Go MACアドレスを調べる

MACアドレスを調べるには3つ方法があります.

  1. adb接続して確認する.

  2. LAN内で使われているIPアドレスを調べる6つの方法(Linux/Windows)」から, arp or arp-scanコマンドを使って, 怪しいものを片っ端から調べる.

  3. 「MAC Address for Oculus Go Wi-fi access?」より, mobile hotspotを使う.

3つ以外もあるかもしれませんが, 私が知っているのはこれで終わりです.

今回は1について解説していきます.
ちなみに, 1番楽にできるのは2の方法だと思います1

Oculus Go 開発者モード設定

このサイトを見るとできます.
UE4 Oculus GoでVRアプリの開発を開始するまでの方法

すみません. 手を抜きましたw

adbインストール

Macなら, ターミナルで次のコマンドを打ちましょう.

$ brew tap homebrew/cask
$ brew cask install android-platform-tools

これでMacではadbのインストールできます.

Windowsの方なら「もっと簡単!adbコマンドを使えるようにする方法-ダウンロードして解凍してパスを通すだけでOK」を見れば設定できると思います.

adbで接続し, MACアドレスを取得する.

まず, MacとOculus GoをUSBで接続します.

そうしてOculus Goを見てみると, 「パソコンを信頼しますか?」みたいなのが出てくるので許可します.

その後, Macのターミナルで次のコマンドを打ちましょう.

$ adb devices
List of devices attached
adb server version (32) doesn't match this client (39); killing...
* daemon started successfully
xxxxxxxxxxxxxx device

「xxxxxxxxxxxxxx device」と出てくるはずです.

もし, 上のコマンドで下のようなエラーになった場合はOculus Goがスリープ状態?なため, コントローラーのホームボタンを長押しして, もう一度上のコマンドを打って下さい.

$ adb devices
List of devices attached
* daemon not running; starting now at tcp:5037
ADB server didn't ACK
Full server startup log: /var/folders/zl/m1myvbps58sby5zzvrbvwrf40000gn/T//adb.501.log
Server had pid: 93474
--- adb starting (pid 93474) ---
adb I 05-30 15:44:40 93474 6217004 main.cpp:57] Android Debug Bridge version 1.0.39

~~ 省略 ~~

* failed to start daemon
error: cannot connect to daemon

$ # Oculus Goのスリープ状態を解除してもう一度
$ adb devices
List of devices attached
adb server version (32) doesn't match this client (39); killing...
* daemon started successfully
xxxxxxxxxxxxxx device

それでも出ない場合はUSBを接続し直したり, もう一度コマンドを打ったりしましょう.

Oculus Goが認識されたら次のコマンドを打ちます.

$ adb shell ip addr show wlan0
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 3000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx brd xxx.xxx.xxx.xxx scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx scope link 
       valid_lft forever preferred_lft forever

この3行目の「link/ether xx:xx:xx:xx:xx:xx」の「xx:xx:xx:xx:xx:xx」の部分がMACアドレスです. こちらを取得すればadbは終わりです. MACアドレスはどこかにメモをしておいて下さい.

ルーターでDHCP固定割当を設定し, IPを固定する.

MACアドレスもわかったので, ルーターでDHCP固定割当を設定します. そうすることで必ずそのIPアドレスが割り振られるので, 固定したことになると思います.

ルーターにログインする.

今回は「Macで自分のゲートウェイを確認する方法」より, 「route -n get 0.0.0.0」コマンドを使います.

$ route -n get 0.0.0.0
   route to: default
destination: default
       mask: default
    gateway: xxx.xxx.xxx.xxx
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

これで, Gatewayが取得できました. 5行目の「gateway: xxx.xxx.xxx.xxx」のxxx:xxx:xxx:xxxの部分をブラウザに入れましょう. 今回は「192.168.11.1」と仮定します.

すると, ポップアップなどでユーザー名とパスワードの入力を促されるので入力しましょう.

「ルーター ログイン」で検索し, 同じメーカーのルーターを見つけると, 初期ユーザー名と初期パスワードぐらいは出てくると思います. 設定した覚えのない方はそちらを見てみるのも良いと思います. もしくは初期化して, 初期ユーザー名と初期パスワードを打つ…という手もあります.

あとは, ルーターによって操作が違います.
私のwifi機器のメーカーはaterm(型番は忘れました)なので, それに沿った解説をします. aterm以外のメーカーの方は「<メーカー名> DHCP固定割当」で検索すると方法が出てくると思います.

atermルーターでのDHCP固定割当

まず, LAN設定を開きます. そして, 割当数を確認します.

Gatewayの4番目をその割当数以下のIPアドレスに設定しないと固定割当してくれないです.
例 Gatewayが「192.168.11.1」で, 割当数が「64」なら, 固定できるIPアドレスは「192.168.11.2 ~ 192.168.11.64」までです.

確認したら, 「DHCP固定割当設定」をクリックして, 追加を押しましょう.

そうすると, MACアドレスとIPアドレスを入力する画面になるので,

  • MACアドレスはメモしていた値をそのまま「xx:xx:xx:xx:xx:xx」
  • IPアドレスは, 上のGatewayの4番目をその割当数以下のIPアドレス「xxx.xxx.xxx.xxx

を設定して保存しましょう.

念の為, もう一度「DHCP固定割当設定」をクリックして, 設定されていることを確認して下さい.

これで固定割当は終わりです.

Oculus Go の再起動

Oculus Goを再起動します. USBをつなげたままなら, 次のコマンドを打てば再起動します.

$ adb reboot

その後, Oculus Goのコントローラーのホームボタンを長押しして, また「adb devices」を打ちましょう.

$ adb devices

最後に, 「adb shell ip addr show wlan0」を打ちましょう.

$ adb shell ip addr show wlan0
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 3000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx brd xxx.xxx.xxx.xxx scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx scope link 
       valid_lft forever preferred_lft forever

7行目の「inet xxx.xxx.xxx.xxx」が自分で設定したIPアドレスと同じになっていれば固定されています. おつかれまでした.

adbを無線で使えるようにする

IPアドレスを固定化した利点として, 簡単にadbを無線で使えるようになります. まず, ポートを開きましょう. 今回は「Oculus Document ADB」のexampleより, 5555を開きます. ほんとは4桁以上なら何でもいいです(多分)

$ adb tcpip 5555

コマンドを打ったあと, USBを抜いて下さい.
そして次のコマンドを打って下さい.

$ adb connect xxx.xxx.xxx.xxx:5555 
connected to xxx.xxx.xxx.xxx:5555

自分はなかなかできなくて, 一旦待ってもう一度やってみるとできました. なので, 少し待ってもう一度コマンド打ったらできるとかあるかも…できた原因が不明です.

まとめ

以上でIPの固定ができました. やってて思ったんですがsleep止めたいのに, sleepを止める手段がセンサーを塞ぐという物理的な手しか無いというのが…これからに期待ですね.

参考文献


  1. 2については「河童星人@kappaseijin」という方が既にツイートしていたので, 1の手順でやってみました. ↩︎

Read More

Popular Posts