[FreeNAS]コマンド

インストール(9.3 stable 201602031011)


OSインストール用HDDは1本 (他のHDDはデータ用に)
rootパスワードを設定
インストール後、再起動 (このすきにDVDを外す)
再起動すると、なんだかよくわからない暗号みたいな画面が長く続く。
一度Ctrl-Cで強制終了したら、表示された?IPへアクセスしてWeb GUIへログイン出来たが、そもそもGUIがバグっていて、先に進めない。
再起動して、今度はさっきの暗号画面を我慢して待つ。
終わると、Web GUIへログイン出来た。正常。

Group、Userを追加。
Storage > HDD 3本でStriping設定。Volumeを作った。
Sharingメニュ > Windows > 設定メニュで先ほど作ったVolumeを指定。
CIFSでアクセス出来るようになった。
スポンサーサイト

[Windows]プロダクトキー確認

OSインストール後は、コントロールパネル > システムでもキーが見れない。
プロダクトIDとプロダクトキーは違うもの。

http://www.atmarkit.co.jp/ait/articles/0907/10/news112.html

ここを参考に確認してみる。

末尾5ケタだけの確認ならコマンドプロンプトでできる

コマンドプロンプト > slmgr -dlv > ウィンドウ開く > プロダクトキーの一部、という箇所に記載


フルキー確認ならWindowsProductKey

http://www.rjlsoftware.com/software/utility/winproductkey/download.shtml

Compressed .ZIP File > winproductkey.zip をダウンロード(現時点v1.07)
  > 解凍 > winproductkey.exe を実行 > ウィンドウが起動し、Windows Product Key、に記載。

[Ubuntu]トラブルシューティング

apt update実行時のE: Sub-process returned an error code

Ubuntu 16.04 LTS
OSインストール直後、以下実行するとエラー。

$ sudo apt update
...
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code



https://sekisuiseien.com/computer/10530/

こちらを参考にさせて頂き、以下を実行

# cd /tmp
# mkdir asfix
# cd asfix
# wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
# wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
# sudo dpkg -i *.deb



再度実行してみると成功した。

# apt update

アップグレードできるパッケージが678個あります。xxxx

[python]コマンド

requests HTTPライブラリ

import requests
target_url = 'http://tech.nikkeibp.co.jp/'
res = requests.get(target_url)



# GET
requests.get('URL')
# POST
requests.post('URL')
# PUT
requests.put('URL')
# DELETE
requests.delete('URL')
# header の取得
requests.head('URL')





Jupyterインストール

Windowsキー > anacon・・ とタイプ > Anaconda Promptを起動
 > pip install msgpack
 > pip install jupyter



seleniumインストール

Windowsキー > anacon・・ とタイプ > Anaconda Promptを起動
 > pip install selenium


[GIT]運用

ローカル環境構築 ~ リモートへのpushまで

・githubへアカウントを作る。

・github上でレポジトリを作る。
 > 名前を決める。
 > publicにする(privateはコストかかるから)
 > initialize by READMEのチェックは外す

・ローカルPCでCygwinを起動。

・あるフォルダ以下で
git init
を実行。

・ローカルレポジトリにファイルをaddする。
git add a.txt

・ローカルレポジトリのファイルをcommitする。
git commit -m "hoge"

・登録したgithubレポジトリを、リモートレポジトリとしてoriginに登録する。
git remote add origin https://github.com/xxxx/yyyy.git
※ 最初にこれで登録したレポジトリから別のレポジトリにしようとしたら、
fatal: remote origin already exists.

・この場合は、
git remote rm origin
でoriginの登録を削除してから、再度
git remote add origin https://github.com/xxxx/yyyy.git
とすると成功する。

・そうしたらローカルのファイルをリモートにpushする。
git push origin master
そもそも、さっきのコマンドで登録せずに、以下で直接指定してもOK。でも面倒だよね。
git push https://github.com/xxxx/yyyy.git master




リモートブランチをローカルにクローン

・レポジトリも初期化してない環境で、リモートのレポジトリをコピーして作業始めるには以下コマンド。
git clone https://github.com/xxxx/yyyy.git
これでレポジトリがコピーされたので、作業していけばいい。



ブランチ方針

master
develop
hotfix

[PC]NAS

IODATA HDL-GT1.6の調子が悪い。
突然HDDを認識しなくなったので、HDD換装してみた。

内蔵HDD: SAMSUNG 400GB
新規HDD: 東芝 DT01ACA050 500GB

手順:
接続を見直したら、何とか正常起動したので、この間に、
4本中1本をぶっこ抜く。
 > それでもRAID5なので動作してる。

新規HDDは過去パーティションなどいじってたので、
別のLinux PCで、fdiskで以下を実施。
 > パーティションを全て削除
 > 新規にPrimaryパーティションを作る。(全容量含む)
 > System ID = 83のまま、wでsyncして終了。

新規HDDをNASへ挿入。
 > これでリビルドが始まる(だいたい10hくらいで完了かな?)

リビルド完了したら、これで1本の換装が完了になるので、同じ作業を残り3本分繰り返す。


現在、4本目のリビルド中だが、3本の状態で1.2TBと表示されてる。
つまり500GBの容量を全て使えておらず、元の400GB分だけリビルドされたみたい。
容量全て使うための手順はまだ調べてない。

[PC]X1マルチモニタ

マルチモニタをやってみる。

■使った機材

ホスト: Lenovo X1 carbon
OS: Windows 10 Pro 64bit
グラフィックアダプタ: VGA-USB3.0/HDMI
USBハブ: USB-HVM4155V


■構成

画面1: X1本体
画面2: X1のHDMI出力 > モニタ
画面3: X1のminiDP出力 > miniDP to HDMI変換アダプタ > モニタ
画面4: X1のUSB > USB-HVM4155V > VGA-USB3.0/HDMI > モニタ

VGA-USB3.0/HDMIがUSBハブ経由で動いたので、x1にあと1つUSBポートあるし、
5画面まではいけそうだ。

■VGA-USB3.0/HDMI Win10ドライバ
http://www.kuroutoshikou.com/product/multimedia/peripherals/vga-usb3_0_hdmi/
このページの「Win8.1ドライバ」からドライバ入手。(vga-usb3.0_win8.1driver.zip)

解凍して実行すると、既に最新バージョンが入ってる、と言われた。
おそらく過去にASUS MB16Bを接続して使ってたので、そのドライバが同じだったみたい。
X1をシャットダウンして、VGA-USB3.0/HDMI接続してからX1起動したら、無事動作。

[GIT]スタートアップ

スタートアップ

ここを参考にさせて頂いた。
https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000#Git%E3%81%A8GitHub%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98

Cygwin64にgitをインストール > setup.exeからdevel/gitのみ追加。

# git config --global user.name "ユーザー名"
# git config --global user.email "メールアドレス"
# git config --list


# ssh-keygen -t rsa -b 4096 -C "hoge@gmail.com"
生成場所デフォルト
パスフレーズあり

/home/bob/.ssh/id_rsa
/home/bob/.ssh/id_rsa.pub
が生成された。


なかったので新規作成する。
# vi /home/bob/.ssh/config

Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa




次にgithubアカウントを登録。
https://github.com/
最後に登録emailへVerify依頼が来るので対応。

githubへログイン > 練習用のtestレポジトリを作成。
 > 右上のプロフィールメニュー > Settings
 > 左側のSSH and GPG keys
 > New SSH Key
 > 枠へ、先程生成した公開鍵(id_rsa.pub)をコピペして登録。

Windows上Cygwin64 > ssh github

The authenticity of host 'github.com (192.30.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.xxx.xxx' (RSA) to the list of known hosts.
Enter passphrase for key '/home/bob/.ssh/id_rsa':
PTY allocation request failed on channel 0
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.



[Windows]コマンド

Zabbixエージェントインストール

ここを参照にさせて頂く。
https://qiita.com/k7tak29/items/3b3453db40672e632c11


https://www.zabbix.com/jp/download_agents
ここから以下をダウンロード。
Zabbix 3.4 3.4.6 Windows (All) i386,amd64

以下がダウンロードされるので、解凍する。
zabbix_agents_3.4.6.win.zip


confファイルを以下のように編集する。
C:\user\app\zabbix_agents_3.4.6.win\conf\zabbix_agentd.win.conf

LogFile=c:\user\app\zabbix_agents_3.4.6.win\zabbix_agentd.log
Server=192.168.10.110
ServerActive=192.168.10.110:10051
#Hostname=Windows host > コメントアウトする
HostnameItem=system.hostname
HostMetadata=Windows




[PC]KURO-DACHI/CLONE/U3

x230のSSDが死んだ。
以前別のSSDに作っておいたWindows環境で稼働中。
また死ぬかもしれないので、複製SSDを作っておく。

KURO-DACHI/CLONE/U3の使い方

HDD1にマスターSSD、HDD2に複製先のSSDを装着。
電源をON > この時、左から2番目のPowerだけオレンジ色に点灯
 ※ LEDは左から、Link、Power、HDD1、HDD2の4つ。
Cloneボタンを長押し。
3秒ほど押すと、LEDが左から順番に点滅していく。 > これがコピー完了25%未満の状態
25%コピーが終わると、一番左のLinkだけ点灯しっぱなし。他3つは順番に点滅。

詳しい説明が以下にある。(今回参考にさせて頂きました)
https://pcmanabu.com/%e3%83%ad%e3%82%b8%e3%83%86%e3%83%83%e3%82%af-%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%b9%e3%82%ad%e3%83%83%e3%83%97%e6%a9%9f%e8%83%bd%e6%90%ad%e8%bc%89%e3%83%87%e3%83%a5%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc/#i-5

クローン化が完了すると、4つのLEDが同時に点滅してた。
クローンされたSSDの方でWindows 10を起動してみたら、以下メッセージ。

問題が発生したため、PCを再起動する必要があります。
エラー情報を収集しています。自動的に再起動します。

80%完了

この問題と可能な解決方法の詳細については、https://www.xxxxxx
deを参照してください。

サポート担当者に連絡する場合は、この情報を伝えてください:
停止コード: MEMORY MANAGEMENT



そのまま放置したら自動的に再起動されて、Windows 10が起動した。
ログインもできた。

続けて元のマスターSSDでも起動出来て、ログインも出来た。
これでもし故障してもすぐにリカバリできる。

[Android]メモ

M01ファイル保存場所

スクリーンショット: /mnt/sdcard/Pictures/Screenshot
カメラ: /mnt/sdcard/DCIM/Camera
ダウンロード: /mnt/sdcard/Download
EasyVoiceRecorder: /mnt/sdcard/EasyVoiceRecorder

メモ帳: 


JDN-W09ファイル保存場所

Bluetooth経由: /mnt/ext_sdcard/bluetooth

[PC]SDカード故障(Transcend)

Transcend MicroSDXCカード64GB(Premium 300x)が故障した。
確かこれ。
https://www.amazon.co.jp/%E3%80%90Amazon-co-jp%E9%99%90%E5%AE%9A%E3%80%91Transcend-microSDXC%E3%82%AB%E3%83%BC%E3%83%89-Class10-UHS-I%E5%AF%BE%E5%BF%9C-TS64GUSDU1E/dp/B00CHHTOII

確か永久保証だったな。

[PC]BTイヤホン破損

LBT-HS400のイヤホンフックが割れた。
Amazonで類似品を購入。
尚、オリジナルのフックの装着部の輪っかの幅は7mmだった。

[Windows]ansible

ホスト: x1 Windows 10 64bit

参考にさせて頂きました。
https://qiita.com/t_nakayama0714/items/fe55ee56d6446f67113c


環境構築 ~ Ansible立上げ

Vgrantのインストール。以下からWindows 64bit版をダウンロード。
https://www.vagrantup.com/downloads.html

VirtualBoxをインストール。
https://www.virtualbox.org/wiki/Downloads
VirtualBox 5.2.12 platform packages
Windows hosts
ここからWindows版をダウンロード。

DOSプロンプトを開く。以下DOSプロンプト(もしくはTeraTerm)での操作は#で示す。
# c/user/work/vagrant へ移動
# mkdir vagrant
# cd vagrant
# vagrant init

生成されたvagrantfileを以下の通り編集。

Vagrant.configure(2) do |config|
config.vm.define "controller" do |node|
node.vm.box = "centos7.2"
node.vm.hostname = "controller"
node.vm.network :private_network, ip: "192.168.100.10"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210
end
config.vm.define "target" do |node|
node.vm.box = "centos7.2"
node.vm.hostname = "target"
node.vm.network :private_network, ip: "192.168.100.20"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
end
end



参照先では以下URLだったが存在しない。
# vagrant box add centos6.7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

紹介先のURL
http://www.vagrantbox.es/
から選ぶ。
今回は以下のデータを使う事にする。

CentOS 7.2 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)



# vagrant box add centos7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

# vagrant up

Bringing machine 'controller' up with 'virtualbox' provider...
Bringing machine 'target' up with 'virtualbox' provider...
 :


現状のVMステータス確認。
# vagrant status

Current machine states:

controller running (virtualbox)
target running (virtualbox)




TeraTermを使って以下にログイン。確かにログイン出来た。

IP = localhost
port = 2210
user = root
Pass = vagrant



# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)



# uname -r

3.10.0-327.4.5.el7.x86_64



# yum -y install ansible

# ansible --version

ansible 2.5.2
 :
python version = 2.7.5 (default, Nov 20 2015, 02:00:19) xxxx



# ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): > パスフレーズ無しなので、そのままEnter
Enter same passphrase again: > 同上
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx: root@controller
The key's randomart image is:



AnsibleコントローラからターゲットにSSHでログインできるようにするため、公開鍵を送り込む、だそうだ。
# ssh-copy-id root@192.168.100.20

The authenticity of host '192.168.100.20 (192.168.100.20)' can't be established.
ECDSA key fingerprint is xxxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.100.20's password: > vagrantを入力

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@192.168.100.20'"
and check to make sure that only the key(s) you wanted were added.



これで送れたのか?

次に疎通確認。
# ansible all -i inventory/hosts -m ping

192.168.100.20 | SUCCESS => {
"changed": false,
"ping": "pong"
}



上記では先のinventoryファイル中にある全て(all)のホストに対してpingモジュールで疎通確認をしてる、だって。
結果は、[ホスト] | [結果] >> [メッセージ] と表示されるそうだ。



playbookを試す

/root/ansible/group_vars/targets.yml を作る。

message: "Hello Ansible ! ! !"

fruits:
apples:
amount: 10
bananas:
amount: 20
oranges:
amount: 30




/root/ansible/test.yml を作る。

- hosts: targets
user: root
tasks:
- name: output message.
debug: msg="{{ message }}"

- name: output fruits
debug: msg="We want {{ item.value.amount }} {{ item.key }} !"
with_dict: "{{ fruits }}"




# ansible-playbook -i inventory/hosts test.yml


PLAY [targets] *********************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************
ok: [192.168.100.20]

TASK [output message.] *************************************************************************************************************************************************
ok: [192.168.100.20] => {
"msg": "Hello Ansible ! ! !"
}

TASK [output fruits] ***************************************************************************************************************************************************
ok: [192.168.100.20] => (item=None) => {
"msg": "We want 10 apples !"
}
ok: [192.168.100.20] => (item=None) => {
"msg": "We want 30 oranges !"
}
ok: [192.168.100.20] => (item=None) => {
"msg": "We want 20 bananas !"
}

PLAY RECAP *************************************************************************************************************************************************************
192.168.100.20 : ok=3 changed=0 unreachable=0 failed=0

[Ubuntu]コマンド

バージョン確認

# cat /etc/os-release


rootパスワード設定

VMware上の簡易インストールだと、rootパスワード設定はされてないようで、
以下で設定出来る。

# sudo passwd root
[sudo] password for <user名>  > 現ユーザのパスワードを入力
Enter new UNIX password:     > rootパスワード設定
Retype new UNIX password:    > rootパスワード再入力
passwd: password updated successfully

# su
これでrootになれる。


E: ロック /var/lib/dpkg/lock が取得できませんでした

# apt-get install apt-transport-https ca-certificates
E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?

# rm /var/lib/apt/lists/lock
# rm /var/lib/dpkg/lock

# apt-get install apt-transport-https ca-certificates
E: dpkg は中断されました。問題を修正するには 'dpkg --configure -a' を手動で実行する必要があります。

# dpkg --configure -a
 :
python3-louis (2.6.4-2ubuntu0.1) を設定しています ...
dpkg: 復旧不可能な致命的なエラーです。中止します:
更新した `python3-louis' のステータスをインストールできません: そのようなファイルやディレクトリはありません

なんかエラーで終わったけど、再度やってみたら成功したっぽい。
# apt-get install apt-transport-https ca-certificates



dockerインストール

# apt-get install apt-transport-https ca-certificates
 ※ 上記の対処法でインストール

# apt-key adv \
--keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D


16.04用のコマンド。
# echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

# apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

# apt-get update
 ※ これやらないと、次のdocker-engineインストールで、無いって言われる。

# apt-get install docker-engine

# service docker start

# docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
 :
Hello from Docker!
This message shows that your installation appears to be working correctly.
 :
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
 :



dockerのソケットファイルへのアクセスは、rootかdocker groupである必要があるとのこと。
# usermod -aG docker bob

# systemctl enable docker

アップデートはこうやるらしい。
# apt-get update
# apt-get upgrade docker-engine



E: Problem executing scripts APT::Update::Post-Invoke-Success

Host : Windows 10 64bit
VM host: VMware Player 7.1.2 build-2780323
VM-Machine : Ubuntu 16.04LTS

# apt-get update
これをやると、上記エラーが出る。

調べると、バグらしい。
https://sekisuiseien.com/computer/10530/
https://bugs.launchpad.net/ubuntu/+source/appstream/+bug/1579712/comments/24

以下やってから再度updateしたら、確かにエラー消えた。

cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i *.deb





OpenStack Ocataインストール

Server-worldさんの通りに進む。
https://www.server-world.info/query?os=Ubuntu_16.04&p=openstack_ocata&f=1



ZoneMinderインストール(Ubuntu 16.04 LTS)断念!!

https://wiki.zoneminder.com/Ubuntu_Server_16.04_64-bit_with_Zoneminder_1.30.4_the_easy_way

# apt update
# apt upgrade
# apt dist-upgrade
# cd /etc/mysql/
# mv my.cnf my.cnf.org
# cp -iprL /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
# vi my.cnf

[mysqld]
sql_mode = NO_ENGINE_SUBSTITUTION > 追加



# systemctl restart mysql
# mysql_secure_installation

Remove anonymous users? : y
Disallow root login remotely? : y
Remove test database and access to it? : y
Reload priviledge tables now? : y



# add-apt-repository ppa:iconnor/zoneminder
# apt update
# apt install zoneminder

unreadahead (0.100.0-19)のトリガを処理しています
処理中にエラーが発生しました:
zoneminder
E: Sub-process /usr/bin/dpkg returned an error code (1)



https://forums.zoneminder.com/viewtopic.php?t=26494
ここで同じ問題のコメントを発見。
mysqlコンソールでuninstall plugin validate_password;をやれと言ってる。

# mysql -u root -p
 > 先ほどmysql_secure_installation実行時に設定したパスワードでログイン。
mysql> uninstall plugin validate_password;
mysql> exit


再度インストールしてみる。
# apt install zoneminder

dpkg: パッケージzoneminderの処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みのpost-installation スクリプト はエラー終了ステータス255を返しました
処理中にエラーが発生しました:
zoneminder
E: Sub-process /usr/bin/dpkg returned an error code (1)



またエラーだけど、このインストール手順やる前に、既にzoneminderインストールは別にやってたので、
既に入ってる、というメッセージが出てる。単にインストール済みだからエラーなだけかな?
先に進んでみる。

# adduser www-data video
# a2enmod cgi
# a2enconf zoneminder
# a2enmod rewrite
# chown -R www-data:www-data /usr/share/zoneminder/
# systemctl enable zoneminder
# service zoneminder start

ここでFAILとなる。
なんかzoneminderが正常にインストール出来てないように思える。

# apt-get install zoneminder
以下はどこかでコピーしたものだけど、こんな感じのエラーが出る。
Access denied for user 'zmuser'@'localhost' (using password: YES)

そもそもmysqlでzmuserなど設定してないが、以下で宣言されている。
# vi /etc/zm/zm.conf

ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass



# mysql -u zmuser -p
これでzmpassを入力してもログイン出来ない。
って事はzmuserにパスワードが正しく設定されてない事が原因か?

# mysql -u root -p
まずはrootでログイン

mysql> set password for zmuser@"localhost"=password('zmpass');
これでパスワード設定出来た。

再度インストールしてみる。
# apt-get install zoneminder

zoneminder (1.30.4-xenial1) を設定しています ...
Use of uninitialized value SConfig{"ZM_DIR_EVENTS"} in pattern match (m//) at /usr/bin/zmupdate.pl line 81.
Use of uninitialized value in concatenation (.) or string at /usr/bin/zmupdate.pl line 81.
Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/ZoneMinder/Logger.pm line 154.
Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/ZoneMinder/Logger.pm line 199.
Please give a valid option
Usage:
zmupdate.pl -c, --check | -f, --freshen | -v, --version= [-u -p]

Options:
 :
dpkg: パッケージ zoneminder の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installationスクリプト はエラー終了ステータス 255を返しました
処理中にエラーが発生しました:
zoneminder
E: Sub-process /usr/bin/dpkg returned an error code (1)





ZoneMinderインストール(Ubuntu 18.04 LTS)

https://bkjaya.wordpress.com/2018/05/22/how-to-install-zoneminder-v1-31-44-on-ubuntu-18-04-lts/

Ubuntu 18.04 ja desktop amd64をnormalパッケージでクリーンインストール。
nmtuiで固定IPを設定し、リンクアップ成功

# sudo passwd root
rootパスワード設定完了。

# su
rootへ

# add-apt-repository ppa:iconnor/zoneminder-master
# apt-get update
# apt install zoneminder

# cd /etc/mysql/
# mv my.cnf my.cnf.org
# cp -iprL /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
# vi my.cnf

32行目に以下追加
user = mysql
sql_mode = NO_ENGINE_SUBSTITUTION > この行を追加



# systemctl restart mysql
# mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
Enter password: > rootパスワード入力
# mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
Enter password: > rootパスワード入力

# mysqladmin -uroot -p reload
# chmod 740 /etc/zm/zm.conf
# chown root:www-data /etc/zm/zm.conf
# adduser www-data video
# a2enmod cgi
# a2enconf zoneminder
# a2enmod rewrite
# chown -R www-data:www-data /usr/share/zoneminder/
# systemctl enable zoneminder
# systemctl start zoneminder

# vi /etc/php/7.2/apache2/php.ini

939行目のdate.timezoneを設定する。
; http://php.net/date.timezone
date.timezone = Asia/Tokyo > コメントアウトを外し、Asia/Tokyoを記載



ブログの説明に従い、
Download the latest cambozola and extract to the Downloads directory
となっている「cambozola」のリンク先:
http://www.andywilcock.com/code/cambozola/cambozola-latest.zip
へUbuntuからアクセスして、ダウンロードする。

それを、以下へ移動。
# mv /home/bob/Downloads/cambozola-latest.zip /usr/share/zoneminder/www/
# unzip cambozola-latest.zip
# cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder/www/

ブログではこのコマンド無いが、apache2をまだ起動してないと思うため。
# systemctl start apache2

ここでUbuntu上のブラウザからlocalhostへアクセスすると、
Apache2 Ubuntu Default Page
が表示される。
しかし、ブログで説明されてる localhost/zm/は開けない。

もしやブログの記載と違うtimezoneの設定??
# vi /etc/php/7.2/apache2/php.ini
date.timezone = Asia/Colombo > 関係ないと思うがブログの通りに修正。

# systemctl restart zoneminder
これでもlocalhost/zmは開けない。

いろいろ調べた結果、これやった。
# systemctl restart apache2
この後ブラウザでlocalhost/zm/ へアクセスしたら、ZM-Consoleが開けた。
timezoneをAsia/Tokyoに戻しても開けたので、timezoneは関係なく、
ZoneMinderを再起動してからApache2を再起動したかったのが原因かな。

[CentOS]コマンド3

NASをCIFSマウントする

CentOS = 7.4.1708
NAS = TS-HTGL836

NAS > 管理画面へログイン > 共有フォルダ管理 > 共有フォルダの追加
  > 共有フォルダ名=share、後はdefault(アクセス制限機能=使用しない)

CentOSから以下コマンド。確かにマウント出来た。
# mount -t cifs -o user=admin //192.168.xxx.yyy/share /mnt/TS
# df
//192.168.xxx.yyy/share xxxx xxx xxxx /mnt/TS



NASへのバックアップをバッチ化

ホスト = CentOS 7.4.1708
NAS = TeraStation (あらかじめ、アクセス制限OFFにしたshareフォルダを作っておく)

# hogeフォルダ内をtar.gzに固める。ファイル名はdateコマンドから自動的に日付を付与。
tar zcvf /root/backup_`/bin/date +%y%m%d%H%M`.tar.gz hoge/*

# NASのshareフォルダへ、backup_*.tar.gzで、複数ファイルがあってもコピーする。
/usr/bin/smbclient //192.168.xxx.yyy/share password -U admin -c "prompt; mput backup_*.tar.gz"



# hogeフォルダ内のファイルも含めてNASのshareフォルダへコピーする。
/usr/bin/smbclient //192.168.xxx.yyy/share password -U admin -c "prompt; recurse; mput hoge"
 ※ ただし、/home/samba/os とファイルサイズが大きい?フォルダを選んだら、実行は出来たがコピーされない。なぜ?





Openstack PackstackによるOpenStack Queensインストール

Host : Windows 10 64bit
VM host : CentOS 7.xx

[Windows]FastCopyバッチ化

FastCopy > ジョブ管理 > ジョブ追加/更新/削除 > これでジョブに名前を付ける。

FastCopy.ini の titleの処に、上記で設定したジョブ名がある。これを後で使う。

バッチファイルを作る。ジョブ名は/jobの後に書く。

taskkill /im FastCopy.exe /F
start "" /b "C:\user\app\FastCopy211_x64\FastCopy.exe" /job="user__x1_to_z68 " /force_close



タスクを作成
 コントロールパネル > 管理ツール > タスクスケジューラ
  > タスクスケジューラライブラリ > 右クリック
  > 基本タスクの作成
  > 名前 = xxx > 次へ
  > トリガー = 毎日、時間設定 > 次へ
  > 操作 = プログラムの開始 > 先ほど作成したバッチファイルを参照 > 次へ
  > 完了

[Quartus]HPS(atlas-soc)

環境

ホストPC: x230 win10 home 64bit
Quartus: 17.1.0 build 590
評価ボード: atlas-soc


atlas-soc用にCyclone Vデバイスデータをダウンロード

QuartusへCyclone Vデバイスをインストール。


Quartusプロジェクト作成


Platform DesignerでHPSシステム作る

Cyclone Vデバイスをインストールしてないと、以下が選べない。
Platform Designer > IP Catalog > Processor and peripheral > Hard Processor System
 > Arria V/Cyclone V Processor System

[Quartus]NiosII(DE0-nano)

環境

評価ボード: DE0-nano
ホストPC: x230 Windows 10 Home 64bit
Quartus Prime: 17.1.0 Build 590 10/25/2017


qsfファイルでピン配置設定

set_global_assignment -name TOP_LEVEL_ENTITY led_top
set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE22F17C6
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85

#============================================================
# CLOCK
#============================================================
set_location_assignment PIN_R8 -to clk
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk

#============================================================
# LED
#============================================================
set_location_assignment PIN_A15 -to led_out[0]
set_location_assignment PIN_A13 -to led_out[1]
set_location_assignment PIN_B13 -to led_out[2]
set_location_assignment PIN_A11 -to led_out[3]
set_location_assignment PIN_D1 -to led_out[4]
set_location_assignment PIN_F3 -to led_out[5]
set_location_assignment PIN_B1 -to led_out[6]
set_location_assignment PIN_L3 -to led_out[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to led_out[7]

#============================================================
# KEY
#============================================================
# KEY1
set_location_assignment PIN_E1 -to reset
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to reset




sdcでタイミング制約

create_clock -period 20 [get_ports clk]
derive_pll_clocks





回路トップを作る

LED 4bitは、HWカウンタ出力。(ハードウェア動作確認用)
LED 3bitは、NiosからのPIO出力。(ソフトウェア動作確認用)
LED 1bitは、reset入力をそのままスルー出力。

module led_top (
clk
, reset
, led_out
);

input clk ;
input reset ;
output [7:0] led_out ;

reg [31:0] led_reg ;
wire [31:0] pio_out ;

always @ (posedge clk) begin
if (~reset)
led_reg <= 0 ;
else
led_reg <= led_reg + 1 ;
end

assign led_out[0] = led_reg[24] ;
assign led_out[1] = led_reg[25] ;
assign led_out[2] = led_reg[26] ;
assign led_out[3] = led_reg[27] ;

assign led_out[4] = pio_out[0] ;
assign led_out[5] = pio_out[10] ;
assign led_out[6] = pio_out[18] ;
assign led_out[7] = reset ;

nios nios1 (
.clk_clk (clk )
, .pio_out_export (pio_out )
, .reset_reset_n (reset )
);

endmodule





Quartusプロジェクト作成

簡単なので省略。


Platform DesignerでNiosIIシステムを作る

Platform DesignerでNios /e入りのシステムを作る。

Quartus > Tools > Platform Designer
 > IP Catalogから呼び出すIPは、Nios、On chip memory(1port)(インスタンス名ram)、PIO。

 > clk_0クロックソース > 「Clock Input」、「Reset Input」共に、Export設定。入力端子名をつける。

 > Niosプロパティ > Mainタブ > /e選択
 > Niosプロパティ > Vectorsタブ > Reset vector memory = ram.s1
 > Niosプロパティ > Vectorsタブ > Exception vector memory = ram.s1

 > On chip memoryプロパティ > RAM(Writable)、1port設定(Dualにチェック無)、Total size=32768、
 > On chip memoryプロパティ > Initialize memory contentsにチェック、
 > On chip memoryプロパティ > Use created initialization fileで、後述で生成する、.hexファイルパスを指定。

 > pioプロパティ > Width=32、Direction=output

Platform Designer > System > Assign base addresses
Platform Designer > File > Save
Platform Designer > Generate > Generate HDL > Verilogを指定してGenerateボタン

これでNios含むシステムのVerilogソースが生成された。



Quartusで必要ファイル登録

Quartus > Assignments > Settings > 以下ファイルを登録。

nios/synthesis/nios.qip  > Platform Designで生成したNiosシステムVerilog
led_top.sdc  > 上で作成したsdc
led_top.qsf  > 上で作成したqsf
led_top.v  > 上で作成した回路トップ





Niosプログラムを作る

Platform Designerで自動アサインされたPIOのアドレスを以下defineで設定。
あとは単なるLEDチカチカのプログラム。

#define GPIO *(( volatile unsigned int *)0x00011010)

void wait(int n)
{
int i, j;
for(long i=0; i for(long j=0; j<2000; j++);
}

int main()
{

while(1)
{
GPIO = 0xffffffff ;
wait(500);
GPIO = 0x00000000 ;
wait(500);
}


return 0;
}



Niosプログラムをビルド

Quartus > Tools > NiosII Software build Tools for Eclipse (以降NiosII SBT)

新規プロジェクトを作る。
NiosII SBT > File > New > NiosII Application and BSP from templete
 > SOPC informatoin file nameにPlatform Designerで自動生成されたファイルを指定
 > Project nameをてきとーに決める。(今回hoge)
 > Use default locatoinにチェック
 > Templetes = Blank Project
これでプロジェクトを生成する。(ウィンドウ左に、hoge、hoge_bspができる)

上で作ったプログラムを、hogeフォルダへコピー。

NiosII SBT > 左側のhogeプロジェクト > 右クリック > Build Project

エラーが無ければ、 \Software\hoge\hoge.elfが生成される。

エラー出る場合は、おそらくBSPを更新しろってやつ。
その場合は、
hoge_bsp > 右クリック > NiosII > Generate BSP で更新する。
それでさらにエラー出た場合は、
hoge > 右クリック > Clean Project
hoge_bsp > 右クリック > Clean Project
をやってから再度Generate BSP。
さらに、それでもうまくいかない場合は、hogeプロジェクトを別名で新規に作ればうまく行くと思う。


elfからメモリ初期化ファイル生成

NiosII SBT > 左側のhogeプロジェクトを展開 > hoge.elf > 右クリック > Make Target
 > Build > mem_init_targetを選択 > Build

これで
\software/hoge2/mem_init/nios_iram.hex
が生成される。



hexをメモリ初期値に登録

Platform Designer > On chip memoryプロパティ
 > Use created initialization fileで、さっき生成した.hexファイルパスを指定。


Quartusでコンパイル

ようやく以下回路が揃った。

FPGAトップ
Niosシステム + メモリ初期化ファイル

これでコンパイルして、.sofを作る。



評価ボードへダウンロード

Quartus > Tools > Programmer
 > Hardware SetupでUSB Blasterが選択されている事。
 > Mode = JTAG
 > output_files/led_top.sofが選択されている事。
 > 左側STARTボタン

右上プログレスバーがSuccessfulとなれば、成功。
評価ボード上では、NiosIIでLEDチカチカしたものと、HWカウンタでチカチカした両方が見えているはず。

[PC]HDL-GT HDD換装

参考にさせて頂いた。
https://plaza.rakuten.co.jp/comapple/diary/200905040000/


■HDL-GT 内蔵 > 2TB(500GBx4) RAID(1+0)へ

1.新HDD 1台を旧RAIDシステムに組み込み、構築しておく。

2.構築された新HDDをスロット1へ投入。
  残りの新HDD3台を空いてるスロットへ挿入。
  RAID崩壊モードで起動 > ボリューム操作 > メンテナンス実行。

3.メンテナンス完了後、完全な初期化をする。

4.初期化完了後、RAID5からRAID0へ再構築。
  この時点で構築完了時の容量は約1.75TBになる。

5.再構築完了後、スロット1のHDDを外し、スロット2のHDDをスロット1へ挿入。
  それでRAID崩壊モードで起動。

6.自動で再設定が完了したら残りのHDDを空いてるSLOTへ挿入。
  おそらく挿入場所はどこでも良いみたい。

7.メンテナンス実行 > 完了後にRAID0再構築。
  この時点で構築完了時の容量は約2TBになる。

8.RAID1+0再構築。
  この時点で構築完了時の容量は約1TBになる。

[docker]コマンド

Ubuntuイメージをインストール

# docker pull ubuntu

Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?



dockerサービスが起動されてない事が原因でした。

# systemctl start docker.service
# systemctl enable docker.service

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.




# docker pull ubuntu

Using default tag: latest
latest: Pulling from library/ubuntu
d3938036b19c: Pull complete
a9b30c108bda: Pull complete
67de21feec18: Pull complete
817da545be2b: Pull complete
d967c497ce23: Pull complete
Digest: sha256:9ee3b83bcaa38xxxxxxxxxxxx
Status: Downloaded newer image for ubuntu:latest





コンテナを作成する

# docker run -it ubuntu

root@d182c8xxxx:/#

プロンプトが変わった。これでUbuntuが起動したらしい。

root@d182c8xxxx:/# exit


exitで元のホストに戻る。


次はこのコマンド。
# docker-machine ip default

bash: docker-machine: command not found...





コンテナから一時的に出る

Ctrl + p -> (Ctrl押したまま) q

# docker ps




docker導入(別の記事のコマンドメモ)

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
yum -y install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install docker-io
yum -y install docker-compose

[PC]インスト実績

G33 (Win7) > 内臓DVDドライブ > 失敗(ブートするが、ブルースクリーン)
G33 (Win7) > USBインストーラ > DEL > BIOSで認識されたTrancend USBをFirst Boot Deviceへ > 成功

[Windows]10へのアップグレード

Webを見てると、Windows 10への無償アップグレード期間が終わった今でも
出来るとの情報を見た。

Win 8.1から10への無償アップグレードを試す > 成功(2018/3/31時点)

x230
Windows 8.1 Pro 64 bit

https://www.microsoft.com/ja-jp/software-download/windows10
ツールを今すぐダウンロード、からMediaCreationTool.exe をダウンロードする。

実行して、ライセンス条項に同意して進む > このPCを今すぐアップグレードする、を選び次へ
 > だいぶ時間かかるが、一晩実行したら成功した。
 > 一回目はなぜかWin 8のままになっていたので、やり直したら成功。


Win 7から10への無償アップグレードを試す

まずはWin 7をx230にUSB接続DVDドライブ(IODATA DVRP-UT8LK)経由でインストールしようとしたが、次のメッセージで先に進めず。

必要なCD/DVDドライブのデバイスドライバーがありません。ドライバーのフロッピーディスク、CD、
DVD、またはUSBフラッシュドライブがある場合は、ここで挿入してください。

注意: WindowsのインストールメディアがCD/DVDドライブにある場合は、この手順のためにメディア
を取り出すことができます。



最初にWin 7用USBインストールメディアを作成する

内蔵DVDドライブにインストールCD入れて起動試みたが、起動してくれない。
USB接続のDVDドライブでも試みたが、確かインストールの途中で失敗した。
USBメディアを使ってインストールする事にした。

最初にWin 7のisoを作るために、h170を使って以下サイトからisoをダウンロードした。
https://www.microsoft.com/ja-jp/software-download/windows7


次にisoからUSBインストールメディアを作る。
http://www.wintobootic.com/
ここから、WiNToBootic_v2.2.1.zipをダウンロード。
PCにUSBを接続し、ツールを実行すると、
TrancendのUSB3.1 16GBのUSBをNTFSでフォーマットし、上記で入手したisoを選び実行したらUSBインストールメディアを作成出来た。


SAMSUNG 840EVOはx230で認識しない

上で作成したUSBからWin7インストールをする際、
x230でF12でBIOSメニューに入り、SATA設定を、AHCIにしても、Compatibilityにしても、どちらでもSSDを認識しなかった。なのでこのSSDは断念。

MICRON RealSSD C400はx230で認識するが、インストール出来ないと言われる

同じくUSBからのWin7インストールのためUSBから起動させると、
SSDを認識し、余計なパーティションを削除し、1つの領域にインストールしようとすると、以下メッセージで先に進めず。

新しいシステム パーティションを作成できなかったか、既存のシステム パーティションが見つかりませんでした。
詳細については、セットアップ ログ ファイルを確認してください。



この症状について調べると、以下が参考になりそう。
http://tuttitan.hatenablog.com/entry/2016/07/08/191600
なんでも、USBインストールメディアからWin7をインストールする際は、USB内容をSSDへコピーして、書込み可能なデバイスをSSD1つだけにする事がポイントだとか。

さっそく試そうと、Win7用USBインストールメディアを接続したx230を起動すると、こう出た。

error: no such partition.
Entering rescue mode...
grub rescue>



これはこれからWin 7をインストールしようとしてるSSDをブートデバイスとして読み込んだら、BOOTに失敗したみたい。
F12でBoot menuに入り、USBを指定したら、無事Win 7インストールが始まった。

そして、インストール先を選択する画面まで来た。
ここで先ほどは、「新しいシステム パーティションを作成できなかったか、既存のシステム パーティションが見つかりませんでした。・・・」
って出て詰まった。
しかし今度は、先と同じMICRON RealSSD C400なのに、フツーにインストールへ進めた。なぜ?
この作業の前に、BIOS SATAモードをAHCIにしたのを覚えている。
こういう事かな? (この作業前に、何気なくAHCIモードにしたから成功したって事か)

C400 + SATA=Compatibility > 上記メッセージでWin 7インストールに進めず。
C400 + SATA=AHCI      > Win 7インストール成功

[Windows]QTTabbar

Windows 8.1 Pro

以下からダウンロードしてインストール。
https://forest.watch.impress.co.jp/library/software/qttabbar/

PC再起動。
Win + E でエクスプローラ開くが特にタブが出ない。

コントロールパネル > フォルダオプション > 表示 > 常にメニューを表示する、にチェック > OK

するとエクスプローラ開くと、どこだか忘れたが、メニューだったかな。
そこから QTタブバー を選択。
すると、タブ化が出来た。

[vivado]メモ

Tclコマンド

llength [all_registers -rise_clock clk]clk立上り駆動レジスタ数の表示
check_timing -ver -file rep.ch_timing.txtcheck_timing結果をファイル出力
report_timing -delay max -file rep.max.txtsetupタイミングレポートをファイル出力
report_timing -delay min -file rep.min.txtholdタイミングレポートをファイル出力





Tclフロー

Digilent社ZYBO revBで、TCLスクリプトで操作してみた。

Vivado 2017.4起動
 > TclコンソールでプロジェクトDIRへ移動。
    例えば、cd work/zybo/hoge/
 > Tclコンソールで source zybo.tcl を実行。

これで、Vivado起動した状態から、ZYBOへの.bitプログラムまで自動で行える。
サンプル回路は単なるLEDチカチカ。

<zybo.tclの内容>


close_project -quiet

set outputDir .
#---------------------------------------------------------
# read rtl
#---------------------------------------------------------
read_verilog cnt.v

#---------------------------------------------------------
# synthesis
#---------------------------------------------------------
synth_design -top cnt -part xc7z010clg400-1
report_timing_summary -file $outputDir/post_synth_timing_summary.rpt
report_utilization -file $outputDir/post_synth_util.rpt

set_property -dict [list PACKAGE_PIN {L16} IOSTANDARD {LVCMOS33}] [get_ports clk ] ; # oscillator

set_property -dict [list PACKAGE_PIN {Y16} IOSTANDARD {LVCMOS33}] [get_ports reset ] ; # button 1
# set_property -dict [list PACKAGE_PIN {V16} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 2
# set_property -dict [list PACKAGE_PIN {P16} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 3
# set_property -dict [list PACKAGE_PIN {R18} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 4

set_property -dict [list PACKAGE_PIN {D18} IOSTANDARD {LVCMOS33}] [get_ports led[0] ] ; # LED 1
set_property -dict [list PACKAGE_PIN {G14} IOSTANDARD {LVCMOS33}] [get_ports led[1] ] ; # LED 2
set_property -dict [list PACKAGE_PIN {M15} IOSTANDARD {LVCMOS33}] [get_ports led[2] ] ; # LED 3
set_property -dict [list PACKAGE_PIN {M14} IOSTANDARD {LVCMOS33}] [get_ports led[3] ] ; # LED 4

#---------------------------------------------------------
# timing constraint
#---------------------------------------------------------
create_clock -period 20 [get_ports clk ]

#---------------------------------------------------------
# place
#---------------------------------------------------------
opt_design
place_design
report_clock_utilization -file $outputDir/clock_util.rpt

#---------------------------------------------------------
# opt after place
#---------------------------------------------------------
if {[get_property SLACK [get_timing_paths -max_paths 1 -nworst 1 -setup]] < 0} {
puts "Found setup timing violations => running physical optimization"
phys_opt_design
}
report_utilization -file $outputDir/post_place_util.rpt
report_timing_summary -file $outputDir/post_place_timing_summary.rpt

#---------------------------------------------------------
# route
#---------------------------------------------------------
route_design
#write_checkpoint -force $outputDir/post_route.dcp
report_route_status -file $outputDir/post_route_status.rpt
report_timing_summary -file $outputDir/post_route_timing_summary.rpt
report_power -file $outputDir/post_route_power.rpt
report_drc -file $outputDir/post_imp_drc.rpt
write_verilog -force $outputDir/cnt_impl_netlist.v -mode timesim -sdf_anno true

#---------------------------------------------------------
# generate bitstream
#---------------------------------------------------------
write_bitstream -force $outputDir/cnt.bit


#---------------------------------------------------------
# program
#---------------------------------------------------------
open_hw
connect_hw_server

open_hw_target {localhost:3121/xilinx_tcf/Digilent/210279A78FE1A}
#INFO: [Labtoolstcl 44-466] Opening hw_target localhost:3121/xilinx_tcf/Digilent/210279A78FE1A
current_hw_device [get_hw_devices xc7z010_1]
refresh_hw_device -update_hw_probes false [lindex [get_hw_devices xc7z010_1] 0]
#INFO: [Labtools 27-1434] Device xc7z010 (JTAG device index = 1) is programmed with a design that has no supported debug core(s) in it.

# INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121
set_property PROBES.FILE {} [get_hw_devices xc7z010_1]
set_property FULL_PROBES.FILE {} [get_hw_devices xc7z010_1]
set_property PROGRAM.FILE {C:/user/work/zybo/ether/ether.runs/impl_1/cnt.bit} [get_hw_devices xc7z010_1]
program_hw_devices [get_hw_devices xc7z010_1]
# INFO: [Labtools 27-3164] End of startup status: HIGH
refresh_hw_device [lindex [get_hw_devices xc7z010_1] 0]






Kintex-7  xc7k160tffg676-2

7 Series FPGAs Packaging and Pinout
https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf




作業フォルダのデフォルト位置変更

デスクトップのアイコン「Vivado 2017.4」
 > 右クリック > プロパティ
 > 作業フォルダー

旧: %APPDATA%\Xilinx\Vivado
新: C:\user


に変更した。
これでアイコンから起動した際、Tcl consoleでpwdすると、カレントフォルダがC:\userになってる。





Device ManagerがunconnectedでProgramできない
Auto Connectしてもすぐにdisconnectされる。
ZYBOの電源をOFF -> ONしたら、Auto Connectでconnectされるようになり、Program Deviceのリンクも表示された。

[PC]MB168B Win10ドライバ

本日2/3、Win10のアップデートしたら画面が映らなくなった。

https://www.asus.com/jp/Commercial-Monitors/MB168B/HelpDesk_Download/
ここから
DisplayLink_USB_Graphics_Software_for_Windows_8.4_M0.zip
をダウンロードして解凍して、インストール。

このサイトはFirefoxだと上手く表示されなかったので、IE使った。

新しいドライバインストール > 再起動 > これでも認識されない。
 > デバイスマネージャからMB168Bを全て削除(ドライバもアンインストール)
 > これで再起動すると、デバイスマネージャで先に入れたDisplayLink USBなんちゃらが出て来た。
 > 少し待つと、soregaMB168Bの名前に変わった。そして、画面が出た。

順番が違ったが、古いドライバを削除してからインストールすれば良かったのかな?

[RPi]Linuxデバドラ

使ってるのはたぶんラズパイ2.
# uname -a

Linux rp2 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l armv7l armv7l GNU/Linux


# cat /etc/issue

Ubuntu 16.04.2 LTS \n \l




参照先の記事作成者に感謝。


組み込みLinuxデバイスドライバの作り方 (1)

https://qiita.com/take-iwiw/items/1fdd2e0faaaa868a2db2

# sudo apt-get install raspberrypi-kernel-headers

# vi MyModule.c

#include

static int test_init(void)
{
printk("Hello my module\n");
return 0;
}

static void test_exit(void)
{
printk("Bye bye my module\n");
}

module_init(test_init);
module_exit(test_exit);



# vi Makefile

CFILES = MyModule.c

obj-m := MyModule.o
MyModule-objs := $(CFILES:.c=.o)

all:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean


# make
# sudo insmod MyModule.ko
# sudo rmmod MyModule.ko
# dmesg


[ 3088.36446 ] Hello my module
[ 3142.463604 ] Bye bye module



確かにモジュールのロード、アンロードのメッセージが出てた。



組み込みLinuxデバイスドライバの作り方 (2)

https://qiita.com/take-iwiw/items/580ec7db2e88beeac3de

# vi Makefile

CFILE =MyDeviceDriver.c
obj-m:=MyDeviceDriver.o
MyDeviceDriver-objs:=$(CFILE:.c=.o)

all:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean


# vi MyDeviceDriver.c
 ※ 記事と同じため省略。

ビルドする。
# make
ロードする。
# sudo insmod MyDeviceModule.ko
# cat /proc/devices

1 mem
4 /dev/vc/0
5 /dev/tty
5 /dev/ptmx
5 ttyprintk
7 vcs
10 misc
13 input
14 sound
29 fb
63 MyDevice_NAME > ★ここに現れた



ユーザがアクセス出来るようにデバイスファイルを作る
# sudo mknod /dev/myDevice c 63 1
# sudo chmod 666 /dev/myDevice
# ls -lsta

0 crw-rw-rw- 1 root root 63, 1 2月 2 14:27 myDevice



シェルからWriteしてみる。
# echo "a" > /dev/myDevice
# dmesg

[ xxxx.xxxx ] myDevice_open
[ xxxx.xxxx ] myDevice_write
[ xxxx.xxxx ] myDevice_write
[ xxxx.xxxx ] myDevice_close



シェルからReadしてみる。
# cat /dev/myDevice
これを実行したら延々とAが出力された。

使い終わったら以下で削除する。
# sudo rmmod MyDeviceModule
# sudo rm /dev/myDevice



組み込みLinuxデバイスドライバの作り方 (3)

https://qiita.com/take-iwiw/items/6b02494a3668f79800e6


# vi Makefile
 ※ 記事の通り。
# vi MyDeviceDriver.c
 ※ 記事の通り。
# make
# sudo insmod MyDeviceModule.ko
実験的に3つ作成。
# sudo mknod --mode=666 /dev/mydevice0 c `grep MyDevice /proc/devices | awk '{print $1;}'` 0
# sudo mknod --mode=666 /dev/mydevice0 c `grep MyDevice /proc/devices | awk '{print $1;}'` 1
# sudo mknod --mode=666 /dev/mydevice0 c `grep MyDevice /proc/devices | awk '{print $1;}'` 2

静的な場合と同じく以下で削除。
# sudo rmmod MyDeviceDriver
# sudo rm /dev/mydevice0
# sudo rm /dev/mydevice1
# sudo rm /dev/mydevice2

ここまでで、メジャー番号の動的割り当てが出来た。
この後は、Linuxのudevの仕組みを使って、ロード(insmod)、及びデバイスファイル作成を自動化する。

# vi MyDeviceDriver.c
 ※ 記事と同じ。

これでudevにより/sys/class/mydevice/mydevice0/dev情報を基に自動的に
デバイスファイル/dev/mydevice0が作られるが、defaultでは一般ユーザのアクセス権が無い。
そこでルールファイルを作り、権限を変更してやる。

sudoでは/etc/udev/rule.d/の中をいじれないらしいのでrootになる。
# sudo -i
.ruleの前の名前は何でも良いらしい。
# echo 'KERNEL=="mydevice[0-9]*", GROUP="root", MODE="0666"' >> /etc/udev/rules.d/81-my.rules
# exit

# make

error implicit declaration of function 'class_create'


って言われた。
原因は以下が無かったから。

#include



ビルドし直してからロード。
# sudo insmod MyDeviceDriver.ko
デバイスファイルが自動で生成されたか確かめる。
# ls -lsta /dev/my*

0 crw-rw-rw- 1 root root 242, 0 2月 2 16:36 /dev/mydevice0
0 crw-rw-rw- 1 root root 242, 1 2月 2 16:36 /dev/mydevice1


メジャー番号242、マイナー番号0/1でmydevice0/1が生成されてる。

さらにデバイス情報のファイルが以下にあった。
# cat /sys/class/mydevice/mydevice0/dev

242:0

# cat /sys/class/mydevice/mydevice0/uevent

MAJOR=242
MINOR=0
DEVNAME=mydevice0





組み込みLinuxデバイスドライバの作り方 (4)

https://qiita.com/take-iwiw/items/26d5f7f4894ccc4ce227

ラズパイのメモリ空間が上記記事に添付されてる。



I2Cデバイスドライバ作成トライ

https://www.kernel.org/doc/Documentation/i2c/dev-interface

それぞれのI2Cアダプタは0から連番の番号を割り振られる。以下いずれかの方法で確認出来る。
# ls -lst /sys/class/i2c-dev/*

0 lrwxrwxrwx 1 root root 0 2月 17 14:18 i2c-1 -> ../../devices/platform/soc/3f804000.i2c/i2c-1/i2c-dev/i2c-1



# i2cdetect -l

i2c-1 i2c 3f804000.i2c I2C adapter




#include
#include

int file;
int adapter_nr = 2; /* probably dynamically determined */
char filename[20];

snprintf(filename, 19, "/dev/i2c-1", adapter_nr);
file = open(filename, O_RDWR);
if (file < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
}

int addr = 0x40; /* The I2C address */

if (ioctl(file, I2C_SLAVE, addr) < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
}

[vivado]ZYBO(1)

https://github.com/Digilent/vivado-boards/archive/master.zip

ここからダウンロードしたzipを解凍し、その中のnewフォルダ以下のデータを以下にコピーする。
C:\Xilinx\Vivado\2017.4\data\boards\board_files

[PC]Amazon Echo Plus

抽選メールを受け取り、早速注文。
音楽がすぐに聞けるのは良いが、Amazon Music Unlimitedに加入しないと、曲数が少ないな。

[vivado]トラブルシューティング

[DRC NSTD-1] Unspecified I/O Standard: 4 out of 6 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value.

[DRC UCIO-1] Unconstrained Logical Port: 4 out of 6 logical ports have no user assigned specific location constraint (LOC).

https://japan.xilinx.com/support/answers/56354.html


https://github.com/Digilent/digilent-xdc/Zybo-Master.xdc
これを使う事でエラー消えた。おそらく自作したxdcのI/O電圧設定が間違っていたようだ。



RTSTAT #1 The design is completely unrouted. Please run tcl command route_design.
I/O Planning用プロジェクトでピン配置後に出たエラー。

https://www.xilinx.com/support/documentation/sw_manuals_j/xilinx2014_1/ug899-vivado-io-clock-planning.pdf

これ見ると、I/O配置はRTLプロジェクトとは別にやる?ように書いてあるが。。。
こちらもZybo-Master.xdcを使って、RTLプロジェクトでxdc指定してインプリまで行ったら、こんなエラーは出ずに
bitstreamのダウンロードまで行けた。




ERROR: [Vivado 12-1411] Cannot set LOC property of ports, Could not legally place instance clk_lvds at F6 (IPAD_X1Y46)

IBUFDS_LVDS_25 clk_lvds ( .O(clk_in), .I(clk_p), .IB(clk_n) );
と書いて、Tclウィンドウで以下やったらエラー。
set_property PACKAGE_PIN F6 [get_ports clk_p ]



Kintex-7のMGTREFCLKの端子では、IBUFDS_GTE2を使うべき?みたい。

IBUFDS_GTE2 clk_lvds ( .O(clk_in), .I(clk_p), .IB(clk_n) );





ERROR: [Vivado 12-1815] Setting property 'IOSTANDARD' is not allowed for GT terminals.

Tclウィンドウでsourceした.tclの中でこれ書いたらエラー。
# set_property IOSTANDARD LVDS [get_ports clk_p ]

以下のようにしたらエラー無し。

set_property -dict [list PACKAGE_PIN {E13} IOSTANDARD {LVCMOS33}] [get_ports reset_n]






ERROR: [Common 17-69] Command failed: 'F6 ' is not a valid site or package pin name.

これやるとエラー。

set_property -dict [list PACKAGE_PIN {F6 } IOSTANDARD {LVDS }] [get_ports clk_p ]

カレンダー
06 | 2018/07 | 08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード