Quantcast
Channel: Linux Tips –ともの技術メモ
Viewing all 42 articles
Browse latest View live

Pine A64+ 2GBにarmbianをインストール

$
0
0

Pine A64+ であるが公式サイトのUbuntu Mateはアップデートを行っていくと /boot パーティションの容量不足でアップデートができなくなってしまいました。これを機会に、armbianを試してみました。(ちなみに、以前の記事では1GB版でしたが、その後、秋月で2GB版が出ていたので買ってしまいました・・・)

1.イメージを書き込み

Ubuntu Desktopをこちらから bit torrent 経由でダウンロードして、ファイル展開、Linux Mint のUSBイメージライタで16GBのMicroSDカードに書き込みます。

2.起動

HDMIで液晶モニタに接続、USBでキーボードとマウスを接続してMicroUSB経由で電源供給してしばらくすると、CLIのログイン画面が表示されます。ここで、ユーザー名:root、パスワード:1234でログインすると、rootのパスワード変更が求められますので、パスワード設定を行います。引き続き、一般ユーザーの作成が求められますので、ユーザー名とパスワードとその他のログイン情報(空欄のままで大丈夫)を設定していきます。設定が終わると、GUIが起動します。

3.アップデートの適用

DHCPサーバーのある環境なので、何もしなくてもネットワークに接続できるようになっています。termnialを開いて、

$ sudo apt-get update
$ sudo apt-get install

でアップデートをすべて適用します。

4.日本語サポートの追加

左上の「Application」から「Setting」を選択、その下の「Language Support」を選択すると、「The language support is not installed competely」と表示されるので「Install」をクリックして不足部分のインストールを行います。この処理はかなり時間がかかります。途中、パスワード入力を求められるので、適宜入力してやります。
インストール直後だとサポート言語はEnglishのみなので、下の方の「Install/Remove Languages…」をクリックして、Japaneseにチェックを入れて「Apply」をクリック。
再起動してログオンし直すと、メニューなどが日本語化されます。

5.時計表示の修正

時計表示を右クリックしてプロパティを選択、タイムゾーンが空白になっているので、Japanに修正すると時刻表示が正しくなります。

6.ArmbianのConfig

デスクトップ上のConfigのアイコンをダブルクリックすると、uxtermが開いてその中でUbuntu16.04のconfiguration utilityが起動します。とりあえず必要な設定項目はないようですが、ここに設定があることを忘れないために備忘録としてメモしておきます。

7.ToDo

残っていること

  • 解像度が1280×720になっているので、1920×1080に変更したい。
  • 日本語入力の設定

NanoPi NEO2のデバッグシリアルに苦労した話

$
0
0

Gigabit Ethernet環境でtcpdumpをひたすら放置で動かしておきたくて、NanoPi NEO2に手を出してました。

ファイルシステムのイメージファイルは違いますが、NanoPi NEOと同じ手順で環境構築できて、一度はシリアルコンソールが動いているUART0(デバッグシリアル)も動いていたのですが、しばらくシリアルコンソール無しで運用した後、再びシリアルコンソール経由で操作をしたくなった時に苦労しました。

公式サイトにある端子説明がこちらで、実物を半田面から写真を取ったのが以下です。

わかりますでしょうか??

実は写真に写っているNanoPi-NEO2の実物のデバッグシリアルの端子表記は間違っているので、シルク印刷の端子表記を信用すると動かない、という罠に陥ります。本当は、写真の上から、GND、5V、TX、RXの順で逆順になっています。

・・・ということで、最初に動かした時は公式サイトの端子説明をみて配線したので無事動いたのですが、今日改めて動かそうとした時には基板のシルク印刷をみて動かそうとしたので、動かなかった、というオチでした。悩んだ数時間を返してくれ、という感じです。

NanoPi NEO2でタイムラプス撮影

$
0
0

部屋を掃除していたらELECOMのWebカメラが出てきました。LinuxMintのマシンに挿してみたところ uvc カメラとして認識するようでしたので、NanoPi NEO2に挿してみたらこちらも認識しました。

なので、TimeLapse撮影ができないか、試してみました。
ググると Ubuntu でTimeLapseをやっている方は結構いるようで、基本的にはそちらに倣ってやってみました。

基本、NanoPi NEO2に合わせている以外はこちらのページのパクリです。

1.カメラ画像の連続キャプチャ

1枚単位での撮影には fswebcam を使うのが簡単なようです。

$ sudo apt-get install fswebcam

でインストールできます。で、連続撮影する場合には、1枚キャプチャするシェルスクリプトを書いて、cron で所定の時間毎に1枚キャプチャ、というのが簡単なようなのですが、NanoPi-NEO2のUbuntu-coreではcronはユーザーに開放されてないっぽいです。crontab -eとしても編集できないですし、ググってもシェルスクリプト内でループしてsleepで時間待ちせよ、みたいなことが書いてあります。

結局、以下のようなシェルスクリプトで連続撮影します。ファイル名は TimeLapse.sh として、ホームディレクトリの下に CaptureImage というディレクトリを作って、そこに置きました。

#!/bin/bash
while true;
do
	DATE=$(date +"%Y%m%d%H%M%S")
	fswebcam --quiet --jpeg 95 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /home/pi/CaptureImage/$DATE.jpg
	sleep 2s
done

作成したスクリプトに実行権限を付けてやります。

$ chmod +x TimeLapse.sh

で、実行すると、ザクザクと画像が溜まっていきます。

2.キャプチャした静止画の引取の準備

動画への変換はホスト側でやります。

ホスト側で

$ mkdir nanopi
$ sshfs pi@nanopi-neo2.local: /home/xxx/nanopi

として、sshfsでnanopi側のホームディレクトリをローカルディレクトリにマウントして、これで引き取ります。
(今考えれば、sshfsでマウントしなくても scp でも良かった・・・)

3.画像の変換の準備

ローカル側でffmpegで変換しますが、motionをインストールするほうが楽だという情報があったので、そうしました。

$ mkdir motion
$ cd motion
$ sudo apt-get install motion

4.画像の引取と変換

以下の手順で画像の引取と変換を行います。

$ cp ../nanopi/CaptureImage/*.jpg .
$ c=1 ; for i in ??????????????.jpg ; do mv $i `printf %d $c`.jpg ; c=$((c+1)) ; done
$ ffmpeg -f image2 -r 15 -i %d.jpg -r 15 -an -vcodec libx264 -pix_fmt yuv420p video.mp4

これで TimeLapse ができましたが、静止画の保存サイズが大きいようです。
1分間で3〜4MB出力しているようなので、1週間で40GBくらいになってしまいます。ちょっと要対策ですね。

NanoPi NEO2のNASキットを動かしてみました

$
0
0

秋月で NanoPi NEO/NEO2 用のNASキットが売っていたので、買ってみました。

秋月の説明書きにはヒートシンクが同梱されているとは書いてない(写真には写っていますが・・・)ので、思わずヒートシンクも余計に買ってしまいましたが、これから買う方はキットにヒートシンクが同梱されているので気をつけて下さい。

このNASキット以外に、

  • NanoPi-NEO2 (または NanoPi-NEO)
  • 2.5インチのHDDまたはSDD(まずは余り物の160GBをつけてみました)
  • CR2032コイン型リチウム電池
  • 起動用のMicroSDカード(手持ちの16GBを使いました)
  • 12VのACアダプタ(秋月で標準的なDCプラグがついているもの)

の準備が必要です。

組み立てにあたっては、

  • ハンダゴテ一式(NanoPi-NEO2の端子はハンダ付けが必要)
  • プラスドライバ(たぶん+1のもの)

も必要です。

とりあえず、端子をハンダ付けしました。ランド径が小さいので、ハンダ付けしにくいです。

この状態で、別のNanoPi-NEO2 から持ってきた MicroSD カードを挿して Ubuntu-Core で起動して ssh でログイン、適当に /dev/sda1 を mount してやると、中身を見ることができましたので、動作は問題ないようです。

ヒートシンクを付けてみました。

この後、Official ROMのイメージを

https://www.mediafire.com/folder/ah4i6w029912b/NanoPi-NEO2

の下の Official ROMs から nanopi-neo2_debian-nas-jessie_4.11.2_20171103.img.zip をダウンロードして、これを展開、USBイメージライタでMicroSDに書き込んで電源投入します。

ブラウザで、 http://friendlyelec.local/ にアクセスすると、

として画面が出ました。

ユーザー名: admin
パスワード: openmediavault

でログインすることができました。

とりあえず、

  • Web管理者パスワードの設定
  • タイムゾーンの設定、NTPの有効化
  • ホスト名を NanoPi-NAS に変更
  • アップデートの確認&インストール
  • ディスクのワイプ、ファイルシステム作成
  • ユーザーの作成

をしてみました。

この後、プラグインを見てみると、「openmediavault-flashmemory」というのがあり、これを使うと MicroSD への書き込みを減らせるようです。・・・が、インストールを試みたところエラーになりました・・・。

あと、デフォルトで root での ssh ログインが有効になっています

$ ssh root@nanopi-nas.local (変更していない場合はfriendlyelec.local)
root@nanopi-nas.local’s password: (デフォルトパスワードは fa )
root@nanopi-nas:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd fa
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~#

として、ログインパスワードは変更しておく必要があります。(もしくは、SSHを無効化したほうがよいかも)

・・・と思ったのですが、/etc/ssh/sshd_config の AllowGroups の項目には root と ssh しかいないので、実際にログインできるのは root だけのようです。

NanoPi NEO2のUbuntu CoreでWiFi有効化

$
0
0

NanoPi NEO2 の Ubuntu Core で WiFi を有効化したので、その際のメモです。

使用可能なUSBアダプタは

  • RTL8188CUS 802.11n WLAN Adapter
  • RT2070 Wireless Adapter
  • RT2870/RT3070 Wireless Adapter
  • RTL8192CU Wireless Adapter
  • NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]

ということらしいですが、きっと Raspberry Pi で動作可能なものは動くのでしょう^^;

USBコネクタにWiFiアダプタは挿しておきます。

 

1.使用可能なデバイスのリストアップ

$ sudo nmcli dev
DEVICE           TYPE      STATE          CONNECTION 
eth0             ethernet  connected      Wired connection 1 
wlx106f3fxxxxxx  wifi      disconnected   -- 
lo               loopback  unmanaged      --

という感じで、wlxに続いてMACアドレスという形でデバイスが表示されました。

2.WiFi起動

$ sudo nmcli r wifi on

3.アクセスポイントのスキャン

$ sudo nmcli dev wifi
*   SSID             MODE   CHAN  RATE       SIGNAL  BARS    SECURITY 
    xxxxxxxxxxxxxxx  Infra  2     54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    Mxxxxxxxx        Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    axxxxxxxxxxx     Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    Gxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
    Nxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
    sxxxxxxxxxxx     Infra  8     54 Mbit/s  52      ▂▄__   WPA1 WPA2 
    Bxxxxxxxxxxxxx   Infra  1     54 Mbit/s  42      ▂▄__   WPA2 
    axxxxxxxxxxxxxx  Infra  8     54 Mbit/s  22      ▂___    WEP 
    axxxxxxxxxxxxx   Infra  11    54 Mbit/s  22      ▂___    WPA1 WPA2

という感じでグラフィカルに表示されます。

4.アクセスポイントに接続

$ sudo nmcli dev wifi connect " (SSID) " password "パスワード" 
Device 'wlx106f3fxxxxxx' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

5.接続されているか確認

$ ifconfig
wlx106f3fxxxxxx Link encap:Ethernet HWaddr 10:6f:3f:xx:xx:xx 
 inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.255 Mask:255.255.252.0
 inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:595 errors:0 dropped:0 overruns:0 frame:0
 TX packets:372 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:86952 (86.9 KB) TX bytes:82940 (82.9 KB)

という感じで無事に接続。再起動しても大丈夫です。

NanoPi NEO2でタイムラプス撮影(続)

$
0
0

NanoPi NEO2でのタイムラプス撮影ですが、前回はcronが使えないようなので、スクリプト中でsleepして周期の調節をしていました。

で、いろいろ調べていたら、systemdのtimerユニットで似たようなことが実現できるようなのでやってみました。

1.スクリプトの作成

ログイン中であればユーザー権限でtimerユニットを動作させることもできるようなのですが、今回はroot権限で動作させます。

/usr/local/bin/TimerImageとして以下のファイルをrootで作成しました。

#!/bin/sh
DATE=$(date +"%Y%m%d%H%M%S")
fswebcam --quiet --jpeg 80 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /DATA/TimerImage/pictures/$DATE.jpg
(/DATAはHDDをマウントしてあるディレクトリです)
作成したら、実行権限を付与しておきます。

2.サービスファイルの作成

/etc/systemd/system/TimerImage.serviceとして以下のファイルを作成しました。

[Unit]
Description=Time Lapse Capture

[Service]
Type=simple
ExecStart=/usr/local/bin/TimerImage

3.timerを設定する

/etc/systemd/system/TimerImage.timerとして以下のファイルを作成しました。

[Unit]
Description= Capture every 10 seconds

[Timer]
AccuracySec=1sec
OnCalendar=*-*-* *:*:00/10
Unit=TimerImage.service

[Install]
WantedBy=multi-user.target

作成後、以下のようにして起動します。

 $ sudo systemctl daemon-reload
 $ sudo systemctl start TimerImage.timer
 $ sudo systemctl enable TimerImage.timer

daemon-reload は設定ファイルを修正した場合に再読み込みさせる際に必要です。(=初回は必要ない)

4.動作状態を確認する

以下のようにして動作状態を確認することができます。再起動しても自動的に起動することも確認できました。

$ systemctl --system --all list-timers
NEXT                         LEFT         LAST                         PASSED    UNIT                         ACTIVATES
Mon 2018-01-08 18:58:40 JST  8s left      Mon 2018-01-08 18:58:30 JST  1s ago    TimerImage.timer             TimerImage.service
Mon 2018-01-08 20:08:31 JST  1h 9min left Sun 2018-01-07 20:08:31 JST  22h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.servi
Tue 2018-01-09 06:36:24 JST  11h left     Mon 2018-01-08 06:47:50 JST  12h ago   apt-daily-upgrade.timer      apt-daily-upgrade.service
Tue 2018-01-09 07:37:17 JST  12h left     Mon 2018-01-08 18:28:22 JST  30min ago apt-daily.timer              apt-daily.service

 

Raspberry Piをネットワークの試験に使う

$
0
0

ここのところ買い集めている小さなLinuxボードは結局はネットワークの試験のために購入したもので、元々はなるべく小さなtcpdumpが使えて動かしっぱなしで放置できるものを探していたものです。で、いろいろぐぐっていたら、linuxでEthernetインタフェースが2つある環境を使って、もっといろいろできることがわかってきました。具体的には、ブリッジとして動作させてた上で、遅延を挿入したりできるというものです。その環境もRaspberry PiにUSBイーサネットアダプタを追加してやれば、Raspberry Piでもできそうなことがわかったので、試してみました。

1.Raspbianのインストール

今回はGUIは不要なので、Raspbian Liteを適当なMicro SDに書き込んで、余っていたRaspberry Pi model B+に入れました。
起動して、User/Passwd=pi/raspberryでログインしたあと、コンソールから

$ sudo touch /boot/ssh
$ sudo reboot

として再起動。再起動後、linuxマシン側から

$ ssh pi@raspberrypi.local

としてsshでログイン、以降はリモートログインで作業します。リモートログインしたら、

pi@raspberrypi:~ $ sudo raspi-config

として、初期設定をします。今回は、

  • パスワード設定
  • ホスト名をraspinetに変更
  • ブートオプションをConsoleに設定
  • ローカライゼーションでLocaleにja_JP.UTF-8 UTF-8を追加、デフォルトはen_GB.UTF-8のまま。タイムゾーンはAsia/Tokyoを選択。
  • Advanced OptionでExpand Filesystemを選択、Memory Spiltは16MBに設定

で、設定後に再度、再起動。再起動後、Linuxマシン側から

$ ssh pi@raspinet.local

として再度ログインします。ログインしたら、

pi@raspinet:~ $ sudo apt-get update
pi@raspinet:~ $ sudo apt-get upgrade
pi@raspinet:~ $ sudo apt-get install tcpdump bridge-utils

として、アップデートを一通りかけた後、bridge-utilsとtcpdumpをインストールします。

2.スクリプトファイルを作成して起動時に実行させる

pi@raspinet:~ $ sudo vi /usr/local/bin/start-bridge

として、ブリッジを起動する以下の内容のスクリプトを作成しました。(実行タイミングをsleepで調整しているのでちょっと汚いですが・・・)

#!/bin/sh
# disable IPv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
# setup bridge
brctl addbr vbr0
brctl addif vbr0 eth0
brctl addif vbr0 eth1
sleep 5
# start interface
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
ifconfig vbr0 0.0.0.0 up
sleep 5
dhclient -r
dhclient vbr0
echo 0 > /sys/devices/virtual/net/vbr0/bridge/multicast_snooping

IPv6は今回禁止、IGMP snooping も禁止しました。作成後に、

pi@raspinet:~ $ sudo chmod a+x /usr/local/bin/start-bridge

として、実行権限を付与。起動時に実行させるため、/etc/rc.local を修正して、最後の exit 0 の前に以下の部分を追加しました。

if [ -e /usr/local/bin/start-bridge ]; then
  /usr/local/bin/start-bridge &
fi

これで、Raspberry Piを起動させると自動的にブリッジとして動作するようになります。

3.tcpdumpで通過パケットをモニタしてみる

Linuxホスト側から

$ ssh pi@raspinet.local

でブリッジに設定したRaspberry Piにログインします。その後、

pi@raspinet:~ $ sudo tcpdump -i vbr0 not port ssh

とか、

pi@raspinet:~ $ sudo tcpdump -i vbr0 not host `/sbin/ip -f inet -o addr show vbr0 | awk '( $2 == "vbr0" ) {print $4}' | cut -d/ -f 1`

で通過するパケットをモニタします。(後ろの方の長いのは vbr0 のIPアドレスを抽出しているだけです)
ポートやIPアドレスでRaspberry Piに接続しているsshのパケットを除外しています。除外しないと、表示した文字列をパケットキャプチャして、それを再度表示してしまいます。

4.参考情報

Windows10からLinuxMint上のHL2240Dに印刷する

$
0
0

自宅の環境の整理をしているのですが、これまで不便だったのがWindows10からプリンタ(ブラザーのHL2240D)に印刷する時でした。正直、なぜLAN内蔵モデルにしなかったんだろう、というのがこれまでの悩みでした。

が、今回、Windows10からLinuxMintに接続したHL2240DにLAN経由で印刷することができるようになりましたので、メモしておきます。

1.LinuxMint側で印刷できるようにする

これは以前の記事のブラザーのレーザープリンタ買いましたを見て下さい。インストールしたら、「システム管理」→「プリンタ」でHL2240Dを「共有する」にチェックを入れておきます。

2.名前解決できるようにする

LinuxMintのマシンはDHCPでアドレス設定しているので、名前解決できる必要があります。で、簡単なのはavahi(mDNS)なので、そちらの準備をします。
Linux側はavahi daemon(Mintは初めから入っているような気がする)を入れておきます。Windows側は、Appleのサイトから「Bonjour Print Services (Windows)」をダウンロードしてインストールして、Windowsファイアウォールで 5353/UDP を許可しておきます。インストールしたら、Windows10のコマンドプロンプト/Linuxのシェルから「ping 相手のホスト名.local」で応答が返ってくるのを確認します。

3.プリンタの追加

「Bonjour Print Services (Windows)」をインストールした時に追加された「Bonjour プリンターウィザード」を起動すると、勝手にLinuxMint上のプリンタを見つけてくれました。ウィザードに沿って操作していくのですが、Brotherのドライバが同名でたくさんあってよくわかりません。とりあえず、「Brother Laser Type2 Class Driver」の中の一番下のをインストールして、テスト印刷したらうまくテスト印刷できました。印刷結果ではドライバーの種類が「Type 4 – ユーザーモード」となっていました(よくわかりませんが)。


NanoPi NEO2のNASキットを動かしてみました

$
0
0

秋月で NanoPi NEO/NEO2 用のNASキットが売っていたので、買ってみました。

秋月の説明書きにはヒートシンクが同梱されているとは書いてない(写真には写っていますが・・・)ので、思わずヒートシンクも余計に買ってしまいましたが、これから買う方はキットにヒートシンクが同梱されているので気をつけて下さい。

このNASキット以外に、

  • NanoPi-NEO2 (または NanoPi-NEO)
  • 2.5インチのHDDまたはSDD(まずは余り物の160GBをつけてみました)
  • CR2032コイン型リチウム電池
  • 起動用のMicroSDカード(手持ちの16GBを使いました)
  • 12VのACアダプタ(秋月で標準的なDCプラグがついているもの)

の準備が必要です。

組み立てにあたっては、

  • ハンダゴテ一式(NanoPi-NEO2の端子はハンダ付けが必要)
  • プラスドライバ(たぶん+1のもの)

も必要です。

とりあえず、端子をハンダ付けしました。ランド径が小さいので、ハンダ付けしにくいです。

この状態で、別のNanoPi-NEO2 から持ってきた MicroSD カードを挿して Ubuntu-Core で起動して ssh でログイン、適当に /dev/sda1 を mount してやると、中身を見ることができましたので、動作は問題ないようです。

ヒートシンクを付けてみました。

この後、Official ROMのイメージを

https://www.mediafire.com/folder/ah4i6w029912b/NanoPi-NEO2

の下の Official ROMs から nanopi-neo2_debian-nas-jessie_4.11.2_20171103.img.zip をダウンロードして、これを展開、USBイメージライタでMicroSDに書き込んで電源投入します。

ブラウザで、 http://friendlyelec.local/ にアクセスすると、

として画面が出ました。

ユーザー名: admin
パスワード: openmediavault

でログインすることができました。

とりあえず、

  • Web管理者パスワードの設定
  • タイムゾーンの設定、NTPの有効化
  • ホスト名を NanoPi-NAS に変更
  • アップデートの確認&インストール
  • ディスクのワイプ、ファイルシステム作成
  • ユーザーの作成

をしてみました。

この後、プラグインを見てみると、「openmediavault-flashmemory」というのがあり、これを使うと MicroSD への書き込みを減らせるようです。・・・が、インストールを試みたところエラーになりました・・・。

あと、デフォルトで root での ssh ログインが有効になっています

$ ssh root@nanopi-nas.local (変更していない場合はfriendlyelec.local)
root@nanopi-nas.local’s password: (デフォルトパスワードは fa )
root@nanopi-nas:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd fa
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~#

として、ログインパスワードは変更しておく必要があります。(もしくは、SSHを無効化したほうがよいかも)

・・・と思ったのですが、/etc/ssh/sshd_config の AllowGroups の項目には root と ssh しかいないので、実際にログインできるのは root だけのようです。

NanoPi NEO2のUbuntu CoreでWiFi有効化

$
0
0

NanoPi NEO2 の Ubuntu Core で WiFi を有効化したので、その際のメモです。

使用可能なUSBアダプタは

  • RTL8188CUS 802.11n WLAN Adapter
  • RT2070 Wireless Adapter
  • RT2870/RT3070 Wireless Adapter
  • RTL8192CU Wireless Adapter
  • NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]

ということらしいですが、きっと Raspberry Pi で動作可能なものは動くのでしょう^^;

USBコネクタにWiFiアダプタは挿しておきます。

 

1.使用可能なデバイスのリストアップ

$ sudo nmcli dev
DEVICE           TYPE      STATE          CONNECTION 
eth0             ethernet  connected      Wired connection 1 
wlx106f3fxxxxxx  wifi      disconnected   -- 
lo               loopback  unmanaged      --

という感じで、wlxに続いてMACアドレスという形でデバイスが表示されました。

2.WiFi起動

$ sudo nmcli r wifi on

3.アクセスポイントのスキャン

$ sudo nmcli dev wifi
*   SSID             MODE   CHAN  RATE       SIGNAL  BARS    SECURITY 
    xxxxxxxxxxxxxxx  Infra  2     54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    Mxxxxxxxx        Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    axxxxxxxxxxx     Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
    Gxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
    Nxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
    sxxxxxxxxxxx     Infra  8     54 Mbit/s  52      ▂▄__   WPA1 WPA2 
    Bxxxxxxxxxxxxx   Infra  1     54 Mbit/s  42      ▂▄__   WPA2 
    axxxxxxxxxxxxxx  Infra  8     54 Mbit/s  22      ▂___    WEP 
    axxxxxxxxxxxxx   Infra  11    54 Mbit/s  22      ▂___    WPA1 WPA2

という感じでグラフィカルに表示されます。

4.アクセスポイントに接続

$ sudo nmcli dev wifi connect " (SSID) " password "パスワード" 
Device 'wlx106f3fxxxxxx' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

5.接続されているか確認

$ ifconfig
wlx106f3fxxxxxx Link encap:Ethernet HWaddr 10:6f:3f:xx:xx:xx 
 inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.255 Mask:255.255.252.0
 inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:595 errors:0 dropped:0 overruns:0 frame:0
 TX packets:372 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:86952 (86.9 KB) TX bytes:82940 (82.9 KB)

という感じで無事に接続。再起動しても大丈夫です。

NanoPi NEO2でタイムラプス撮影(続)

$
0
0

NanoPi NEO2でのタイムラプス撮影ですが、前回はcronが使えないようなので、スクリプト中でsleepして周期の調節をしていました。

で、いろいろ調べていたら、systemdのtimerユニットで似たようなことが実現できるようなのでやってみました。

1.スクリプトの作成

ログイン中であればユーザー権限でtimerユニットを動作させることもできるようなのですが、今回はroot権限で動作させます。

/usr/local/bin/TimerImageとして以下のファイルをrootで作成しました。

#!/bin/sh
DATE=$(date +"%Y%m%d%H%M%S")
fswebcam --quiet --jpeg 80 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /DATA/TimerImage/pictures/$DATE.jpg

(/DATAはHDDをマウントしてあるディレクトリです)
作成したら、実行権限を付与しておきます。

2.サービスファイルの作成

/etc/systemd/system/TimerImage.serviceとして以下のファイルを作成しました。

[Unit]
Description=Time Lapse Capture

[Service]
Type=simple
ExecStart=/usr/local/bin/TimerImage

3.timerを設定する

/etc/systemd/system/TimerImage.timerとして以下のファイルを作成しました。

[Unit]
Description= Capture every 10 seconds

[Timer]
AccuracySec=1sec
OnCalendar=*-*-* *:*:00/10
Unit=TimerImage.service

[Install]
WantedBy=multi-user.target

作成後、以下のようにして起動します。

$ sudo systemctl daemon-reload
 $ sudo systemctl start TimerImage.timer
 $ sudo systemctl enable TimerImage.timer

daemon-reload は設定ファイルを修正した場合に再読み込みさせる際に必要です。(=初回は必要ない)

4.動作状態を確認する

以下のようにして動作状態を確認することができます。再起動しても自動的に起動することも確認できました。

$ systemctl --system --all list-timers
NEXT                         LEFT         LAST                         PASSED    UNIT                         ACTIVATES
Mon 2018-01-08 18:58:40 JST  8s left      Mon 2018-01-08 18:58:30 JST  1s ago    TimerImage.timer             TimerImage.service
Mon 2018-01-08 20:08:31 JST  1h 9min left Sun 2018-01-07 20:08:31 JST  22h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.servi
Tue 2018-01-09 06:36:24 JST  11h left     Mon 2018-01-08 06:47:50 JST  12h ago   apt-daily-upgrade.timer      apt-daily-upgrade.service
Tue 2018-01-09 07:37:17 JST  12h left     Mon 2018-01-08 18:28:22 JST  30min ago apt-daily.timer              apt-daily.service

 

Raspberry Piをネットワークの試験に使う

$
0
0

ここのところ買い集めている小さなLinuxボードは結局はネットワークの試験のために購入したもので、元々はなるべく小さなtcpdumpが使えて動かしっぱなしで放置できるものを探していたものです。で、いろいろぐぐっていたら、linuxでEthernetインタフェースが2つある環境を使って、もっといろいろできることがわかってきました。具体的には、ブリッジとして動作させてた上で、遅延を挿入したりできるというものです。その環境もRaspberry PiにUSBイーサネットアダプタを追加してやれば、Raspberry Piでもできそうなことがわかったので、試してみました。

1.Raspbianのインストール

今回はGUIは不要なので、Raspbian Liteを適当なMicro SDに書き込んで、余っていたRaspberry Pi model B+に入れました。
起動して、User/Passwd=pi/raspberryでログインしたあと、コンソールから

$ sudo touch /boot/ssh
$ sudo reboot

として再起動。再起動後、linuxマシン側から

$ ssh pi@raspberrypi.local

としてsshでログイン、以降はリモートログインで作業します。リモートログインしたら、

pi@raspberrypi:~ $ sudo raspi-config

として、初期設定をします。今回は、

  • パスワード設定
  • ホスト名をraspinetに変更
  • ブートオプションをConsoleに設定
  • ローカライゼーションでLocaleにja_JP.UTF-8 UTF-8を追加、デフォルトはen_GB.UTF-8のまま。タイムゾーンはAsia/Tokyoを選択。
  • Advanced OptionでExpand Filesystemを選択、Memory Spiltは16MBに設定

で、設定後に再度、再起動。再起動後、Linuxマシン側から

$ ssh pi@raspinet.local

として再度ログインします。ログインしたら、

pi@raspinet:~ $ sudo apt-get update
pi@raspinet:~ $ sudo apt-get upgrade
pi@raspinet:~ $ sudo apt-get install tcpdump bridge-utils

として、アップデートを一通りかけた後、bridge-utilsとtcpdumpをインストールします。

2.スクリプトファイルを作成して起動時に実行させる

pi@raspinet:~ $ sudo vi /usr/local/bin/start-bridge

として、ブリッジを起動する以下の内容のスクリプトを作成しました。(実行タイミングをsleepで調整しているのでちょっと汚いですが・・・)

#!/bin/sh
# disable IPv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
# setup bridge
brctl addbr vbr0
brctl addif vbr0 eth0
brctl addif vbr0 eth1
sleep 5
# start interface
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
ifconfig vbr0 0.0.0.0 up
sleep 5
dhclient -r
dhclient vbr0
echo 0 > /sys/devices/virtual/net/vbr0/bridge/multicast_snooping

IPv6は今回禁止、IGMP snooping も禁止しました。作成後に、

pi@raspinet:~ $ sudo chmod a+x /usr/local/bin/start-bridge

として、実行権限を付与。起動時に実行させるため、/etc/rc.local を修正して、最後の exit 0 の前に以下の部分を追加しました。

if [ -e /usr/local/bin/start-bridge ]; then
  /usr/local/bin/start-bridge &
fi

これで、Raspberry Piを起動させると自動的にブリッジとして動作するようになります。

3.tcpdumpで通過パケットをモニタしてみる

Linuxホスト側から

$ ssh pi@raspinet.local

でブリッジに設定したRaspberry Piにログインします。その後、

pi@raspinet:~ $ sudo tcpdump -i vbr0 not port ssh

とか、

pi@raspinet:~ $ sudo tcpdump -i vbr0 not host `/sbin/ip -f inet -o addr show vbr0 | awk '( $2 == "vbr0" ) {print $4}' | cut -d/ -f 1`

で通過するパケットをモニタします。(後ろの方の長いのは vbr0 のIPアドレスを抽出しているだけです)
ポートやIPアドレスでRaspberry Piに接続しているsshのパケットを除外しています。除外しないと、表示した文字列をパケットキャプチャして、それを再度表示してしまいます。

4.参考情報

Windows10からLinuxMint上のHL2240Dに印刷する

$
0
0

自宅の環境の整理をしているのですが、これまで不便だったのがWindows10からプリンタ(ブラザーのHL2240D)に印刷する時でした。正直、なぜLAN内蔵モデルにしなかったんだろう、というのがこれまでの悩みでした。

が、今回、Windows10からLinuxMintに接続したHL2240DにLAN経由で印刷することができるようになりましたので、メモしておきます。

1.LinuxMint側で印刷できるようにする

これは以前の記事のブラザーのレーザープリンタ買いましたを見て下さい。インストールしたら、「システム管理」→「プリンタ」でHL2240Dを「共有する」にチェックを入れておきます。

2.名前解決できるようにする

LinuxMintのマシンはDHCPでアドレス設定しているので、名前解決できる必要があります。で、簡単なのはavahi(mDNS)なので、そちらの準備をします。
Linux側はavahi daemon(Mintは初めから入っているような気がする)を入れておきます。Windows側は、Appleのサイトから「Bonjour Print Services (Windows)」をダウンロードしてインストールして、Windowsファイアウォールで 5353/UDP を許可しておきます。インストールしたら、Windows10のコマンドプロンプト/Linuxのシェルから「ping 相手のホスト名.local」で応答が返ってくるのを確認します。

3.プリンタの追加

「Bonjour Print Services (Windows)」をインストールした時に追加された「Bonjour プリンターウィザード」を起動すると、勝手にLinuxMint上のプリンタを見つけてくれました。ウィザードに沿って操作していくのですが、Brotherのドライバが同名でたくさんあってよくわかりません。とりあえず、「Brother Laser Type2 Class Driver」の中の一番下のをインストールして、テスト印刷したらうまくテスト印刷できました。印刷結果ではドライバーの種類が「Type 4 – ユーザーモード」となっていました(よくわかりませんが)。

linuxmint19にpreloadを入れてみた

$
0
0

linuxの高速化についてぐぐっていたら、たまたま見つけたのが preload。頻繁に使われるファイルを空き時間にメモリにロードしておいてくれるらしい。メモリいっぱいだけど遅い Athlon5350 マシンにはピッタリのように見えるので、試してみることにしました。

synapticでpreloadをインストールした後、

$ sudo systemctl start preload.service

で起動する。システム起動時に preload を起動するには、

$ sudo systemctl enable preload.service

としておく。

ちょっと使ってみたところ、ログイン後の挙動は確かに早くなっている気がする・・・・が、学習してなんぼのものみたいなので、しばらく様子見ですね。

Jumper Ezbook Pro 3にLinuxMint19をインストール

$
0
0

先日購入した Jumper Ezbook Pro 3 に LinuxMint19をインストールしてみました。

LinuxMintは内蔵のeMMCの領域ではなく、増設した32GBのmSATAのSSD(安かった KingDian の JP-N400 32GB)にインストールすることで、Windows10は丸ごと温存します。

1.BIOSでUSBメモリからの起動を選択。

今回は Linux Mint 19 MATE の64bit版をインストールします。ISOイメージをダウンロードしてハッシュ値を検証した後、USBイメージライタでUSBメモリに書き込みます。書き込んだUSBメモリをEzbook3 Proに取り付けて電源投入しますが、すぐにDELキーを連打してBIOSに移行、起動デバイスをUSBメモリに変更してから起動します。

2.WiFiの設定(SSID選択、パスワード設定)

起動するとすぐにWiFiを見つけて設定するように促されますが、ここでは設定しません。リリースノートを見るとgrubのインストールに失敗する障害があり、その対策としてインストール時にネットワークに接続しない、というものが挙げられています。これでだいぶ時間を取られてしまいました。

3.内蔵eMMCを禁止。

起動後、ブートローダ等を含めて温存したいので、内蔵eMMCを禁止します。

$ su bash
# echo -n mmc1:0001 > /sys/bus/mmc/drivers/mmcblk/unbind

実行すると、デスクトップ上のSDカードっぽいアイコンが消えます。ひょっとすると(おそらく?)内蔵のMicroSDカードリーダーも見えなくなるかもしれません。この状態でもちゃんと内蔵のMicroSDカードリーダーは見えます。

4.増設したmSATA SSDを初期化

ディスクユーティリティを使ってSSDを初期化します。初期化しないとこのSSDは全く見えず、インストーラも認識してくれません。

5.インストーラを起動してインストール実行

インストーラを起動、言語は日本語、キーボードレイアウトは 英語(us) を選択。特に難しいところはありません。

6.インストール完了後の設定

まずは誤操作でWindows10のパーティションを壊さないよう、内蔵eMMCを見えないようにします。

/etc/rc.localとして以下の内容のファイルを作成します。

#!/bin/sh

echo -n mmc1:0001 > /sys/bus/mmc/drivers/mmcblk/unbind

次に、/etc/systemd/system/rc-local.serviceとして以下の内容のファイルを作成します

[Unit]
Description=/etc/rc.local

[Service]
ExecStart=/etc/rc.local
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

起動時に自動実行するように設定します。

$ sudo systemctl enable rc-local.service

これで起動後ログインするとeMMCの内容が見えなくなりました。

後は、通常のLinux Mintの設定と大差ありません。

  • WiFiの設定
  • アップデートの実行
  • 言語設定で不足しているファイルをインストール
  • 言語設定でIMEを選択。今回はfcitxを選択しました。ibusではUSキーボードで日本語入力モードへ移行するキーバインドが見つかりませんでした。fcitxの場合にはCTRL+SPACEに割り当てられています。

といったところです。


EzBook3 Pro用にUSBブートのLubuntuを作成

$
0
0

EzBook3 Proでいろんなこと(ちょっと危ないサイトへのアクセスを含む)ができるよう、USBメモリブートのLinux環境をつくります。

1)LubuntuをUEFIで起動できるようインストール

Lubuntu 18.04.1を別のマシンでUEFIで起動してUSBメモリにインストール。「ディスクを削除してLubuntuをインストール」を選択。パーティション作成時にESPパーティションが作られるのがポイント。

2)内蔵SSDを見えなくする

EzBookPro3に増設してあるmSATAのSSDを認識できないようカーネルに設定追加します。

インストール完了後は、内蔵HDDを見えないように設定変更します。作業としては、 /etc/default/grub を開いて、 「GRUB_CMDLINE_LINUX_DEFAULT」の起動時オプションに「libata.force=disable」を追加します。修正後は、

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

としてgrub.cfgファイルを自動生成させて反映させます。

ちなみに、「libata.force=disable」のところを、「libata.for=1:disable,3:disable」のようにすると、特定のSATAデバイスのみ無効化できます。指定する番号は dmesg を見ると、

[ 2.850375] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 2.850412] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 2.851581] ata1.00: ATA-9: TS64GSSD370S, N1114H, max UDMA/133
[ 2.851586] ata1.00: 125045424 sectors, multi 2: LBA48 NCQ (depth 31/32), AA
[ 2.852914] ata1.00: configured for UDMA/133
[ 3.167663] ata2.00: ATA-8: TOSHIBA MQ01ABD032, AX001A, max UDMA/100
[ 3.167668] ata2.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 3.170648] ata2.00: configured for UDMA/100

と言うような箇所があり、このata1.00のデバイスなら1:disableを、ata2.00のデバイスなら2:disableを指定します。(注:このdmesgの例は EzBook3 Proのものではありません)

3)内蔵eMMCを見えなくする

/etc/rc.localとして以下の内容のファイルを作成します。

#!/bin/sh

echo -n mmc1:0001 > /sys/bus/mmc/drivers/mmcblk/unbind

次に、/etc/systemd/system/rc-local.serviceとして以下の内容のファイルを作成します

[Unit]
Description=/etc/rc.local

[Service]
ExecStart=/etc/rc.local
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

起動時に自動実行するように設定します。

$ sudo chmod a+x /etc/rc.local
$ sudo systemctl enable rc-local.service

これで起動後ログインするとeMMCの内容が見えなくなりました。

4)言語サポートのインストール

言語設定で不足しているファイルをインストールさせます。

5)USBメモリへのアクセス高速化

USBメモリへのアクセス時刻の記録を停止してアクセスを減らすとともに、/tmpをtmpfsにより確保してUSBメモリへのアクセスを減らします。/etc/fstab をのもとからある行にnoatimeオプションを追加し、さらにtmpfsで始まる行を追加します。

# / was on /dev/sda1 during installation
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 noatime,errors=remount-ro 0 1
# tmpfs
tmpfs /tmp tmpfs defaults,noatime 0 0

追伸

# echo -n '0:0:0:0' > /sys/bus/scsi/drivers/sd/unbind

で増設したSATAが見えなくなるっぽい。事前に sync したほうが良さそうだけど。

WindowsとLinuxで時計が狂うのを直す

$
0
0

昔から Linux と Windows のデュアルブートが可能な環境でOSを行き来すると、時計が大きくずれる現象が発生していました。これは Linux ではPCのハードウェア時計(RTC)が UTC(協定世界時)で動作しているのを前提としているのに対し、WindowsではRTCはローカルタイム(JST=日本標準時)で動作しているのを前提としており、それぞれのOSがNTPを利用して時刻修正を行って、それをRTCに反映していることが原因でした。

以前のバージョンのLinuxでは、 /etc/default/rcS に UTC=no と記載することにより、RTCの設定がローカルタイムであることを設定できたのですが、いつの頃からか /etc/default/rcS は存在しなくなっていました。

最近は Linux を使うことがほとんどで、それでもあまり困らなかったのですが、その修正方法がわかったのでメモしておきます。修正は以前と同様、Linux側で行います。使用するコマンドは timedatectl コマンドです。

$ timedatectl status
                      Local time: 水 2018-08-01 01:25:54 JST
                  Universal time: 火 2018-07-31 16:25:54 UTC
                        RTC time: 水 2018-08-01 01:25:45
                       Time zone: Asia/Tokyo (JST, +0900)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

ということで、最後の行にRTCがローカルタイムゾーンか否かの記載があります。で、

$ timedatectl set-local-rtc true

とするとこの設定を変更することができます。ところでこのコマンド、ハードウェア設定の変更に関わるものなのですが、root権限がなくても設定できてしまいます。(いいのかな?)

設定変更後に再度設定状況を読み出すと、

$ timedatectl status
                      Local time: 水 2018-08-01 01:26:22 JST
                  Universal time: 火 2018-07-31 16:26:22 UTC
                        RTC time: 水 2018-08-01 01:26:22
                       Time zone: Asia/Tokyo (JST, +0900)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

という感じで、警告が表示されます。

古いネットブックにKali Linuxをインストール

$
0
0

2代前の持ち出しPCのネットブック(IdeaPad S10-2、Atom N270、メモリを2GBに増設、HDDをSSD64GBに換装済み)にKali Linuxの32bit版をインストールしてみました。

グラフィカルインストーラは重いので、テキストインストーラを起動します。

途中、WiFiチップのドライバのregulatory.db b43/ucode15.fwなどが見つからない、というメッセージが出ますが、ここではそのまま放置して、有線LANを接続しておきます。

# apt-get install task-xfce-desktop

上記コマンドはすごく実行時間がかかりました。ホストしているサーバーまでの帯域が細いようで、ダウンロードも長いのですが、非力な初期のAtomでは非常に時間がかかります。で、なんだかんだ言いつつ、途中lightdmを選択し導入。
再起動し、ログイン画面でxfceを選択してログインします。ログインし直すと、軽くなってそれなりに操作できるようになりました。

BCM4311ドライバのインストール

このネットブックはWiFiチップとしてBCM4311が載っていて、Debian系をインストールするとドライバが入りません。Debianのページを見ると、non-freeのファームウェアは別途インストールする必要があるようで、主要な non-free のファームウェアを集めたアーカイブファイルへのリンクがあります。この中から、firmware-b43-installer_019-3_all.deb をダウンロードしておき、USBメモリで Kali linux 側に持っていって、

# dpkg -i firmware-b43-installer_019-3_all.deb

とすると、ファームウェアをダウンロード(これがまた時間がかかります。15KB/sくらいしか出ません。)

いろいろアップデート

これが終わったところで、ようやくいろいろアップデートかけます。

# apt-get update
# apt-get upgrade

・・・1GBダウンロードだそうで、丸1日くらいかかりそうです。性能が非力かどうかよりも、回線側の問題ですね・・。

<追伸>実際はそこまでかかりませんでしたが、UbuntuやLinuxMintに比べるとやはり時間がかかってしまいますね。

HDDの状態をSMARTで調べる

$
0
0

整理したら古いHDDがたくさん出てきました。それぞれの状態を見てみたいと思います。
HDDの状態を見るといえばSMARTですが、Linux Mintの「ディスク」ユーティリティでもSMARTの状態を見ることができます。

ディスクユーティリティを起動して、対象とするHDDを選択したところです。ここではeSATAで外付けにしたHDDを選択しています。

右上の方のメニューに「SMARTのデータとセルフテスト」というのがあるので、これを選ぶと、最後に取得したデータが表示されるようです。

このHDD、自分の父がHDDを交換したので処分したい、ということで引き取ってきたものなのですが、どうも過去に温度条件の良くないところに突っ込まれてたのでしょうか。温度自体ではなく、Airflow Temparatureなので、筐体の温度ということではないのかもしれませんので、ファンでも壊れてたんでしょうか??(西日のあたるところに置かれてたようですが、それでも??)
それ以外は特に問題はないようです。

簡単に扱うならこれでいいのですが、できれば記録に残したいところです。そういう場合はCLIの方が便利です。

標準ではコマンドラインのツールは入っていないようなので、

$ sudo apt-get install smartmontools

としてインストールします。–info オプションをつけて smartctl コマンドを実行すると、デバイスの概要を表示してくれます。型番やシリアルナンバーも表示してくれるので、管理には便利です。今回は対象のデバイスが /dev/sdb ですので実行すると以下のような感じになりました。(他のデバイスで行うときには /dev/sdb の部分は読み替えてください)

$ sudo smartctl --info /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar SE Serial ATA
Device Model:     WDC WD2500JS-19NCB1
Serial Number:    WD-WCANK1638205
Firmware Version: 10.02E01
User Capacity:    250,058,268,160 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 (minor revision not indicated)
Local Time is:    Wed Aug 15 05:26:51 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

最後の行にSMARTが有効かどうか記載されていますが、無効の場合には以下の方法で有効化する必要があります。

$ sudo smartctl --smart=on /dev/sdb

デバイスが対応しているテストを調べます。

$ sudo smartctl -c /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status:  (0x82)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		( 7680) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 (  90) minutes.
Conveyance self-test routine
recommended polling time: 	 (   6) minutes.
SCT capabilities: 	       (0x103f)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

最後の方に記載されている内容によれば、shortテストは2分、extendedテストは90分、conveyanceテスト(輸送時の影響を調べる)だと6分かかるようです。
90分は長いので、shortテストを起動してみます。

$ sudo smartctl -t short /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after (終了予定時刻)

Use smartctl -X to abort test.
$

ということですぐ帰ってきます。実際の処理はバックグラウンドで行われるようです。なお、extendedテストを実行する場合は-tの後ろはlong、conveyanseテストを実行する場合はconveyanseを指定します。

テスト結果を表示してみます。

$ sudo smartctl -H /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0022   043   030   045    Old_age   Always   FAILING_NOW 57

テストは無事にPASSしましたが、Airflow Temparatureのイベントに注意、ということみたいです。

最新のテスト結果のリストを表示してみます。

$ sudo smartctl -l selftest /dev/sdb
[sudo] tom のパスワード: 
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     25508         -
# 2  Short offline       Completed without error       00%     25321         -

詳細の情報を表示してみます。

$ sudo smartctl -a /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-30-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar SE Serial ATA
Device Model:     WDC WD2500JS-19NCB1
Serial Number:    WD-WCANK1638205
Firmware Version: 10.02E01
User Capacity:    250,058,268,160 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 (minor revision not indicated)
Local Time is:    Wed Aug 15 06:51:02 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x84)	Offline data collection activity
					was suspended by an interrupting command from host.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		( 7680) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 (  90) minutes.
Conveyance self-test routine
recommended polling time: 	 (   6) minutes.
SCT capabilities: 	       (0x103f)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   211   182   021    Pre-fail  Always       -       4441
  4 Start_Stop_Count        0x0032   093   093   000    Old_age   Always       -       7644
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   066   066   000    Old_age   Always       -       25509
 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   093   093   000    Old_age   Always       -       7638
190 Airflow_Temperature_Cel 0x0022   045   030   045    Old_age   Always   FAILING_NOW 55
194 Temperature_Celsius     0x0022   095   080   000    Old_age   Always       -       55
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       1
200 Multi_Zone_Error_Rate   0x0009   200   200   051    Pre-fail  Offline      -       0

SMART Error Log Version: 1
ATA Error Count: 2
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 2 occurred at disk power-on lifetime: 7345 hours (306 days + 1 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 af 24 01 e0  Error: UNC 8 sectors at LBA = 0x000124af = 74927

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 d8 08 af 24 01 00 00      00:00:19.240  READ DMA EXT
  25 d8 08 af 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 a7 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 9f 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 97 24 01 00 00      00:00:17.339  READ DMA EXT

Error 1 occurred at disk power-on lifetime: 7345 hours (306 days + 1 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 af 24 01 e0  Error: UNC 8 sectors at LBA = 0x000124af = 74927

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 d8 08 af 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 a7 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 9f 24 01 00 00      00:00:17.341  READ DMA EXT
  25 d8 08 97 24 01 00 00      00:00:17.339  READ DMA EXT
  25 d8 08 d7 00 00 00 00      00:00:17.339  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     25508         -
# 2  Short offline       Completed without error       00%     25321         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Arch LinuxのS.M.A.R.T.の項目を参考にしました(というか、概ねそのままです)

NanoPi NEO2セットアップ(FriendlyCore編)

$
0
0

何回やってるんだという感じのNanoPi NEO2のセットアップです。

公式イメージが置いてある http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Boot_from_TF のリンク先の Google Drive のURL https://drive.google.com/drive/folders/1w7eMluHWo3ezwKBdaJcDUcCtM9qVaaVv から「nanopi-neo2_friendlycore-xenial_4.14.52_20180628.img.zip」をダウンロードしてきて、イメージを展開、USBイメージライタでMicroSDカードに書き込みます。書き込んだMicroSDカードをNanoPi NEO2に挿入します。ローカルPCで

$ fping -a -g 192.168.xxx.0/24 2> /dev/null

を電源投入前後で実行、増えたIPアドレスを調べます。(注:電源投入後の実行はしばらく待ってから行います)
調べたIPアドレスに対して、

$ ssh pi@192.168.xxx.xxx

として、パスワード「pi」でログインします。

$ sudo npi-config

でセットアップ。パスワードの変更、ロケール(ja_JP.UTF-8)の追加、タイムゾーンの変更(Asia/Tokyo)して、再起動。
再起動後、再度 ssh でログインして、

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get avahi-daemon

完了すると、以降は

$ ssh pi@nanopi-neo2.local(もしくは設定したホスト名.local)

でログインできるようになります。(ローカル側にも avahi-daemon が必要)

Viewing all 42 articles
Browse latest View live