2018年5月2日水曜日

Volumio2をMacでSDカードに書き込みRaspberrypiで動作させる

■目的
前回SDカードをMacで初期化してみた動作確認を踏まえて一度MacからVolumio2を書き込んでみる。

■参考にさせて頂いたサイト
http://imitating.jugem.jp/?eid=5

■内容
□事前準備
・SDカードは前回初期化済みの者を利用する

□Volumio2のダウンロード
以下のサイトからOSイメージをダウンロードして解凍する
https://volumio.org/get-started/




□Volumio2 
ダウンロードしたイメージファイルをmicroSDカードに書き込みを行う
(1) MacにセットしたSDカードのデバイス名を確認する

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +121.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            99.4 GB    disk1s1
   2:                APFS Volume Preboot                 19.9 MB    disk1s2
   3:                APFS Volume Recovery                517.8 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *15.9 GB    disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:       Microsoft Basic Data RPI                     15.7 GB    disk2s2

(2) microSDカードをunmountする
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

(3) OSのイメージファイルを書き込む
作業用のディレクトリにイメージファイルを置いてcd で移動する。
今回はworkというフォルダで作業する

work mac$ ls
volumio-2.389-2018-03-26-pi.img

ここで以下のコマンドで書き込みを行うが、20分程度書き込みに時間がかかる
work mac$ sudo dd if=volumio-2.389-2018-03-26-pi.img of=/dev/disk2 bs=1m
2800+0 records in
2800+0 records out
2936012800 bytes transferred in 999.486797 secs (2937520 bytes/sec)

書き込みが終了したら listで再度確認する
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +121.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            99.4 GB    disk1s1
   2:                APFS Volume Preboot                 19.9 MB    disk1s2
   3:                APFS Volume Recovery                517.8 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk2
   1:             Windows_FAT_32 boot                    64.0 MB    disk2s1
   2:                      Linux                         2.4 GB     disk2s2
   3:                      Linux                         300.0 MB   disk2s3

(4) 書き込んだmicroSDカードをMacから取り外す
$ diskutil eject /dev/disk2
Disk /dev/disk2 ejected

■終わり
何の問題もなく正常に書き込めた。MAC標準のターミナルだけで出来たのでとても楽だった。
この後RaspberryPiにmicroSDカードを挿入し起動したところ、正常にvolumioの起動画面が表示された。

私の体験が誰かの生産性向上に役立っていただけることを祈って

RaspberryPi3にCentOS入れていたSDカードをMacで初期化する方法

■目的
RaspberryPi3にCentOSを入れていましたが、やっぱり使いにくいので一回初期化しようと思いました。

■参考にさせて頂いたサイト
https://7ka.org/raspberrypi-sd-init-mac/

■内容
フリーのソフトを使うのはダルかったのでMacにSDカードを接続し、上記サイトのやり方で初期化する

□物理的に接続
OSが入っていたmicroSDカードに下駄を履かせてSDカードのサイズにし、MACのSDカードスロットに接続

□対象のディスクを確認
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +121.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            96.1 GB    disk1s1
   2:                APFS Volume Preboot                 19.9 MB    disk1s2
   3:                APFS Volume Recovery                517.8 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk2
   1:             Windows_FAT_32 5CD3491E                314.6 MB   disk2s1
   2:                 Linux_Swap                         536.9 MB   disk2s2

   3:                      Linux                         15.1 GB    disk2s3


16Gのディスクが対象のSDカードなのでdisk2を初期化する
$ diskutil eraseDisk MS-DOS RPI disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT) with name RPI
512 bytes per physical sector
/dev/rdisk2s2: 30696064 sectors in 479626 FAT32 clusters (32768 bytes/cluster)
bps=512 spc=64 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=30703616 bspf=3748 rdcl=2 infs=1 bkbs=6
Mounting disk

Finished erase on disk2

□再度確認する
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +121.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            96.1 GB    disk1s1
   2:                APFS Volume Preboot                 19.9 MB    disk1s2
   3:                APFS Volume Recovery                517.8 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *15.9 GB    disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:       Microsoft Basic Data RPI                     15.7 GB    disk2s2


■終わり
凄い簡単・・・
この後正常に書き込めるかvolumio2をインストールしてみる。
正常に書き込めたら上記手順で正常に初期化できるのでまた初期化してみる。

私の体験が誰かの生産性向上に役立っていただけることを祈って

2017年2月11日土曜日

AWSのVPCでCisco機器とVPNを貼った時のメモ

■目的
AWSのVPCでオンプレ環境にあるCisco(CISCO1921)とVPNを貼るときに気になった事

■内容
VPC接続で一台のCiscoから2本のVPNを貼って冗長化を行なっている
トンネルの設定はAWSで自動生成されたコンフィグ
VPNが一本切れた場合、ルーティングで2本目のVPN経由にルートが変わるように設定している。
interface Tunnel1
 ip address XXX.XXX.XXX.XXX 255.255.255.252
 ip mtu 1422
 ip virtual-reassembly in
 ip tcp adjust-mss 1379
 tunnel source XXX.XXX.XXX.XXX
 tunnel mode ipsec ipv4
 tunnel destination XXX.XXX.XXX.XXX
 tunnel protection ipsec profile XXXX
!
interface Tunnel2
 ip address XXX.XXX.XXX.XXX 255.255.255.252
 ip mtu 62
 ip virtual-reassembly in
 ip tcp adjust-mss 1379
 tunnel source XXX.XXX.XXX.XXX
 tunnel mode ipsec ipv4
 tunnel destination XXX.XXX.XXX.XXX
 tunnel protection ipsec profile XXXX

 ip route AWS側のセグメント 255.255.255.0 Tunnel1 track 100
 ip route AWS側のセグメント 255.255.255.0 Tunnel2 track 200
こんな感じ

最近通信が不安定という問い合わせを受けて調べた中で気になったことを記載する。

■①VPNトンネルのBandWidthが100k/bps
トンネルのsh interface statusを確認すると

Tunnel1 is up, line protocol is up 
  Hardware is Tunnel
  Internet address is XXX.XXX.XXX.XXX
  MTU 17862 bytes, BW 100 Kbit/sec, DLY 50000 usec, 
     reliability 255/255, txload 2/255, rxload 1/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set

どうやらデフォルトで100Kbit/sec表示になるらしい。
AWS側には設定するところがないので、こちら側で設定変更させるとオートで反映されると思う。
トンネルの設定で
(config-if)#bandwidth 100000
再度設定を確認すると
  Tunnel1 is up, line protocol is up 
  Hardware is Tunnel
  Internet address is XXX.XXX.XXX.XXX
  MTU 17862 bytes, BW 100000 Kbit/sec, DLY 50000 usec, 

BandWidthが変更されている。
ただこれは本当に効いているのか、気休めなのかは謎である。

■②通信が不安定な原因
結論から言うとVPNで使用する暗号化強度が強すぎてCISCO1921では通信を流すとCPUが張り付いてしまう程の高負荷だった。

crypto ipsec transform-set XXX.XXX.XXX.XXX esp-aes 256 esp-sha256-hmac 
aes256だと負荷が高すぎたので

crypto ipsec transform-set XXX.XXX.XXX.XXX esp-aes esp-sha-hmac 
に変更したところ改善した。


■終わり
VPC側の設定ではできることに限りがあるので、オンプレ側の設定を変えたら
VPNを一回切断して再度接続することで設定が反映される。

私の体験が誰かの生産性向上に役立っていただけることを祈って

2016年10月16日日曜日

CentOS7導入したRaspberry Pi 3 の基礎設定(領域拡張・無線LAN・日本語キーボード・pip利用)

■目的
普段はubuntuで使っているラズパイ3ですが、試しにCentOS入れてスクレイピング用にpythonコードを仕込もうと思った際のメモ
Python2はデフォルトでインストールされているので使えるのですが、python3を入れようとしたのですがpyenvでの導入はうまくいかなくて諦めました。

■参考にさせて頂いたサイト
http://yomon.hatenablog.com/entry/2016/04/17/152031
http://pppurple.hatenablog.com/entry/2016/01/24/213645
http://uxmilk.jp/12691

■内容
ラズベリーパイにCentOSを入れて初期設定してみる。
こちらの方のやり方を基本忠実に実施していく。
http://yomon.hatenablog.com/entry/2016/04/17/152031

□Rootパーティションのサイズ拡張
の項目にありますが、16GのSDカードを使っているのですが最初dfで見るとroot領域が2Gしか見れないです。
root領域の拡張の仕方ですが、READMEに書いてあるやり方をするとKernel Panicで起動しなる。とありましたが私はREADMEに書いてあるやり方ですんなり拡張できました。

デフォルトのディレクトリ(/root)配下にREADMEがあり、そこに書いてある以下を実行

== CentOS 7 userland ==

If you want to automatically resize your / partition, just type the following (as root user):
touch /.rootfs-repartition
systemctl reboot

再起動後のdfで正常に認識していました。

□Wi-Fiの設定
続いてWifiを使えるようにする設定ですが、一回有線でインターネット接続できる環境にした後
同じくREADMEに書いてある以下を実行

curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/54bab3d6a6d43239c71d26464e6e10e5067ffea7/brcm80211/brcm/brcmfmac43430-sdio.bin > /usr/lib/firmware/brcm/brcmfmac43430-sdio.bin

curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/54bab3d6a6d43239c71d26464e6e10e5067ffea7/brcm80211/brcm/brcmfmac43430-sdio.txt > /usr/lib/firmware/brcm/brcmfmac43430-sdio.txt

上記実行後に念のためrebootするとwlan0が確認できたので、後は本文通り
# nmcli d wifi
-> Wifiアクセスポイントのリストが一覧されます
# nmcli d wifi connect <your_uuid> password <your_keyphrase>
# nmcli d
無線LANの設定をします。

□次に(本当は最初にやっておけばよかった)USBキーボードを日本語入力にします。
 http://qiita.com/sh1k1ya/items/c025bb4d9ca207aacaaa
 色々なサイトに記述がありますが、基本
 「localectl set-keymap jp106」
 のコマンド実行で対応できました。

 後はyum update/selinux/firewalldあたりのアップデートや設定をして基本的には使える状態になりました。

□次にpython3を動かそうと入れたかったので
 http://pppurple.hatenablog.com/entry/2016/01/24/213645
 を参考にpyenvでインストールしようと思ったところ
 pyenv install 3.5.Xが一向に終わらなかったので諦めて標準で使えるpython2でスクレイピング用のコードを書こうと思いpip installで「feedparser」を入れようと思ったのですがpipが使えませんでした。

□yum installしようとしたのですが、そもそもラズパイはARM仕様なのでepelが使えず、pipを入れることができないという仮説に行き着きました。
 そこで
 http://uxmilk.jp/12691
 に記載のある方法でpipを使えるようにしました。


■終わり
やっぱりラズパイをcentで使うメリットはあまりないかも。
ubuntuで使っていればもっと楽にセットアップできたかもしれません。
まぁいい勉強になりました。

私の体験が誰かの生産性向上に役立っていただけることを祈って

 







2016年9月4日日曜日

ios アプリをAppleの「審査へ提出」まで持っていくまでのまとめ

■目的
アプリを作るのもさることながら、Appleから公開するまでのお作法も大変だったのでまとめたいと思います。
正直自分でもよくわかっていないところや、順序など若干忘れてしまって怪しいところがありますが、ご参考までに見て頂ければと思います。

■参考にさせて頂いたサイト
http://examination-03.hatenablog.com/

■内容
前回の続きですが、Appleに12000円払った後、特にメール等は来ませんでした。
Developer CenterのAccount→membersipを確認すると


TeamIDや有効期限などが記載されていたので大丈夫なようです。
「Certificates,Identifiers&Profiles」でios Certificateをcreateしましたが、
これはやった方が良いのか今ひとつよくわかりませんでした。

ここからがApple審査までの流れを記載しますが、

■前提
・元々持ってたアカウントでxcode開発していた。
・develop用に別アカウントを作成して、こちらのアカウントで作業をしていく
・今回のアプリは無料のアプリ
・広告等も一切ない、どこかと通信することもないアプリをリリースします。

①xcodeにDeveloperアカウントを登録する
②Dev CenterにAppIDの登録 
③Deviceの登録
④itune connectの登録
 の順で進んでいきたいと思います。

①xcodeを立ち上げてxcodeメニューの「Preference」に
 ・Apple IDsという欄があるので、一つ前の記事で作成したDeveloper登録したアカウントを登録します。
  少し時間を置いて確認するとteamとrole欄が正常に反映されていると思います。

②Dev CenterにAppIDの登録 
Dev Centerにログインし、メニューから「Certificates,Identifiers&Profiles」を選択
Identifiers にて App IDs 右上の「+」
Registering an App ID
の項目を埋めていきます。

App ID Description 
name:アプリ名

App ID Prefix
これがあなたのTeam ID

App ID Suffix
Explicit App ID
Bundle ID: ここ※XcodeのInfo.Plistの「Bundle Identifier」の値と同じ文字列を入力

なんですが、通常(xxx.アプリ名)になっていると思います。
後述しますがアプリをxcodeからituneにあげるときにここが合ってないとエラーになります。
ですが私は今までdeveloperではないアカウントでアプリ開発していたので
XcodeのBundle Identifierが 例) imamade.apptest という名前でした。
developerのアカウントで進めるので 例) developer.apptest になります。
結論どうしたかというと、上記のBundle IDを
Bundle ID:apptest
xcode側のidentifierを apptest だけに変更して登録しました。
#今の段階で何言っているかわからないと思いますが、後で読み返してみてください。

□Xcodeのidentifierはここになります。ここを編集しました。
 またteamのところをこれまで使ってたアカウントからDeveloper用のアカウントに変更して作業していきます。







これで②は終了。

次に③Deviceの登録
・xcodeの①で作ったPrefarenceでdeveloperアカウントになっていることを確認
・先ほどのxcodeのidentifierでteamのところをDeveloper用のアカウントに変更
・MACにiphoneを繋いでxcodeから実機転送してみてください。
その後少し時間を置いてDev CenterのDevice欄を確認すると自動的にDeviceが登録されていると思います。

*Device登録が成功すると、App IDs等に「XC Wildcards」なるものが出現するようになった。
http://stackoverflow.com/questions/37621483/why-does-xcode-create-non-wildcard-app-ids-called-xc-wildcard
 どうやらDebag用の物なので放置することにしよう。

ここまできたら
後はitune connectとの戦いになります。

④itune connect
 
https://itunesconnect.apple.com/ にアクセス。
 Developer用のアカウントでログインする
 
  マイ APP をクリック +でアプリを追加
 
  左側のメニューを含め、ここの項目を全て埋めて審査まで持っていければゴール
 ざっくり入力項目について記載していく。
 □APP情報
  ・アプリ名の入力
  ・カテゴリなどは自身の作成したアプリのカテゴリを記載
  ・バンドルID:は注意、xcodeのidentifierと同じにする必要がある 例) apptest
  ・SKU:なんでも良いらしい。私は 例)apptest.developer とした
  ・プライバシーポリシーは無し

 □価格および配信状況
  ・私は無料アプリなので無料を選択
  ・割引無しで配信可能を選択

 □ios APP 1.0
  ・App プレビューとスクリーンショット 
   iphone用のプレビュー画像は 解像度:72 1242×2208 の縦横比で登録できました。
   ipad用のプレビュー画像は 解像度:72 2048×2732 の縦横比で登録できました。
  ・概要 :アプリの概要
  ・キーワードをカンマ区切りで何個か追加
  ・サポートURL 必須だった 自身のホームページを指定
  ・マーケティングURL 空欄

  APP 一般情報
  ・アプリのアイコン 1024×1024 のサイズで登録
  ・Versionは初回なので1.0
  ・年齢制限指定:いくつか質問されるのでそれに答えると自動的に決まる
  ・copyrightを記載
  ・後は住所・電話番号などを記載 電話番号は日本の場合+81を先頭につけます。
  ・デモアカウント:アプリでアカウントを使う場合のアカウントのようです。
  ・リリースのタイミング:自動的にリリースにしました。

 ★ビルド
  ビルド項目については、xcodeからの操作になります。
  http://examination-03.hatenablog.com/entry/2014/08/08/000000
  を参考にしながらxcodeにてアーカイブのアップロードを行います。

MacPCのxcodeメニューから以下のように遷移
・Product → Scheme → Edit Scheme を選択
 
・Schemeの設定画面が表示されるので、
 Build Configration を Release に変更  ←アップロード終わったら後で元のdebugに戻しておきました。

・xcode上部にてDeviceが「iOS Device」に設定

・メニューから以下のように遷移
 product → Archive を選択
 
・ビルドが完了すると Organizer が自動で開き Archive したアプリが表示される
 Validate をクリック

・Provisioning Profile を選択
 Validate ボタンをクリック

※ここで失敗する場合、iTunes Connect内で入力したアプリのバージョン番号と、Xcode上のバージョンが異なる可能性があります。
もう一つのパターンがidentifierの不一致になります。
ここで上を思い出してください。 私はこれでハマりました。
xcodeのidentifierとDev CenterのAPP IDsで登録したidentifierを揃えてください。

・ここまできたらitune Appにアップロードボタンを押してアプリをアップロードしましょう。
成功すると以下のようになります。


この後数分間待ちましょう。
数分たったらitune connectに再度アクセスするとアクティビティメニュー欄にuploadしたアプリが表示されていると思います。

ios APP 1.0 項目のビルド欄に行きましょう。
+が追加されていると思いますのでそこからアプリを選びましょう。

これで大体一通りitune connect上の入力項目が埋まったのではないかなと思います。
それでは保存して「審査へ提出」を行いましょう。

■終わり
ちょっと誤解がありそうな表現ですが、自分で一回やってみて思ったのは

itune connect ← アプリ提出に必要な情報を纏める。
   ⇅
 Dev center  ←アプリ、端末、開発ライセンスを管理している
   ⇅
     xcode   ←どのアカウントで開発するのか

みたいな理解で覚えておこうと思いました。

私の体験が誰かの生産性向上に役立っていただけることを祈って