2017年12月24日日曜日

Android-009 root化(Nexus6P)

9.Nexus6P (Model:H1512)編

Nexus Root Toolkit v2.1.9でroot化できそうなのでやってみた。
手持ちのNexus6Pの履歴。
入手日2015年11月09日 ビルド番号:MDA89D Androidバージョン:6.0
更新日2017年12月23日 ビルド番号:OPM1.171019.011 Androidバージョン:8.1.0(OTAにて)
試行錯誤の上であり内容が間違っているかもしれないので参考程度とされたい。

(1)Nexus Root Toolkit(NRT)のダウンロード
参照ページ:Nexus Root Toolkit
から、NRT_v2.1.9.sfx.exeをダウンロードしてWin7機にをインストールした。
MD5 (NRT_v2.1.9.sfx.exe) = 53c4072f15343fd545b4676aa5bfd099
このNRT(v2.1.9)だけで、Nexus6Pのブートローダーアンロックとroot化できた。

(2)Nexus Root Toolkit(NRT)の操作

ANGLER Android 7.0.0 Build NRD90Uを選ぶ。NRD90Tも試したが、NRD90Tは電源ONのAndroidロゴ表示で止まってうまくいかなかった。

(2-1)Unlock
Nexus6P OEMロック解除の設定

Unlock Bootloaderのところでは、設定>開発者向けオプションに、OEMロック解除(ブートローダによるロック解除を許可する)を指定しておく。

(2-2)Flash Stock + Unroot

Factory Image Downloaderでは、ビルド番号:NRD90Uのもの、

C:\Program Files (x86)\WugFresh Development\Nexus Root Toolkit\data\Factory_Images\ に、
angler-nrd90u-factory-7c9b6a2bというフォルダができて、3.94GBサイズとなった。
手動でのダウンロードは yakju-jdq39-factory-6f07b069.zip というファイル名。

(2-3)FASTBOOT device was not found.

どの場面か記録できてないが、この画面になったときは、DOS窓から
>adb reboot bootloader
でブートローダー画面にした。

(2-4)メインパネルの[Root]ボタンでroot化する
Custom RecoveryにチェックをいれてTWRPも入れる。
TWRPを起動したければ > fastboot boot twrp-3.0.2-2-angler.img
とかすればよいのだろうが、今回は導入した。

TWMPでこんなのが出たが、Keep Read Onlyは選択しなかった。


TWRPのINSTALLで、SuperSU-v2.78-SR1.zipをインストールする。

(3)Root化の確認。


SuperSUアプリの設定画面で、スーパーユーザーが有効です。になってroot化は成功している。
このときの、端末の状態の画面には、Androidバージョン7.0 ビルド番号NRD90Uとなっている。


2017年9月6日水曜日

RPi_0030 partedとrestore

Raspbian のブートプロセスでrootマウントは、/boot/cmdline.txt と /etc/fstab で、"root=PARTUUID=12345678-02" と"PARTUUID=12345678-02 / ext4" などと、PARTUUIDを一致させて、ルートパーティションをマウントしている。

microSDの区画切りで、fdiskではPARTUUIDはフォーマット後に出現しない。
gdiskでは、Partition Table: gpt で区画するとPARTUUIDが現れるが、RaspberryPiは Partition Table: msdos でないと起動してくれない。

これが、partedだと、Partition Table: msdos にて、PARTUUIDは区画切り後に出現した。

partedで区画を作り、dumpバックアップからのrestoreしてmicroSDでの起動についての説明する。

(1) partedで区画を作成

(1-1)まず、8GBのmicroSDをfdiskで区画切りしてフォーマットでは、以下のようにblkidではPARTUUIDが出現しない。Disk identifier: 0x0になっている。
# fdisk -l /dev/sda

Disk /dev/sda: 7.4 GiB, 7985954816 bytes, 15597568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000 #ここ値がセットできれば良いのだが

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1         2048   104447   102400   50M  c W95 FAT32 (LBA)
/dev/sda2       104448 15597567 15493120  7.4G 83 Linux

# blkid | grep sda
/dev/sda1: SEC_TYPE="msdos" UUID="B7B2-351F" TYPE="vfat"
/dev/sda2: UUID="958651f6-3615-4ac6-afeb-bae165a936d9" TYPE="ext4"

(1-2)そのままmicroSDをpartedで、区画の削除をする。
# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p #区画の確認
Model: Mass Storage Device (scsi)
Disk /dev/sda: 7986MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  53.5MB  52.4MB  primary  fat32        lba
 2      53.5MB  7986MB  7932MB  primary  ext4

(parted) rm 2 #区画2削除
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? Yes
Error: Partition(s) 2 on /dev/sda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) rm 1 #区画1削除
Warning: Partition /dev/sda1 is being used. Are you sure you want to continue?
Yes/No? Y
Error: Partition(s) 1, 2 on /dev/sda have been written, but we have been unable
to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) p #区画削除されたことの確認
Model: Mass Storage Device (scsi)
Disk /dev/sda: 7986MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start  End  Size  Type  File system  Flags

(parted)

(1-3)次に、mkpartで区画の作成をする。
(parted) mkpart #区画作成コマンド
Partition type?  primary/extended? p
File system type?  [ext2]? fat32 #fat32で区画の作成
Start? 0
End? 50M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
Error: Partition(s) 1, 2 on /dev/sda have been written, but we have been unable
to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) mkpart
Partition type?  primary/extended? p
File system type?  [ext2]? ext4 #ext4で区画の作成
Start? 50M
End? 8G
Error: Partition(s) 1, 2 on /dev/sda have been written, but we have been unable
to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
 # # # インタラクティブ(interactive)な対話モードでなく、
 # (parted) mkpart p fat32 0% 50M
 # (parted) mkpart p ext4 50M 100%
 # とか、引数を指定して、start end は100%のように%も使えるようだ。
(parted) p #区画の確認
Model: Mass Storage Device (scsi)
Disk /dev/sda: 7986MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      512B    50.0MB  50.0MB  primary  fat32        lba
 2      50.3MB  7986MB  7936MB  primary  ext4         lba

(parted) quit #writeしなくてもquitで書き込んでくれるようだ。
Information: You may need to update /etc/fstab.

# 一旦このmicroSD8GBを取外して挿し直すか、再起動で区画の正常認識を確認する。
# partprobe -s
/dev/sda: msdos partitions 1 2
/dev/mmcblk0: msdos partitions 1 2

(1-4)フォーマットする
# fdisk -l /dev/sda

Disk /dev/sda: 7.4 GiB, 7985954816 bytes, 15597568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x88584BBB  ###これがPARTUUIDのもとになるようだ。

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1           1    98303    98303   48M  c W95 FAT32 (LBA)
/dev/sda2       98304 15597567 15499264  7.4G 83 Linux

# mkfs.vfat /dev/sda1 #vfatでフォーマット
mkfs.fat 3.0.27 (2014-11-12)
# mkfs.ext4 -j /dev/sda2 #ext4ジャーナル付きでフォーマット
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 1937408 4k blocks and 484800 inodes
Filesystem UUID: 1de1421d-55c1-4fd1-94d4-e5b1d266dAAA
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

# blkid | grep sda #こんどは以下のようにblkidでPARTUUIDが出現している。
/dev/sda1: SEC_TYPE="msdos" UUID="1A96-82FB" TYPE="vfat" PARTUUID="88584BBB-01"
/dev/sda2: UUID="1de1421d-55c1-4fd1-94d4-e5b1d266dAAA" TYPE="ext4" PARTUUID="88584BBB-02"
#

(2) dumpバックアップからのrestore

restore対象のmountポイントにcdしてrestoreする。
# mount /dev/sdb1 /dsk/sdb1 #/boot区画マウント
# mount /dev/sdb2 /dsk/sdb2 #ルート区画マウント
# cd /dsk/sdb1
# rsync -a /dsk/sda4/Backup/rapia/RootBz/boot/. . #/boot領域のコピー
# cd ../sdb2
# ls
lost+found
 #以下でrestoreの実行
# time bzip2 -dc /dsk/sda4/Backup/rapia/RootBz/b_mmcblk0_rapia_2017_0902/mmcblk0p2_2017_0902.dump.bz2| restore rf -

restore: ./lost+found: File exists

bzip2 -dc   953.43s user 33.54s system 85% cpu 19:19.90 total
restore rf -  15.04s user 67.21s system 7% cpu 19:21.66 total
#

1.5GBのリストアに953秒の約16分かかった。
結構まつので、進捗ぐあいの確認には、
while [ true ]; do echo -n "`date "+%H:%M:%S"` "; df -H |grep /dev/sdb2|awk '{print $1,$2,$3,$4}'; sleep 30; done
...とかで、
22:31:44 /dev/sdb2 7.8G 946M 6.4G
22:32:14 /dev/sdb2 7.8G 985M 6.4G
22:32:44 /dev/sdb2 7.8G 1.1G 6.4G
...などと見張る。

(3) cmdline.txtとfstabの修正

PARTUUIDの部分をblkidのものと、それぞれ一致させる。
# cat /dsk/sdb1/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=88584BBB-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
# cat /dsk/sdb2/etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=88584BBB-01  /boot           vfat    defaults          0       2
PARTUUID=88584BBB-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

◎ /dsk/sdb1と/dsk/sdb2をアンマウントして再起動する。
◎ restore後のmicroSD8GBの起動では、以下のようなPARTUUIDの状態になっている。
# ls -l /dev/disk/by-partuuid
total 0
lrwxrwxrwx 1 root root 15 Sep  2 14:17 88584BBB-01 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 15 Sep  2 14:17 88584BBB-02 -> ../../mmcblk0p2
# blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="1A96-82FB" TYPE="vfat" PARTUUID="88584BBB-01"
/dev/mmcblk0p2: UUID="1de1421d-55c1-4fd1-94d4-e5b1d266dAAA" TYPE="ext4" PARTUUID="88584BBB-02"
/dev/mmcblk0: PTUUID="88584BBB" PTTYPE="dos"
# grep PARTUUID /etc/fstab
PARTUUID=88584BBB-01  /boot           vfat    defaults          0       2
PARTUUID=88584BBB-02  /               ext4    defaults,noatime  0       1
# grep PARTUUID /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=88584BBB-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
#


2017年8月30日水曜日

RPi_0029 PulseAudio

Raspberry Pi3からBluetoothスピーカにペアリングして音楽再生する。
なおPiZeroWで同じ設定をしたが非力で音飛びするようだった。

以下のWebページの内容をトレースして設定した。
《参照》
Raspberry PI 3 で Bluetooth(A2DP)
http://qiita.com/nattof/items/3db73a95e63100d7580a

(1) PulseAudioのインストール

# apt-get install pulseaudio-module-bluetooth

(2) PulseAudioの設定

3つのファイルを設定する。
○その1
# cat << EOF > /etc/systemd/system/pulseaudio.service
[Unit]
Description=Pulse Audio

[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm

[Install]
WantedBy=multi-user.target
EOF
○その2
# cat << EOF > /etc/dbus-1/system.d/pulseaudio-bluetooth.conf
<busconfig>

  <policy user="pulse">
    <allow send_destination="org.bluez"/>
  </policy>

</busconfig>
EOF
○その3
# cat << EOF >> /etc/pulse/system.pa

### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif
EOF

(3) 使用したbluetoothスピーカ


2年くらい前にSoftBankのキャンペーンでもらったOnyx Studioと、ことしの1月にauのキャンペーンでもらった座布団つきのGH-OTOMO。ともに再生は確認できたが、GH-OTOMOはボリュームがないので、AlsaMixerでの音量調整が必要。

(4) PulseAudioの起動

○pulseaudioサービスを起動
  # systemctl start pulseaudio.service
○pulseaudioサービスを自動で起動
  # systemctl enable pulseaudio.service
○bluetoothの再起動
  # /etc/init.d/bluetooth restart
[ ok ] Restarting bluetooth (via systemctl): bluetooth.service.

(5) bluetoothスピーカへの接続

bluetoothスピーカとペアリングして接続する
# bluetoothctl #bluetoothコントロールツール
[NEW] Controller 43:43:A1:12:AA:AA rapi3 [default]

[bluetooth]# scan on #スキャン開始
Discovery started
[CHG] Controller 43:43:A1:12:AA:AA Discovering: yes
[NEW] Device 0C:A6:94:0D:ZZ:ZZ HK Onyx Studio

[bluetooth]# pair 0C:A6:94:0D:ZZ:ZZ  #Onyx Studioとペアリング
Attempting to pair with 0C:A6:94:0D:ZZ:ZZ
[CHG] Device 0C:A6:94:0D:ZZ:ZZ Connected: yes
[CHG] Device 0C:A6:94:0D:ZZ:ZZ Paired: yes
Pairing successful

[bluetooth]# connect 0C:A6:94:0D:ZZ:ZZ #Onyx Studioに接続
Attempting to connect to 0C:A6:94:0D:ZZ:ZZ
[CHG] Device 0C:A6:94:0D:ZZ:ZZ Connected: yes
Connection successful

[bluetooth]# trust 0C:A6:94:0D:ZZ:ZZ #Onyx Studioを信頼
[CHG] Device 0C:A6:94:0D:ZZ:ZZ Trusted: yes
Changing 0C:A6:94:0D:ZZ:ZZ trust succeeded

[bluetooth]# info 0C:A6:94:0D:ZZ:ZZ #Onyx Studioの接続情報
Device 0C:A6:94:0D:ZZ:ZZ
 Name: HK Onyx Studio
 Alias: HK Onyx Studio
 Class: 0x240414
 Icon: audio-card
 Paired: yes
 Trusted: yes
 Blocked: no
 Connected: yes
 LegacyPairing: no
 UUID: Audio Sink                (XXX..XXX)
 UUID: A/V Remote Control Target (XXX..XXX)
 UUID: A/V Remote Control        (XXX..XXX)
[bluetooth]# scan off #スキャン終了
Discovery stopped
[CHG] Controller 43:43:A1:12:AA:AA Discovering: no
[bluetooth]# devices #検出したデバイス
Device 08:62:66:17:XX:XX 2F_NPlayer_2nd
Device 08:62:66:17:YY:YY 1F_NPlayer_1st
Device FC:58:FA:00:ZZ:ZZ GH-OTOMO
Device 0C:A6:94:0D:ZZ:ZZ HK Onyx Studio
[bluetooth]#

[bluetooth]# quit #終了
[DEL] Controller 43:43:A1:12:AA:AA rapi3 [default]

音を出すユーザーを「pulse-access」グループに追加
# gpasswd -a root pulse-access
# gpasswd -a user pulse-access
# grep pulse-access /etc/group
pulse-access:x:117:root,user #追加されたユーザを見る

(6) mplayerでの再生例

●1 bluetoothスピーカ再生
# mplayer --ao=pulse /usr/local/etc/mdetect/Mp3/01_Beautiful_World.mp3
# mplayer --ao=pulse 01_FIGHT_WITH_LOVE.m4a
●2 ミニプラグジャック再生
# mplayer --ao=alsa /usr/local/etc/mdetect/Mp3/01_Beautiful_World.mp3
●3 MUSIC BIRDデジタル音楽放送 岡山県 コミュニティFM レディオ モモ
# mplayer --ao=pulse --cache=900 --quiet 'http://musicbird-hls.leanstream.co/musicbird/JCB079.stream/playlist.m3u8?args=web_03'


2017年8月22日火曜日

RPi_0028 samba

(1) sambaのインストール

# apt-get install samba

(2) sambaの設定

設定ファイル smb.confを変更する。
# cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org
# vi /etc/samba/smb.conf
にて、次の箇所をファイルの最後に追加する。

# diff -u /etc/samba/smb.conf.org /etc/samba/smb.conf
--- /etc/samba/smb.conf.org 2017-08-21 21:52:00.289168125 +0900
+++ /etc/samba/smb.conf 2017-08-21 21:57:37.187616391 +0900
@@ -252,3 +252,10 @@
 # to the drivers directory for these users to have write rights in it
 ;   write list = root, @lpadmin

+[mypiuser]
+path = /home/mypiuser
+read only = No
+browsable = yes
+guest ok = Yes
+force user = mypiuser

○ samba パスワードの変更
# smbpasswd -a mypiuser
New SMB password:
Retype new SMB password:
Added user mypiuser.

○ sambaを再起動させる
# /etc/init.d/samba restart
[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.
[ ok ] Restarting samba-ad-dc (via systemctl): samba-ad-dc.service.
macOSからは、Finderで、移動>サーバへ接続
サーバアドレス:smb://rapi3.local/mypiuser

windowsからは、エクスプローラから、ネットワーク
\\rapi3.local\mypiuser

とかでネットワーク越しにファイル操作できるようになる。


2017年7月30日日曜日

RPi_0027 exFATマウントdump

USBメモリに区画を作り、dumpバックアップについての説明する。

(1) exfatとdumpのインストール

WindowでもMacでも書き込めるexFATが使えるようにして、Raspbianのフルバックアップ用にdumpをインストールする。 FATについては、『FAT32、FAT16、NTFS、exFATとは何ですか。』 http://faq.buffalo.jp/app/answers/detail/a_id/1079 を参照。
# apt-get install exfat-fuse
( apt-get install exfat-utils ) #exfat-fuseで同時にインストールされる
# apt-get install dump  #restoreコマンドもインストールされる

(2) USBメモリの区画作成

USBメモリなら何でもよいと思われるが、ここではSanDisk SDDD2-016Gをラズパイに挿す。
% lsusb | head -1
Bus 001 Device 004: ID 0781:5590 SanDisk Corp. #USBメモリ認識

# 区画の状態を調べる
# コマンドとしては fdisk,cfdisk,sfdisk,parted,gpartedなどがある
# fdisk -l /dev/sda
Disk /dev/sda: 14.3 GiB, 15376000000 bytes, 30031250 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1          32 30031249 30031218 14.3G  c W95 FAT32 (LBA)
Idはcなので、W95 FAT32 (LBA) のフォーマットであるが、これを、
Idが7の、HPFS/NTFS/exFAT の フォーマットに切り直す。さらに
領域の半分は、Type Id 83 の Linuxフォーマットにする。
セクタ数30031218の半分は、
echo "(30031250-2048) / 2" | bc
の15014601 である。
# フォーマットの切り直し
# fdisk /dev/sda
Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1          32 30031249 30031218 14.3G  c W95 FAT32 (LBA)

Command (m for help): d 1
Selected partition 1
Partition 1 has been deleted.  # 区画1が削除された

Command (m for help): n  # 1つ目の新しい区画を作る
Partition type
Select (default p): p  #区画の種類はprimary
Partition number (1-4, default 1): 1
First sector (2048-30031249, default 2048):ENTERで2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-30031249, default 30031249): +15014601
Created a new partition 1 of type 'Linux' and of size 7.2 GiB.
Command (m for help): n  # 2つ目の新しい区画を作る
Partition type
Select (default p): p  #区画の種類はprimary
Partition number (2-4, default 2):ENTERで2
First sector (15015936-30031249, default 15015936):ENTERで15015936
Last sector, +sectors or +size{K,M,G,T,P} (15015936-30031249, default 30031249):
ENTERで30031249になりお尻は (0-30031249)0オリジン開始。
Created a new partition 2 of type 'Linux' and of size 7.2 GiB.

Command (m for help): p  #できた区画をみる
Disk /dev/sda: 14.3 GiB, 15376000000 bytes, 30031250 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1           2048 15015935 15013888  7.2G 83 Linux
/dev/sda2       15015936 30031249 15015314  7.2G 83 Linux
#セクター数はheads/cylindersで丸められるので、ドンピシャな同じ区画サイズにならない
#セクター数15015314-15013888=1426のサイズ差となった

Command (m for help): t  #フォーマットタイプを変更
Partition number (1,2, default 2): 1  #対象の区画は1番目
Hex code (type L to list all codes): L  #Id番号のリスト

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext’d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix
Hex code (type L to list all codes): 7  #7  HPFS/NTFS/exFAT を選択
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.
#あるいは、
Hex code (type L to list all codes): c  #c  W95 FAT32 (LBA) を選択
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

Command (m for help): p  #変更した区画をみる
Disk /dev/sda: 14.3 GiB, 15376000000 bytes, 30031250 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1           2048 15015935 15013888  7.2G  7 HPFS/NTFS/exFAT
/dev/sda2       15015936 30031249 15015314  7.2G 83 Linux

Command (m for help): w  #変更を書き込む
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

# リブートで反映されるとあるので
# reboot するか、USBメモリを抜いて、別なUSBポートに指し直す。
# partprobe がエラーにならなければOKだろう
# partprobe -s
/dev/sda: msdos partitions 1 2
/dev/mmcblk0: msdos partitions 1 2
区画ができたならば、つぎにフォーマットする
# mkfs.exfat -n exFAT_7G /dev/sda1
mkexfatfs 1.1.0
Creating... done.
Flushing... done.
File system created successfully.

もしくは、
# mkfs.vfat -v -F 32 -n FAT32_7G /dev/sda1
/dev/sda1 has 64 heads and 32 sectors per track,
(略)
Volume ID is 980b59c3, volume label FAT32_7G   .
必要ならオプション追加 -c:不良ブロックの検査を行う

# mkfs.ext4 -j -L ext4_7G /dev/sda2
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 1876914 4k blocks and 469568 inodes
Filesystem UUID: fb6e48ef-b51c-44d1-b817-71677adac421
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
フォーマットのあとマウントする
# mkdir -p /dsk/sda1; mkdir /dsk/sda2  #マウントポイント
# mount -v /dev/sda1 /dsk/sda1
FUSE exfat 1.1.0
# mount -v /dev/sda2 /dsk/sda2
mount: /dev/sda2 mounted on /dsk/sda2.

Raspbianがデスクトップ版の場合は、オートマウントされるようだ。
/dev/sda1        7506944    3872   7503072   1% /media/pi/exFAT_7G
/dev/sda2        7324192   33004   6899424   1% /media/pi/ext4_7G
マウントポイントはラベル名が使用される。

# mount|grep dsk   #マウントの状態
/dev/sda2 on /dsk/sda2 type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /dsk/sda1 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

# df -H|egrep 'Used|dsk'   #マウントの使用状況
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       7.5G   34M  7.1G   1% /dsk/sda2
/dev/sda1       7.7G  1.3M  7.7G   1% /dsk/sda1

# 取り外す前にはアンマウントする
# umount /dsk/sda1
# umount /dsk/sda2

(3) ext4区画のバックアップ

Raspbianのroot区画をフルバックアップする方法を示す。
以下の b_mmcblk0_local.sh スクリプトを/usr/local/bin/に置く。
</usr/local/bin/b_mmcblk0_local.sh>
#! /bin/bash
# $Id: b_mmcblk0_local.sh,v 1.1 2017-08-01 10:19:56+09 tsubota $
#
SEND_ADDR="MY_GMAIL@gmail.com"
FROM_ADDR="MY_GMAIL@gmail.com"

LogMailSend() {
    MDHM=`date '+%Y/%m/%d(%a) %H:%M:%S'`
    SUBJECT=$1
    MESS=$2
    logline=`echo $MDHM; echo $MESS`
    (echo "Mime-Version: 1.0"; echo "Content-Type: Text/Plain; charset=iso-2022-jp"; echo "Content-Transfer-Encoding: 7bit"; echo "Subject: $SUBJECT"; echo "To: ${SEND_ADDR}"; echo "From: ${FROM_ADDR}"; echo ""; echo "$DT" ; echo "from `hostname`"; echo "${MYCMD} Running LOG."; echo ${logline}|nkf -j) | /usr/sbin/exim4 -f ${FROM_ADDR} ${SEND_ADDR}
}
ExecMailSend() {
    MDHM=`date '+%Y/%m/%d(%a) %H:%M:%S'`
    SUBJECT=$1
    LISTFILE=$2
    LOGFILE="`pwd`/$LISTFILE"
    (echo "Mime-Version: 1.0"; echo "Content-Type: Text/Plain; charset=iso-2022-jp"; echo "Content-Transfer-Encoding: 7bit"; echo "Subject: $SUBJECT"; echo "To: ${SEND_ADDR}"; echo "From: ${FROM_ADDR}"; echo ""; echo "$DT" ; echo "from `hostname`"; echo "${MYCMD} Running LOG."; echo "LISTFILE=$LOGFILE"; nkf -j $LISTFILE) | /usr/sbin/exim4 -f ${FROM_ADDR} ${SEND_ADDR}
}

HDEV=mmcblk0p2
if [ `whoami` != "root" ]; then
    ERRMSG="User not root."
    echo $ERRMSG
    logger $ERRMSG
    exit 1
fi
MYCMD=$0
MYNM=`basename $0`
BODY=${MYNM%.sh}

RDIR=/dsk/sda2/Backup/rapi4/RootBz
if [ ! -d ${RDIR} ]; then
    ERRMSG="Not Mounted $RDIR."
    echo $ERRMSG
    LogMailSend "$MYNM FAIL1" "$ERRMSG"
    logger $ERRMSG
    exit 1
fi
cd $RDIR
if [ $? != 0 ]; then
    ERRMSG="CANNOT cd $RDIR."
    echo $ERRMSG
    logger $ERRMSG
    LogMailSend "$MYNM FAIL2" "$ERRMSG"
    exit 1
fi

YMD=`date "+%Y_%m%d"`
BDIR=${BODY}_${YMD}
if [ ! -d ${BDIR} ]; then
    mkdir -p ${BDIR}
    if [ $? != 0 ]; then
        ERRMSG="Cannot mkdir $BDIR."
 echo $ERRMSG
 logger $ERRMSG
        exit 1
    fi
fi

CLOG="${BDIR}/${HDEV}_${YMD}.log"
echo "START=`date`" | tee $CLOG
echo "----------------------------------------" | tee -a $CLOG
echo "% /sbin/fdisk -l /dev/mmcblk0" | tee -a $CLOG
/sbin/fdisk -l /dev/mmcblk0 | sed -n -e "/^Disk/,//p" | tee -a $CLOG
echo "----------------------------------------" | tee -a $CLOG
echo "% df" | tee -a $CLOG
df | tee -a $CLOG
echo "" | tee -a $CLOG
echo "" | tee -a $CLOG
echo "****************************************" | tee -a $CLOG
date | tee -a $CLOG
pwd | tee -a $CLOG
set -x
(/sbin/dump 0usf 99999 - /dev/${HDEV} | \
  bzip2 -c > ${BDIR}/${HDEV}_${YMD}.dump.bz2 ) 2>&1 | tee -a $CLOG
date | tee -a $CLOG
ls -l ${BDIR} | tee -a $CLOG
ls -lh ${BDIR} | tee -a $CLOG
md5sum ${BDIR}/${HDEV}_${YMD}.dump.bz2  | tee -a $CLOG
set +x
echo "****************************************" | tee -a $CLOG
echo "END=`date`" | tee -a $CLOG
ExecMailSend "$MYNM FINISH." "$CLOG"
exit 0

# end of b_mmcblk0_local.sh
b_mmcblk0_local.shに実行許可を与える。
たとえば、月初めに実行したいのならば、crontabに設定するとよい。
# chmod 755 /usr/local/bin/b_mmcblk0_local.sh
# vi /etc/crontab
4 2 1 * * root /usr/local/bin/b_mmcblk0_local.sh
ついたちの2時4分に起動する例。
rootで実行するよりは、/etc/groupの"disk:x:6:"の行にユーザを加えて、 ユーザモードでバックアップするのが、よりよいだろう。
復元は、
展開するディレクトリにcdしたあと、
# bzip2 -dc ABC.bz2 | restore rf - #フルリストア
# bzip2 -dc ABC.bz2 | restore ivf - #会話部分リストア
でできるだろう。

《2017.8.25追記》
restoreで、なんどやってもillegal hardware instruction restore rvf -
になってしまう。未解決。dumpファイルから復元できない。
《2017.9.6追記》
mkfs.ext4 のオプションで -L のラベルを付けなければ illegal hardware instruction にならず正常にrestoreできている。

代替えというか別な方法として、raspbianデスクトップ画面から
Raspiアイコン>Accessories>SD Card Copier
を使うことにする。
/dev/mmcblk0のp1とp2の区画をまるごと外部メディアに
バックアップしてくれる。
出力側は、自動で区画切りをしてくれて、cp -axコマンドでコピーする。
出力をUSBメモリでなく、microSDにすると起動メディアにもなる。
SD Card Copierは便利で、コピーも速い。

デスクトップSD Card Copierがないときは、
https://github.com/billw2/rpi-clone
A shell script to clone a running Raspberry Pi SD card to a USB mounted SD card.

# ./rpi-clone -h

usage: rpi-clone sdN {-v|--verbose} {-f|--force-initialize} {-s|--src-disk sdS} {-c|--cross-filesystems} {-x}
-v - list all files as they are copied.
-f - force initialize the destination partitions
-s sdS - specify sdS is the booted source disk to clone from.
Use this if the boot source auto detect from /etc/mtab fails.
Use with caution, be sure sdS is really the booted disk.
-c - cross filesystem boundaries (include mounted drives)
-x - use set -x for very verbose bash shell script debugging
...
Version 1.7.1
にて、コマンドラインから同様にバックアップできそう。


2017年7月27日木曜日

RPi_0026 TeraTerm自動ログイン

TeraTermのマクロ機能でttlマクロのアイコンをクリックすることで、一気にラズパイにsshログインする方法を示す。

(1) avahi-daemonのインストール

Avahi(アバヒ) は hostname.local という名前を使ってローカルでホスト名を解決する機能でありこれををラズパイ側にインストールする。
# apt-get install avahi-daemon
# apt-get install avahi-utils  #おまけ avahi-resolve使いたいとき
avahiが起動していることの確認
# ps ax|grep avahi|grep -v grep
  368 ?        Ss     2:01 avahi-daemon: running [rapiz.local]
  380 ?        S      0:00 avahi-daemon: chroot helper

(2) Bonjourのインストール

Bonjour印刷サービスをWindows10側にインストールする。
ダウンロード - Bonjour Print Services (Windows) - Apple Support
https://support.apple.com/kb/DL999?viewlocale=ja_JP
からダウンロードして、
Downloads/BonjourPSSetup.exe をクリックして、
「ようこそ Bonjour印刷サービス」の画面に従ってインストールを完了させる。
但しAppleのiTunesをすでにインストールしている場合やWindows10であれば、Bonjour機能はインストールされている可能性があり、先にpingしてみよう。
C:\Users>ping rapiz.local
ping 要求ではホスト rapiz.local が見つかりませんでした。ホスト名を確認してもう一度実行してください。
### pingが通らないか、
C:\Users>ping rapiz.local
rapiz.local [192.168.1.80]に ping を送信しています 32 バイトのデータ:
192.168.1.80 からの応答: バイト数 =32 時間 =12ms TTL=64
192.168.1.80 からの応答: バイト数 =32 時間 =11ms TTL=64
192.168.1.80 からの応答: バイト数 =32 時間 =10ms TTL=64
### pingが通ればBonjourはインストールされているだろう。

(3) ttlマクロファイルの編集

ttlマクロファイルの雛形が、
c:/Program Files (x86)/teraterm/ssh2login.ttlにあるので、これをデスクトップにコピーして、例えばssh2rapiz.ttl にリネームする。
c:/Users/Default/Desktop/ssh2rapiz.ttl を以下のように変更修正する。
*** c:/Program Files (x86)/teraterm/ssh2login.ttl
--- c:/Users/Default/Desktop/ssh2rapiz.ttl
@@ -6,19 +6,19 @@
 ; Update: 2004/12/4
 ; Author: Yutaka Hirata
 
-username = 'nike'
-hostname = '192.168.1.3'
+username = 'pi'
+hostname = 'rapiz.local'
+passwdfile = 'c:¥Program Files (x86)¥teraterm¥passwd_pi.dat'
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-msg = 'Enter password for user '
-strconcat msg username
-passwordbox msg 'Get password'
+getpassword passwdfile username userpasswd
 
 msg = hostname
 strconcat msg ':22 /ssh /auth=password /user='
 strconcat msg username
 strconcat msg ' /passwd='
+strconcat msg userpasswd
 strconcat msg inputstr
 
 connect msg
もし、ssh2rapiz.ttl が以下のような[M]マークアイコンになっていなければ、

teraterm-4.95.exeを再インストールして、

チェック項目の.ttlファイルをttermpro.exeに関連付ける

piユーザのパスワードは passwdfile = 'c:¥Program Files (x86)¥teraterm¥passwd_pi.dat' に保存される。このファイルが無ければパスワード入力されファイル作成され、ファイルがあればパスワードが読み出してデコードされて自動ログインのパスワードとして使用される。
bash-4.1$ cat "/cygdrive/c/Program Files (x86)/teraterm/passwd_pi.dat"
[Password]
pi=XXXXYYYYZZZZAAAABB  #エンコードされた文字列
たぶんHackingすればデコードできるんだろう。平文よりはヨシとする。

(4) ttlマクロの実行

ssh2rapiz.ttlのクリックで、TeraTerm自動ログインできる。
ログイン後の画面で、rapiz.localでの、IPアドレスの正引きと逆引きをしているようす。
pi@rapiz:~ $ ifconfig wlan0|grep "inet addr:"
          inet addr:192.168.1.80  Bcast:192.168.1.255  Mask:255.255.255.0
pi@rapiz:~ $
pi@rapiz:~ $ ping -c 2 rapiz.local|head -3
PING rapiz.local (192.168.1.80) 56(84) bytes of data.
64 bytes from rapiz.gjs.or.jp (192.168.1.80): icmp_seq=1 ttl=64 time=0.178 ms
64 bytes from rapiz.gjs.or.jp (192.168.1.80): icmp_seq=2 ttl=64 time=0.178 ms
pi@rapiz:~ $
pi@rapiz:~ $  avahi-resolve -n rapiz.local
rapiz.local     192.168.1.80
pi@rapiz:~ $
pi@rapiz:~ $ avahi-resolve -a 192.168.1.80
192.168.1.80    rapiz.local
pi@rapiz:~ $
これで、ネットワークの場所を移動するたびに、FingでラズパイのIPアドレスを調べて、TeraTerm起動しIPアドレスや、ユーザパスワードを入力していた手間が省ける。アイコンのクリック一発でログインできて、とても便利になるはずだ。

<20180127_補足追加:TeraTermのsshログイン時にログを記録版>
; $Id: sshLOG_rapi4.ttl,v 1.00 2018/01/23 13:19:50 RDH_team $
; sample macro of Tera Term
;
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic
; Update: 2004/12/4
; Author: Yutaka Hirata
;
; (参照したURL)
; 1.マクロサンプル - 自動ログイン(SSH版)Add Star (2012.12.30)
;   http://d.hatena.ne.jp/KuroNeko666/20121230/1356931071
; 2.TeraTermマクロ-MACROで設定する自動ログ取得 (2011/04/25)
;   http://www.j-oosk.com/teraterm/logging/254/

hostnam1 = 'rapi4'
hostnam2 = '.local'
hostname = hostnam1
strconcat hostname hostnam2
username = 'myname'
basedir = 'c:\Usr\TT_LOG\'
passwdfile = basedir
strconcat passwdfile 'passwd_rapi4_myname.dat'
;; ログ保存先指定 
LOGSPATH = basedir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getpassword passwdfile username userpasswd

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg userpasswd
strconcat msg inputstr

;; ⑤ログファイル名の設定
getdate LOG_NAME '_%Y%m%d_%H%M.txt'
FULLPATH = LOGSPATH 
strconcat FULLPATH hostnam1
strconcat FULLPATH LOG_NAME

;; ⑥接続 
connect msg

;; ⑦接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) 
if result <> 2 then
  ERR_MESS = 'Cannot HOST '
  strconcat ERR_MESS hostname
  messagebox ERR_MESS 'Connection Error' 
  end 
endif

;; ⑧接続判定2(接続して3秒以内にプロンプトが表示されない場合もマクロ終了) 
timeout = 3 
wait '$ ' '% ' '# '
if result = 0 then 
  ERR_MESS = 'NoResponse HOST '
  strconcat ERR_MESS hostname
  messagebox ERR_MESS 'Connection Error' 
  end 
endif

;; ⑨ログ取得開始
logopen FULLPATH 0 1
if result then
  messagebox FULLPATH 'logopen Error' 
  end 
endif
logwrite 'Log start '
logwrite FULLPATH
logwrite #13#10
logwrite '*****************************************************'#13#10
;logclose
;; ⑩ホスト名表示 
;sendln 'hostname' 
;wait '$' '#'

;; ⑪マクロ終了 
;end


2017年6月28日水曜日

RPi_0025 logwatch

(1) logwatchのインストール

# apt-get install logwatch

(2) logwatchの設定

以下の1行の設定変更だけで、前日のログがレポートされるはずである。
# vi /etc/cron.daily/00logwatch
このファイルのこの行を、
/usr/sbin/logwatch --output mail

logwatchログを受け取るメールアドレスに変更する。
/usr/sbin/logwatch --mailto GMYNAME@gmail.com

(3) logwatchの手動動作テスト

通常は、以下のcrontabにあるように、毎朝の6:25に/etc/cron.daily/00logwatchが
起動する。
# grep daily /etc/crontab
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
もし、レポートが届かないときは、
# cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
# vi /etc/logwatch/conf/logwatch.conf
にて、次の箇所を変えてみる。
# diff /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
70c70,71
< Range = yesterday
---
> #Range = yesterday
> Range = All
通常は、前日yesterdayのログでレポートされるのをAllとして、
/usr/sbin/logwatch --output stdout
にて、手動動作テストすると動作確認できる。


RPi_0024 exim4 Google設定

むかしの記事 obsA7-007 exim4でsmtp.google.comにとほぼ同じではあるが、
再度はじめからの設定をRaspberryPiで行う。

(1) まだインストールされていないことの確認

% dpkg -l exim4|grep exim4
un  exim4                        (no description available)

(2) exim4のインストール

# apt-get update
# apt-get install exim4

以下がインストールされた
Status  Name            Version             Architecture        Description
ii bsd-mailx            8.1.2-0.20141216cvs armhf  simple mail user agent
2a104,107
ii exim4                4.84.2-2+deb8u4     all    metapackage to ease Exim MTA (v4) installation
ii exim4-base           4.84.2-2+deb8u4     armhf  support files for all Exim MTA (v4) packages
ii exim4-config         4.84.2-2+deb8u4     all    configuration for the Exim MTA (v4)
ii exim4-daemon-light   4.84.2-2+deb8u4     armhf  lightweight Exim MTA (v4) daemon

systemd 経由のexim4状態を確認
# systemctl status exim4
* exim4.service - LSB: exim Mail Transport Agent
   Loaded: loaded (/etc/init.d/exim4)
   Active: active (running) since Thu 2017-06-22 09:55:30 JST; 1h 3min ago
   CGroup: /system.slice/exim4.service
           `-26851 /usr/sbin/exim4 -bd -q30m

# /var/log/syslog もあわせて表示される
Jun 22 09:55:30 rapi3 exim4[26599]: Starting MTA: exim4.
Jun 22 09:55:30 rapi3 systemd[1]: Started LSB: exim Mail Transport Agent.

# tail /var/log/exim4/mainlog の表示
2017-06-22 09:55:30 exim 4.84_2 daemon started: pid=26851, -q30m, listening for SMTP on [127.0.0.1]:25 [::1]:25
2017-06-22 09:55:30 Start queue run: pid=26852
2017-06-22 09:55:30 End queue run: pid=26852

(3) exim4のGoogleサーバ設定

# cd /etc/exim4
初期状態の.orgとの差分。dc_other_hostnames=は変更せずとも、とりあえずそのままでも。
# diff update-exim4.conf.conf.org update-exim4.conf.conf
19,20c19,20
< dc_eximconfig_configtype='local'
< dc_other_hostnames='xxxx.yyy.zz'
---
> dc_eximconfig_configtype='smarthost'
> dc_other_hostnames='DC_OTHER_HOSTNAME'
26c26
< dc_smarthost=''
---
> dc_smarthost='smtp.gmail.com::587'

#ログインパスワード設定
# diff -u passwd.client.org passwd.client
--- passwd.client.org 2017-06-14 18:59:33.000000000 +0900
+++ passwd.client 2017-06-28 17:48:38.317534388 +0900
@@ -5,3 +5,4 @@
 #
 # Example:
 ### target.mail.server.example:login:password
+*.google.com:GMYNAME@gmail.com:GPASS

#設定の反映
# /usr/sbin/update-exim4.conf

#exim4の再起動
# /etc/init.d/exim4 restart
[ ok ] Restarting exim4 (via systemctl): exim4.service.
# パーミッションの確認
# ls -l /etc/exim4/passwd.client
-rw-r----- 1 root Debian-exim 658 Jun 22 16:24 /etc/exim4/passwd.client
# 読み書きはrootユーザと、読みはDebian-eximグループになっていることをチェック。
# もし違っていれば以下でパーミッションを設定する。
# chown root:Debian-exim /etc/exim4/passwd.client
# chmod 640 /etc/exim4/passwd.client

(4) 安全性の低いアプリ

以下の [安全性の低いアプリ] の設定をおこなう。

安全性の低いアプリからのアカウントへのアクセスを変更する
https://support.google.com/accounts/answer/6010255?hl=ja
・方法 2: 安全性の低いアプリからアカウントにアクセスできるように設定を変更します。この方法はアカウントのセキュリティを脆弱にするためおすすめしませんが、やむを得ない場合には次の手順で設定を変更できます。
 1.[アカウント情報] の [安全性の低いアプリ] に移動します。
 2.[安全性の低いアプリのアクセス] の横にある [有効にする] を選択します(G Suite ユーザー向け注意: この設定は、管理者が安全性の低いアプリからのアカウントへのアクセスをロックしている場合、表示されません)。


(5) 動作テストでメール送信をする。

% export DT="TEST_exim4 `date`"
% (echo "Subject: $DT"; echo "To: TO_TEST@TO_DOM_NAME"; echo "From: GMYNAME@gmail.com"; echo ""; echo "$DT" ; echo "from `hostname`") | /usr/sbin/exim4 -v -f GMYNAME@gmail.com TO_TEST@TO_DOM_NAME

LOG: MAIN
  <= GMYNAME@gmail.com U=MYUSER P=local S=342
delivering 1dQAvV-0000wx-TU1008]
R: smarthost for TO_TEST@TO_DOM_NAME
T: remote_smtp_smarthost for TO_TEST@TO_DOM_NAME
Transport port=25 replaced by host-specific port=587
Connecting to gmail-smtp-msa.l.google.com [2404:6800:4008:c07::6c]:587 ... connected
  SMTP<< 220 smtp.gmail.com ESMTP f87sm4356539pfe.35 - gsmtp
  SMTP>> EHLO DC_OTHER_HOSTNAME
  SMTP<< 250-smtp.gmail.com at your service, [2400:1111:2222:3333:4444:5555:6666:aaaa]
         250-SIZE 35882577
         250-8BITMIME
         250-STARTTLS
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-CHUNKING
         250 SMTPUTF8
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Ready to start TLS
  SMTP>> EHLO DC_OTHER_HOSTNAME
  SMTP<< 250-smtp.gmail.com at your service, [2400:1111:2222:3333:4444:5555:6666:aaaa]
         250-SIZE 35882577
         250-8BITMIME
         250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-CHUNKING
         250 SMTPUTF8
  SMTP>> AUTH PLAIN ****************************************
  SMTP<< 235 2.7.0 Accepted
  SMTP>> MAIL FROM: SIZE=1376 AUTH=MYUSER@DC_OTHER_HOSTNAME
  SMTP>> RCPT TO:
  SMTP>> DATA
  SMTP<< 250 2.1.0 OK f87sm4356539pfe.35 - gsmtp
  SMTP<< 250 2.1.5 OK f87sm4356539pfe.35 - gsmtp
  SMTP<< 354  Go ahead f87sm4356539pfe.35 - gsmtp
  SMTP>> writing message and terminating "."
  SMTP<< 250 2.0.0 OK 1498648474 f87sm4356539pfe.35 - gsmtp
  SMTP>> QUIT
LOG: MAIN
  => TO_TEST@TO_DOM_NAME R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [2404:6800:4008:c07::6c] X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com" A=plain C="250 2.0.0 OK 1498648474 f87sm4356539pfe.35 - gsmtp"
LOG: MAIN
  Completed
上記のようなログが表示されればメール送信成功で、/var/log/exim4/mainlogには以下のようなログが記録される。
# tail -f /var/log/exim4/mainlog
2017-06-28 10:52:08 Start queue run: pid=3487
2017-06-28 10:52:08 End queue run: pid=3487
2017-06-28 11:14:29 1dQAvV-0000wx-TU <= GMYNAME@gmail.comm U=myusername P=local S=342
2017-06-28 11:14:34 1dQAvV-0000wx-TU => TO_TEST@TO_DOM_NAME R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [2404:6800:4008:c07::6c] X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com" A=plain C="250 2.0.0 OK 1498648474 f87sm4356539pfe.35 - gsmtp"
もし、失敗しているようであれば、/var/spool/exim4/input に不成功なメッセージが残るので内容を見て削除する。

(6) 内部のメール転送のための設定

/etc/aliases
  root: MYUSER
  MYUSER: GMYNAME@gmail.com

/etc/email-addresses
  MYUSER: GMYNAME@gmail.com
/usr/bin/newaliasesは、/etc/aliasesを変更したときに、変更を有効にする。


2017年6月3日土曜日

RPi_0023 win10_PL2303_teraterm

RPi_0022 USBシリアル接続
(6)シリアルポート接続(windows編)
  別記事 RPi_0011 win10_PL2303_teraterm

の記事にあたり、以下はWindows10で操作した内容。

(1)ドライバのインストール
以下の、PL2303_64bit_Installer.exeにてCOMポートが認識された。

Family Software Newsletter #37 - (Updated 4/25/16)
Prolific USB To Serial Driver Fix!
Windows 32 and 64-bit Operating Systems - Prolific PL-2303 Driver Fix (VID_067B&PID_2303)
http://www.ifamilysoftware.com/news37.htmlから、


http://www.ifamilysoftware.com/Drivers/PL2303_64bit_Installer.exe
を取ってきて、PL2303のドライバをインストールする。


(2)TeraTermのインストール
https://ja.osdn.net/projects/ttssh2/releases
から
teraterm-4.95.exe か teraterm-4.95.zip を取ってくる。

設定>シリアルポート を見て、ポートCOM3 ボーレート115200 を確認する。
設定>設定の保存をする。


Win10のTeraTermからもラズパイの起動時コンソールメッセージを確認でき、ログインも可能だ。


2017年5月31日水曜日

RPi_0022 USBシリアル接続

正常に立ち上がらないとか、期待したプロセスが起動していないとかの調査には、ブートメッセージが見たい。HDMIの表示でもよいが画面が流れてしまう。シリアル接続端末さえあれば、起動時メッセージ表示や、コンソールログインがTVモニタがない場所でもお手軽に操作できる。シリアル接続でログ記録できたりも可能だ。

Amazonで、「商品名:Raspberry Pi ラズベリーパイ用の USB-TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル」を購入した。

Amazonプライムの表示あるところから、2個購入。ひとつ385円。だったが、価格が低い商品が出品されています。新品の出品:¥181より、とさらに安いものもあった。
お届けが翌日になってて、そんなに早くこないよねと思いきや、ゆうパケットの翌日ワイドで翌日ちゃんと届いた。


Raspberry Pi3の差し込んだピン位置。外側13ピンラインの右から、2つ空けて、黒白緑の順にピンを挿した。(黒6pin:GND, 白8pin:TX, 緑10pin:RX)赤VCC[5V]は使わない。

(1)Raspberry Pi3の設定変更内容
root@rapi3:/boot# diff cmdline.txt.org cmdline.txt
1c1
< dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=cedef3be-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
---
> dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=cedef3be-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
# cmdline.txt 1行目rootwaitの後ろを削除

root@rapi3:/boot# diff config.txt.org config.txt
56a57,60
>
> ## http://akkagi.info/20161004_web/ (参照Webページ)
> dtoverlay=pi3-miniuart-bt
>
# config.txt 最後の行にpi3-miniuart-btを追加

(2)現時点のrebootコンソールメッセージ例
# メッセージ全文は Rapi3_reboot_Message.txt を参照のこと。
# 2017-04-10-raspbian-jessie.zip版
root@rapi3:/boot# reboot
[  OK  ] Started Show Plymouth Reboot Screen.
[  OK  ] Removed slice user-1000.slice.
         Stopping Permit User Sessions...
         Stopping Login Service...
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped target Network.
         Stopping dhcpcd on all interfaces...

#(たち下げ 省略)

[  OK  ] Stopped Create Static Device Nodes in /dev.
         Stopping Remount Root and Kernel File Systems...
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target Shutdown.
[  146.546572] watchdog watchdog0: watchdog did not stop!
[  146.842584] reboot: Restarting system

#(ここで再起動)

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.50-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #970 SMP Mon Feb 20 19:18:29 GMT 2017
[    0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Raspberry Pi 3 Model B Rev 1.2
[    0.000000] cma: Reserved 8 MiB at 0x3a800000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] [bcm2709_smp_init_cpus] enter (9520->f3003010)
[    0.000000] [bcm2709_smp_init_cpus] ncores=4
[    0.000000] PERCPU: Embedded 13 pages/cpu @b9f62000 s22592 r8192 d22464 u53248
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 239540
[    0.000000] Kernel command line: 8250.nr_uarts=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 dma.dmachans=0x7f35 bcm2709.boardrev=0xa32082 bcm2709.serial=0xecc73d96 bcm2709.uart_clock=48000000 smsc95xx.macaddr=B8:27:EB:C7:3D:96 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=PARTUUID=cedef3be-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 939064K/966656K available (6357K kernel code, 432K rwdata, 1716K rodata, 476K init, 764K bss, 19400K reserved, 8192K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xbb800000 - 0xff800000   (1088 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xbb000000   ( 944 MB)
[    0.000000]     modules : 0x7f000000 - 0x80000000   (  16 MB)
[    0.000000]       .text : 0x80008000 - 0x807ea73c   (8074 kB)
[    0.000000]       .init : 0x807eb000 - 0x80862000   ( 476 kB)
[    0.000000]       .data : 0x80862000 - 0x808ce350   ( 433 kB)
[    0.000000]        .bss : 0x808d1000 - 0x809901ec   ( 765 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 32.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected cp15 timer(s) running at 19.20MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000009] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000026] Switching to timer-based delay loop, resolution 52ns
[    0.000289] Console: colour dummy device 80x30
[    0.001351] console [tty1] enabled
[    0.001402] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.001471] pid_max: default: 32768 minimum: 301
[    0.001804] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.001847] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.002805] Disabling cpuset control group subsystem
[    0.002865] Initializing cgroup subsys io
[    0.002917] Initializing cgroup subsys memory
[    0.002983] Initializing cgroup subsys devices
[    0.003026] Initializing cgroup subsys freezer
[    0.003070] Initializing cgroup subsys net_cls
[    0.003141] CPU: Testing write buffer coherency: ok
[    0.003227] ftrace: allocating 21246 entries in 63 pages
[    0.051843] CPU0: update cpu_capacity 1024
[    0.051910] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.051943] [bcm2709_smp_prepare_cpus] enter

#(たち上げ 省略その1)

[    2.154465] console [ttyAMA0] enabled
[    2.160720] of_cfs_init
[    2.165326] of_cfs_init: OK
[    2.182922] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.195358] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    2.212661] devtmpfs: mounted
[    2.218599] Freeing unused kernel memory: 476K (807eb000 - 80862000)
[    2.501294] random: systemd: uninitialized urandom read (16 bytes read, 71 bits of entropy available)
[    2.519201] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[    2.538021] systemd[1]: Detected architecture 'arm'.
[    2.664486] NET: Registered protocol family 10
[    2.673050] systemd[1]: Inserted module 'ipv6'
[    2.681886] systemd[1]: Set hostname to .
[    2.689294] random: systemd: uninitialized urandom read (16 bytes read, 71 bits of entropy available)
[    2.703853] systemd[1]: Initializing machine ID from random generator.
[    2.713430] systemd[1]: Installed transient /etc/machine-id file.
[    2.794797] uart-pl011 3f201000.uart: no DMA platform data

#(たち上げ 省略その2)

[    4.288162] systemd[1]: Starting Create Static Device Nodes in /dev...
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Show Plymouth Boot Screen.
[  OK  ] Reached target Paths.
[  OK  ] Created slice system-systemd\x2drfkill.slice.
         Starting Load/Save RF Kill Switch Status of rfkill0...
[  OK  ] Started Load/Save RF Kill Switch Status of rfkill0.
[  OK  ] Created slice system-ifup.slice.
[    5.542455] systemd-fsck[210]: fsck.fat 3.0.27 (2014-11-12)
[    5.544082] systemd-fsck[210]: /dev/mmcblk0p1: 132 files, 41536/82644 clusters
[  OK  ] Started File System Check on /dev/disk/by-partuuid/cedef3be-01.
         Mounting /boot...
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.

#(たち上げ 省略その3)

[  OK  ] Started D-Bus System Message Bus.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
         Starting System Logging Service...
[  OK  ] Started Restore Sound Card State.
[  OK  ] Started dhcpcd on all interfaces.
[  OK  ] Started LSB: triggerhappy hotkey daemon.
[  OK  ] Started LSB: Autogenerate and use a swap file.
[FAILED] Failed to start LSB: Start VNC Server at boot time.
See 'systemctl status vncboot.service' for details.
[  OK  ] Reached target Network.
         Starting OpenBSD Secure Shell server...
[  OK  ] Started OpenBSD Secure Shell server.
         Starting /etc/rc.local Compatibility...
[  OK  ] Reached target Network is Online.
         Starting LSB: Start NTP daemon...
         Starting Permit User Sessions...
[  OK  ] Started Login Service.
[  OK  ] Started Permit User Sessions.
         Starting Light Display Manager...
[  OK  ] Started System Logging Service.
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started LSB: Start NTP daemon.
         Starting Terminate Plymouth Boot Screen...
         Starting Hold until boot process finishes up...

Raspbian GNU/Linux 8 rapi3 ttyAMA0

rapi3 login: root
Password: 
Last login: Wed May 31 09:17:47 JST 2017 on ttyAMA0
Linux rapi3 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@rapi3:~# date
Wed 31 May 09:19:30 JST 2017
root@rapi3:~# 



(3)起動に問題があるときは、[FAILED]が赤文字で出て分かりやすい。


% ls -l /dev/tty.usbserial
crw-rw-rw-  1 root  wheel   37,  22  5 31 14:55 /dev/tty.usbserial

% system_profiler SPUSBDataType \
    | awk '
      /Product ID:/{p=$3}
      /Vendor ID:/{v=$3}
      /Manufacturer:/{sub(/.*: /,""); m=$0}
      /Location ID:/{sub(/.*: /,""); printf("%s:%s %s (%s)\n", v, p, $0, m);}
    ' | grep 2303
0x067b:0x2303 0x14100000 / 30 (Prolific Technology Inc.)
%

このMacについて>システムレポート
▼ USB 3.0バス
  USB-Serial Controller
USB-Serial Controller:
  製品ID:  0x2303
  製造元ID:  0x067b  (Prolific Technology, Inc.)
  バージョン:  3.00
  速度:  最高12 Mb/秒
  製造元:  Prolific Technology Inc.
  場所ID:  0x14100000 / 30
  利用可能な電流(mA):  500
  必要な電流(mA):  100
  高負荷時消費電流(mA):  0

(4)macOS Sierra でこのシリアルUSBケーブルが認識されると、macOSでは上記ように見える。

チップメーカURL
http://prolificusa.com/portfolio/pl2303hx-rev-d-usb-to-serial-bridge-controller/

(5)シリアルポートからのメッセージは以下のスクリプト usb_kermit_raspi.sh で自動で記録されるようにしている。ツールは伝統的な kermit を Homebrew からインストールして使っている。
% cat /usr/local/bin/usb_kermit_raspi.sh
#!/bin/sh
set -x
YMDHM=`date '+%Y%m%d_%H%M'`
cat /Users/myname/.kermrc_raspi |\
  sed -e s/append_raspi/append_raspi_${YMDHM}/ > \
  /Users/myname/.kermrc_raspi_YMD
kermit -y /Users/myname/.kermrc_raspi_YMD

% cat /Users/myname/.kermrc_raspi
set line /dev/tty.usbserial
set speed 115200
SET CARRIER-WATCH OFF
log session /Users/myname/Usr/RaspberryPi/ConsLog/append_raspi
connect

% ls -l /usr/local/bin/kermit
... Feb  3  2015 /usr/local/bin/kermit -> ../Cellar/c-kermit/9.0.302/bin/kermit

% head -7 /Users/myname/Usr/RaspberryPi/ConsLog/append_raspi_20170531_0917

Raspbian GNU/Linux 8 rapi3 ttyAMA0

rapi3 login: root
Password:
Last login: Wed May 31 09:16:10 JST 2017 on ttyAMA0
Linux rapi3 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l

シェルスクリプトの usb_kermit_raspi.sh は、ワークファイルが2つあって不細工である。ヒアドキュメント(heredoc)でスクリプト一つで書きたかったが、動いていれば、まあいいかと、なかなか書き直せない。


(6)シリアルポート接続(windows編)
  別記事 RPi_0023 win10_PL2303_teraterm

(7)PL2303 Mac OS X Driver Download
このWebページ、
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41
を開いて、
PL2303 Mac OS X Driver Download  

Download File: PL2303_MacOSX_1.6.1_20160309.zip
 Mac OS X Universal Binary Driver v1.6.0 (PKG file format)
  For Mac OS Sierra (version 10.12)
  For Mac OS X El Capitan (version 10.11)
  For Mac OS X Yosemite (version 10.10)
  For Mac OS X Mavericks (version 10.9)
  For PL2303 H/HX/HXD/EA/RA/SA/TA/TB chip versions
  For Prolific USB VID_067B&PID_2303 Only
 Includes Driver Installation Manual
この PL2303_MacOSX_1_6_1_20160309.zip を展開してインストールでドライバはOKとなった。
% ls -l PL2303_MacOSX_1_6_1_20160309.zip
7135649 Mar  9  2016 PL2303_MacOSX_1_6_1_20160309.zip
% shasum PL2303_MacOSX_1_6_1_20160309.zip
52c3031ab1fda0b6fe58bc09c856cb6232aed782  PL2303_MacOSX_1_6_1_20160309.zip



2017年5月29日月曜日

RPi_0021 SSHクライアント

Windows版のsshクライアントはたくさんある。

ちら見でよさそうに見えたのは、
[windows ssh クライアント]でググって。

http://qiita.com/murachi1208/items/d6e4ce7ba75f1625fe51
Windowsターミナルソフト + Rlogin が最高すぎる!!

ダウンロードページ
http://nanno.dip.jp/softlib/man/rlogin/
RLoginは、Windows上で動作するターミナルソフトです。
RLogin (2.22.3) 2017/05/29

ここから rlogin_x64.zipをダウンロードして、すべて展開のあとRLogin.exeを走らせる。

起動時の初期画面

ここで、新規(N)を選ぶ

Server Edit Entry
エントリー/コメント、Server Address、User Name、Password、と
Terminal(T)は、kterm-colorとした。[OK]を押す。


さらに、表示(V) >オプション設定>スクリーン>
●フォントサイズから一行あたりの文字数を決定
初期値16(7.68) から 25(12.00)と文字を大きくした。


ファイル>サーバーに接続で、エントリーrapi3で、リモートログインできた。
※画面のコマンド lptest 80 12 は80カラム12 で表示フォントイメージの確認のため。


2017年5月27日土曜日

RPi_0020 初期設定

Raspberry PiでのRaspbian Jessie の2017-04-10版の初期設定の内容。

microSD をセットし電源投入後の、最初に行った設定処理をメモする。

Raspbianにログインするには、以下の4つの方法があるようだ。
1. HDMIディスプレイ表示(ディスプレイやUSBキーボードを接続)
2. LANケーブル接続(FingアプリやdhcpdログからIPアドレスを知る)
3. シリアルコンソール(要シリアルケーブル)
4. Pi ZeroをUSB OTGスレーブモード(要USBケーブルで設定:dwc2,g_ether)

このうち1.は一般的なHDMIケーブルとKB/MOUSEさえあれば、準備できるので簡単。
PIXEL desktopだと画面の説明が増えるので、コマンドラインからの操作説明とする。

LAN接続も/boot/sshの空ファイルがあると、sshリモートログイン可能だが、有線LANの無いモデルや、ネットワーク越しにsshできなくなったときのために、初回は、HDMIディスプレイとキーボード入力で処理しよう。

使ったKB/MOUSEは、ELECOM TK-FDM063BK で、

RasPi側のUSBポートにマイクロレシーバユニットを取り付けるだけで認識された。
$ lsusb の表示は、ID 1a81:1004 Holtek Semiconductor, Inc.

(1) 日本語キーボードの設定

# raspi-config
4 Localisation Options > I3 Change Keyboard Layout >
|Keyboard mode: Generic 105-key (Intl) PC
|Keyboard layout: Japanese
|Key to function as AltGr: The default for the keyboard layout
|Compose key: No compose key
とした。

手動での設定直しは、たとえば[rasbian keyboard 設定]とかでググるとよい。

a. キーボードの再構成

# dpkg-reconfigure keyboard-configuration
# service keyboard-setup restart

b. /etc/default/keyboard を編集

英語キーボードのとき
 /etc/default/keyboard
 XKBMODEL="pc105"
 XKBLAYOUT="us"
日本語キーボードのとき
 /etc/default/keyboard
 XKBMODEL="jp106"
 XKBLAYOUT="jp"

(2) ロケール(locale)

まずは今のロケールを見る。
% /usr/bin/localectl # 現在の設定を表示
   System Locale: LANG=en_GB.UTF-8
       VC Keymap: n/a
      X11 Layout: jp
       X11 Model: pc105
% egrep -v '^$|^#' /etc/locale.gen
en_GB.UTF-8 UTF-8
raspi-configで変更設定するのが簡単だが、関連項目も記載する。
# raspi-config
4 Localisation Options > I1 Change Locale(Set up language and regional setting)
Configuring locales
[ ] en_GB.UTF-8 UTF-8 を外して、
[*] en_US ISO-8859-1 をチェック。
[*] ja_JP.UTF-8 UTF-8 をチェック。
Default locale for the system environment: en_US とする。
# egrep -v '^$|^#' /etc/locale.gen
en_US ISO-8859-1
ja_JP.UTF-8 UTF-8
あるいは、# dpkg-reconfigure locales

4 Localisation Options > I2 Change Timezone(Set up timezone to match your locale)
Configuring tzdata
Asia > Tokyo
あるいは、# dpkg-reconfigure tzdata

# cat /etc/timezone
Asia/Tokyo
# ls -l /etc/timezone /etc/localtime
-rw-r--r-- 1 root root 333 Jun 29 11:21 /etc/localtime
-rw-r--r-- 1 root root  11 Jun 29 11:21 /etc/timezone
# cmp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
#/usr/share/zoneinfo以下のファイルが、/etc/localtimeにリンクされる。

必要に応じて、
Archのwiki を参照して、ロケールを設定する。
https://wiki.archlinuxjp.org/index.php/ロケール
man 1 locale, man 5 locale, man 7 localeなども役立つ。
 1 だれもが実行できるユーザコマンド
 5 ファイルフォーマットの説明、例 /etc/passwd
 7 その他 例:マクロパッケージや取り決め的な文書
関連項目:$ whereis locale; whatis locale

(3) ホスト名を変える

/etc/hostnameをviやnanoで編集するかもしくは、
# echo myhostname > /etc/hostname でもよい。

この変更したホスト名で*.localでアドレス指定したければAvahiや、Windowsでは、Bonjourを調べると良い。

(4) 作業ユーザーの作成

このWebページの説明がよくまとまっている。
04 Raspberry Pi 初期セキュリティ設定等
http://wings2fly.jp/yaneura/raspberry-pi-first-security-setting/
を参照して、adduser設定操作例を示す。
root@rapiz:/home/pi# adduser myname
Adding user `myname' ...
Adding new group `myname' (1001) ...
Adding new user `myname' (1001) with group `myname' ...
Creating home directory `/home/myname' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for myname
Enter the new value, or press ENTER for the default
 Full Name []: MYNAME
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] y
root@rapiz:/home/pi#

(5) ネットワークの設定

・無線LANは、以下のように設定した。
# cd /etc/wpa_supplicant
# cp -p wpa_supplicant.conf wpa_supplicant.conf.org
# wpa_passphrase SSID PASSWORD >> wpa_supplicant.conf
# cat wpa_supplicant.conf #確認
 # network={} を複数おくことが可能。

# ifdown wlan0 # wlan0インターフェイス DOWN
# ifup wlan0  # wlan0インターフェイス UP

# iwconfig wlan0 #SSID確認
# ifconfig wlan0 #IPアドレス確認

・有線LANで、固定アドレスを振りたいとき。
Debian(Raspbian)8 jessieでは、ネットワーク周りの設定は/etc/dhcpcd.confで行う。
従来の/etc/network/interfacesを編集してもdhcpcdにより上書きされるとのこと。

バージョン見方
% lsb_release -a ; cat /etc/debian_version /etc/issue

/etc/dhcpcd.confの初期状態は、
# egrep -v '^$|^#' /etc/dhcpcd.conf
hostname
clientid
persistent
option rapid_commit
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option ntp_servers
require dhcp_server_identifier
slaac private
nohook lookup-hostname


2017年5月23日火曜日

RPi_0011 win32diskimager

RPi_0010 microSDの作成
(3-1)SDカードに書き込む(windows編)
  別記事 RPi_0011 win32diskimager
の記事で、以下はWindows10で操作した内容。
の記事にあたり、以下はWindows10で操作した内容。
 尚、書き込むイメージは(macOS編)はその2Raspbian Jessie Liteを使ったが、
 ここでは、その1のRaspbian Jessie with PIXEL desktop版を例としている。
 ファイル名 2017-04-10-raspbian-jessie.img サイズ4.0GB

・Win32 Disk Imagerの入手
http://sourceforge.jp/projects/sfnet_win32diskimager/ から、
https://ja.osdn.net/projects/sfnet_win32diskimager/ へ飛んだ。
最新ダウンロードファイル
readme-buildtools.txt (日付: 2017-03-14, サイズ: 592.00 B )
diskimager_de.qm (日付: 2017-03-09, サイズ: 12.79 KB)
Win32DiskImager-1.0.0-binary.zip (日付: 2017-03-08, サイズ: 16.19 MB)
Win32DiskImager-1.0.0-src.zip (日付: 2017-03-08, サイズ: 100.79 KB)
win32diskimager-1.0.0-install.exe (日付: 2017-03-08, サイズ: 11.99 MB)

ここで、Win32DiskImager-1.0.0-binary.zip をダウンロードした。
これを展開すると、

一番したのWin32DiskImager.exeをダブルクリックする。
ほんとうに実行していいかと聞かれる。ウィルス感染したら復旧できない方は、ここでいいえ。

自己責任ではいと、答えた方は以下の画面へ進む。

1.起動画面

(1) microSDをPCに挿すと、この例では、ファイルエクスプローラーにE:が出現して、8GB容量だとそれらしい7.39GBと表示される。これが、出力側Device [E:¥]となる。
(2) 入力ファイルのImage Fileは、2017-04-10-raspbian-jessie.imgを選択する。
(3) Writeボタンを押してmicroSDに書き込み手続き。


(4)実行最終確認。Confirm Target Device E:¥。出力がmicroSD Eドライブに間違いなければYesボタンで実行する。


(5)無事に書き込み成功すると、Write Successful.と出る。4GBの書き込みに、22分41秒かかった。正常な書き込みが行われているとファイルエクスプローラーにboot(E:)が出現する。
(6)本win32diskimagerを終了させて、microSDの安全に取り外すを行って、microSDを抜く。


2017年5月20日土曜日

RPi_0010 microSDの作成

Raspberry Pi3とケースと電源アダプタが到着したので、microSDの作成から開始する。

・購入品のメモ。価格はAmazonから購入時点。
1.Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
 チップワンストップ 価格:¥5,222
2.Raspberry Pi 3 Model B ケース + ヒートシンク クリア
 KuGi 価格:¥829
3.Raspberry Pi 3 model B 専用電源 ACアダプタ 5.1V/2.5A
きばん本舗 価格:¥1,640

本家のraspberrypi.orgからRaspbianのmicroSDイメージファイルをダウンロードする。
https://www.raspberrypi.org/downloads/raspbian/

その1
|Raspbian Jessie with PIXEL
|RImage with PIXEL desktop based on Debian Jessie
|RVersion: April 2017
|RRelease date: 2017-04-10
|RKernel version: 4.4
|RSHA-1: 6d7b11bb3d64524203edf6c80c499456fb5fef53

その2
|Raspbian Jessie Lite
|RMinimal image based on Debian Jessie
|RVersion: April 2017
|RRelease date: 2017-04-10
|RKernel version: 4.4
|RSHA-1: c24a4c7dd1a5957f303193fee712d0d2c0c6372d

(1)ここではその2のRaspbian Jessie Liteをダウンロードする。

https://downloads.raspberrypi.org/raspbian_lite_latest
のページを開くと、
http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-04-10/2017-04-10-raspbian-jessie-lite.zip
が呼びだされる。

(2)macOSターミナルでのダウンロードファイルの確認と展開
% ls -l 2017-04-10-raspbian-jessie-lite.zip
 307785777  5 20 21:46 2017-04-10-raspbian-jessie-lite.zip
% ls -lh 2017-04-10-raspbian-jessie-lite.zip
      294M  5 20 21:46 2017-04-10-raspbian-jessie-lite.zip
% shasum 2017-04-10-raspbian-jessie-lite.zip   # sumチェック
c24a4c7dd1a5957f303193fee712d0d2c0c6372d  2017-04-10-raspbian-jessie-lite.zip
%
% unzip 2017-04-10-raspbian-jessie-lite.zip    # 展開
Archive:  2017-04-10-raspbian-jessie-lite.zip
  inflating: 2017-04-10-raspbian-jessie-lite.img
% ls -l 2017-04-10-raspbian-jessie-lite.img
  1297862656  4 10 18:58 2017-04-10-raspbian-jessie-lite.img
% ls -lh 2017-04-10-raspbian-jessie-lite.img    #約1.2GBの.imgが出来ている
               1.2G  4 10 18:58 2017-04-10-raspbian-jessie-lite.img

(3)SDカードに書き込む(macOS編)
# 書き込むmicroSDを取り付けると勝手にマウントされる。
# df -H
Filesystem      Size   Used  Avail   Mounted on
/dev/disk0s2    999G   635G   364G   /
devfs           201k   201k     0B   /dev
map -hosts        0B     0B     0B   /net
map auto_home     0B     0B     0B   /home
/dev/disk2s1     79M    21M    57M   /Volumes/Untitled

# Untitledボリュームをアンマウントする。
# diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

# 出力ファイル側が、microSDの /dev/disk2 であること十分確認。
# time dd bs=1m if=2017-04-10-raspbian-jessie-lite.img of=/dev/disk2
1237+1 records in
1237+1 records out
1297862656 bytes transferred in 570.426499 secs (2275250 bytes/sec)
dd bs=1m if=2017-04-10-raspbian-jessie-lite.img of=/dev/disk2  0.00s user 6.94s system 1% cpu 9:31.66 total
# 1.3GBのファイルをmicroSDに書き込むのに9分30秒かかった。

# df -H
Filesystem      Size   Used  Avail   Mounted on
/dev/disk0s2    999G   635G   364G   /
devfs           201k   201k     0B   /dev
map -hosts        0B     0B     0B   /net
map auto_home     0B     0B     0B   /home
/dev/disk2s1     42M    21M    21M   /Volumes/boot
# macOSのオートマウントでmicroSDのRaspbian bootパーティションが勝手にマウントされる。
# bootのボリュームをアンマウントして、microSDを取り外す。
# diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

# 念入りは人はさらに# df -H して /Volumes/boot がないことを確認してから、
# microSDを取り外すと良い。


(3-1)SDカードに書き込む(windows編)
  別記事 RPi_0011 win32diskimager

ここで出来たmicroSDをRaspberry Pi3の底にあるmicroSDスロットに挿す。