ロボットシステム学2016第2回
Tue Sep 6 11:00:07 JST 2016 (modified: Fri Nov 29 17:28:47 JST 2019)
views: 861, keywords:
ロボットシステム学
第2回
上田 隆一
2016年9月?日@千葉工業大学
今日の内容
- ノートPCとラズパイを接続
やること
- 下の写真のようにノートPCとラズパイを有線LANで直接接続
- 次のような接続を構成
- ラズパイ -> 有線LAN -> ノートPC -> ノートPCのWiFi -> インターネット
- つまりノートPCをルータにする
ノートPCのOS別設定方法
- Windows: https://blog.ueda.asia/?p=8694
- 拙ブログですみません
- Mac: https://blog.ueda.asia/?p=8717
- こちらも拙ブログですみません
- ラズパイのIPの調べ方
-
$ nmap -sP <有線側のセグメント>
-
- Linux: DHCPを立てるのが面倒なので割愛
Linuxの世界
- ほぼ全てテキストファイルでできている
- 設定ファイル等
- /etc下のファイルを見てみましょう
$ cat /etc/passwd
- 設定ファイル等
- どうやって見る?編集する?
- エディタ
- コマンド
- 使えないとかなりストレス
- 自転車と一緒で使えると自然に使えるようになるので 我慢して慣れられるかどうかで今後が変わる
エディタ
- (CLI, command line interface)でテキストファイルを読み書きするもの
- EmacsとVimがメジャー
- 特にここでは説明しません
- 練習コマンドがあるのでそれで練習を
- Vimにはvimtutorというコマンドがあり、 最初はこれをやるのが一番良い
コマンド
- CUIからプログラムを起動する場合は字をシェルに打ち込むが、
その字のこと
- プログラム自身のことも指し、このスライドではプログラム自身のこと
- だいたいこの二種類
- システム操作のためのコマンド
- サービスを立ち上げたり止めたり
- これはマニュアルを見たら覚えられる
- フィルタコマンド
- 標準入力から文字を受けて標準出力に加工した字を出すもの
- 組み合わせて使う(マニュアルがあまりない)
- システム操作のためのコマンド
フィルタコマンド
- 多数: grep, find, wc, ...
- /bin/下に存在
- とりあえず最初に覚えるもの
- cat: 表示
- sudo: root権限でコマンドを実行
- $ sudo cat /etc/shadow
- grep: 検索
- $ grep ueda /etc/passwd
- ueda:x:1000:1000:Ryuichi UEDA,,,:/home/ueda:/bin/bash
- find: ファイルの列挙
- 使い方の例
- $ find /
- 出力がザーッと出て使いにくくないか?
- 使い方の例
コマンドの組み合わせ
- 特定のファイルを探すには?
- 例: passwdファイルってどこにあったけ?
- grepと組み合わせる
- sudo find / | grep passwd
- [sudo] password for ueda:
- ./var/lib/dpkg/info/passwd.postinst
- ./var/lib/dpkg/info/base-passwd.postinst
- ./var/lib/dpkg/info/passwd.preinst
- さらに絞り込む(grepで正規表現を使う)
- $ sudo find / | grep '/passwd$'
- /var/tmp/etc/init.d/passwd
- /var/tmp/etc/cron.daily/passwd
- ...
- lessで見る
- sudo find / | less
正規表現の例
- 正規表現の例
- /etc/servicesの調査
- $ cat /etc/services | grep 80 #80を検索
- $ cat /etc/services | grep '[^0-9]80/' #80番ポートのレコードだけ検索
- $ cat /etc/services | grep ftp #ftpという語句を検索
- $ cat /etc/services | grep ^ftp #最初がftpで始まる行を検索
- /etc/servicesの調査
- 上級者向け
- AWKとgrepで10000番ポート以上のレコードを抽出のこと
ファイルの操作
- ls, mv, rm, cp, mkdir, rmdir
- 口頭で説明します
man
- マニュアルコマンド
- $ man grep
- 章がある
- $ man 1 printf #1章(コマンド)のprintf
- $ man 3 printf #3章(C言語の関数)のprintf
- 詳しくは $ man man で。
apt, apt-get
- ソフトウェアのインストール
- API (Advanced Packaging Tool): Debian系Linuxの パッケージシステム
- 使用例
- $ sudo apt-get install nmap #旧
- $ sudo apt install nmap #新
ping
- 通信先にパケットが届くか確認する時によく使う
- $ ping 8.8.8.8
- GoogleのDNSにパケットが届くか確認
- インターネットに出られるか確認する時によく使用
- $ ping www.yahoo.co.jp
- ドメイン名をIPに変換できるか(名前解決)を確認する時に使用
- $ ping 192.168.1.254
- 192.168.1.254に届くか確認
- (192.168.1.254はルーターっぽいIPアドレス)
- 192.168.1.254に届くか確認
- たまにセキュリティーのために先方がふさがっていることがある
- $ ping 8.8.8.8
ip, ifconfig
- ネットワークの設定の確認
- ifconfig: 古い確認方法
- $ ifconfig
- ip: 新しい方法
- $ ip addr show #IPアドレス等の確認
- ifconfig: 古い確認方法
その他通信関係のコマンド
- nmap: ネットワークのスキャン
- インターネットに向けてやると最悪裁判になるので注意
- 使用例
- $ nmap -sP 192.168.3.0/24 #自分のネットワークのマシンのIPアドレスを調査
- $ nmap 192.168.3.2 #開いているポートの調査
- traceroute
- パケットの運ばれる経路を調査
- $ traceroute 8.8.8.8
- パケットの運ばれる経路を調査
scp, rsync
- マシン間でファイルをコピー
- $ scp hoge 192.168.3.1~/ #hogeファイルを192..1のホームへ
- $ scp 192.168.3.1:~/hoge2 ./ #逆向き
- $ rsync -av hoge/ 192.168.3.1:~/hoge/ #hogeディレクトリを192..1のホームへ
- $ rsync -av192.168.3.1:~/hoge/ hoge/ #逆向き
- TeraTermにもscp機能がある
停止・再起動
- 停止
- 次の2通り
- $ sudo shutdown -h now
- $ sudo poweroff
- Linuxはデータをストレージに後から書き込むので 、ラズパイの場合は緑のランプが点滅しなくなるまでよく待つ
- ストレージ: HDD, SSD, microSD, ...
- 一方、ラズパイはプログラムやデータ等を別のマシンで管理する 場合が多いのでブチ切りする人が多く、特に問題にならない
- 次の2通り
- 再起動
- $ sudo reboot
プログラムのコンパイル
- 次のようなC言語のファイルhoge.cを作ってみましょう
- 端末のエディタがまだ使えない人はこの資料のコピペやscp等を駆使のこと
#include <stdio.h> int main(int argc, char const* argv[]){ puts("あばばばば"); return 0; }
- gccを使ってコンパイルし、a.outを実行
- $ gcc hoge.c
- $ ./a.out
- もしa.outが実行できなかったら $ chmod +x a.out
スクリプトの実行
- 次のようなPyhonのファイルhoge.pyを作ってみましょう
#!/usr/bin/python print "Java"
- 以下を実行
-
$ chmod +x hoge.py
-
$ ./hoge.py
-
- #!: シバン(shebang)
- どのプログラムでこのスクリプトを実行するか指定
Raspbianのメンテナンス
- rpi-update: カーネル等のアップデート
- pi\@raspberrypi:~ $ sudo rpi-update
- apt update: パッケージリストの更新
- pi\@raspberrypi:~ $ sudo apt update
- apt upgrade: パッケージのアップグレード
- pi\@raspberrypi:~ $ sudo apt upgrade
- raspi-config: Raspberry Piの機能設定
- pi\@raspberrypi:~ $ sudo raspi-config
- ロケールの設定
- 言語環境の設定
- 起動時にGUIの抑制
- SPI等の機能をON/OFF
次回までの宿題
- エディタが苦手な人はvimtutorをやっておく
- $ vimtutor
- 得意な人はVimやEmacsにプラグインを仕込む
- Vimの場合はdein等
補足
- SSH接続でこういうのが出た時
\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@ \@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! \@ \@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@\@
- ~/.ssh/known_hosts から接続先のIPアドレスを見つけてレコードを削除