ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2024年3月3日日曜日

raspberry pi : 固定IPアドレスにする (dhcpcd.conf が無い場合)

目的:

nmcli を使用して 固定IPアドレス を設定する。

背景:

Raspberry pi 5 で 固定IPアドレスを設定しようとしたところ、 /etc/dhcpcd.conf が存在しなかった。
OS の バージョンが bookworm になって 設定方法が変わった模様。

手順:

NetworkManager (nmcli) を使用して設定を行う。
設定は
  1. コマンドで設定する。
  2. 設定ファイルを編集して設定する。

のどちらでも可能。
nmcli の コマンド は コマンドが補完できるまで短縮可能 
例 : nmcli connection show   →   nmcli c s

1.コマンドで設定。

  1. 接続名の確認
    nmcli connection show
    で 接続名を確認
    NAME           UUID                                  TYPE      DEVICE 
    有線接続 1     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0   
    preconfigured  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  wifi      wlan0  
    lo             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  loopback  lo
    
    以降、設定等で 接続名(NAME)を使用するが、接続名 が日本語(2バイトコード) や スペース が含まれている場合は " (ダブルコーテーション) で括って使用する。
    但し、認識できない等の不具合を発生する場合も在りうるため、1バイトコードに変更した方が良い。(手順は こちら )

  2. IPv4 IPアドレス等を設定する
    IPアドレス
    sudo nmcli connection modify [接続名] ipv4.addresses "xxx.xxx.xxx.xxx/24"
    デフォルトゲートウェイ
    sudo nmcli connection modify [接続名] ipv4.gateway "xxx.xxx.xxx.xxx"
    DNS
    sudo nmcli connection modify [接続名] ipv4.dns "xxx.xxx.xxx.xxx"
    (DNS の IPアドレスは スペースで区切って 複数指定可能 )

  3. IPアドレス を 手動設定に変更する。
    sudo nmcli connect modify [接続名]  ipv4.method manual
    この設定は、IPアドレスの設定を行った後に行わないとエラーとなる。

  4. 反映
    sudo nmcli con up eth0

2. 設定ファイルを編集して設定。

設定ファイルは 以下となる。(接続名毎に設定ファイルがある)
/etc/NetworkManager/system-connections/[接続名].nmconnection
  1. 接続名の確認
    nmcli connection show
    で 接続名を確認

  2. 設定ファイルを編集 設定ファイルの IPv4 の部分を書き換える。(br />
    hidden=false
    [ipv4]
    method=auto
    [ipv6]
    hidden=false
    [ipv4]
    address1=[IPアドレス]/24,[ゲートウェイアドレス]
    dns=[DNSアドレス1;DNSアドレス2];
    method=manual

    [ipv6]

  3. 反映
    sudo nmcli connection reload
    sudo nmcli con up preconfigured

* 接続名を変更する

接続名の変更は、古い接続名を削除して新しい接続名を追加することで行う。
接続名が日本語(2バイトコード) の場合、1バイトコードに変える。

  1. 接続名が日本語の接続を切断する
    sudo nmcli connection delete [UUID]
  2. 新しい接続名で接続を追加する
    sudo nmcli connection add type ethernet ifname [デバイス名] con-name [接続名]


2021年11月2日火曜日

WSL : WSL2 を使用する 2

目的:

Windows10 で 新たに WSL2 を使用できるようにする

前提条件:

Windows 10 バージョン 2004 以降 (ビルド 19041 以降) で初めて WSLを入れる場合。
自PC は 20H1 で実施。
ディストリビューションは debian をインストール。

インストール手順:

  1. PowerShwll または コマンドプロンプト を管理者権限で立ち上げ、以下を実行。
    wsl --install -d Debian
    • wsl --install のみだと、Ubuntu が インストールされる。
    • 利用可能なディストリビューションは、
      wsl --list --online
       または
      wsl -l -o
       で表示できる
  2. PCを再起動する。
    再起動すると、ディストリビューションのインストールが始まる。
  3. ユーザ名とパスワードの設定
    ディストリビューションのインストールが終わると、ユーザ名とパスワードの入力が要求されるため、入力する。
以上で、WSL2 のインストールは完了。

WSL2 注意事項:

  1. DISLPAY の設定は 以下の様に行う。
    ( export DISPLAY=:0.0 では NG )
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

  2. cifs-utils をインストール
    NAS(SMB1.0) を drvfs でマウントできない。このため、cifs-utils をインストールし、cifs でマウントする。
    sudo apt install cifs-utils

  3. vim が vim-tiny になっている。
    Vim インストール と同様に入れ替え

  4. gcc, make が入っていない。
    以下にて開発環境をインストールする。
    sudo apt install build-essential


2021年10月19日火曜日

WSL : 端末 に GNOME-TERMINAL を 使用する

 目的:

WSL (Windows Subsystem for Linux) の端末として gnome-terninal を使用する。

概要:

X-Window 環境で gnomi-terminal を使用する。
gnomi-terminal を使用する事により、簡単に端末の色分け 等ができるようになる。
X-Window は  VcXsrv を使用する。
 ( Xサーバーをインストールする 参照 )

インストール手順:

  1. gnome-terminal のインストール
    • インストール
      sudo apt install gnome-terminal
      sudo apt install dbus-x11

    • 起動
      gnome-terminal
  2. ターミナルのカラースキームを gogh で設定
    • Goghの実行に必要なパッケージを以下でインストール
      sudo apt-get install dconf-cli uuid-runtime
       
    • Goghの実行
      gnome-terminal 上で、以下を実行
      bash -c  "$(wget -qO- https://git.io/vQgMr)"

      実行すると、カラースキームのリストが表示され、使用する カラースキームの番号 の入力待ちになる為、リストの左側の番号を入力する。
      (見本)
      gnome-terminal 上で 右クリックし、Profiles にカーソルを合わせると、入力したカラースキームが追加されている為、これを選択し、適用する。
      必要に応じ、メニューバーから 「Edit」-「Profile Preferences」で各種設定を行う。

      2021.11.09 追記
      新しいPC に WSL2 をインストールしたら、Gogh が動作しなかった。
      ( カラースキーム のリストが表示されずに終了 )
      git をインストールしたら、表示されるようになった。
      sudo apt-get install git-all

  3. 日本語入力をできるようにする。
    • 日本語化
      以下をインストール/実行
      sudo apt install locales locales-all
      sudo update-locale LANG=ja_JP.UTF-8

    • fcitx-mozcのインストール
      以下をインストール
      sudo apt install fcitx-mozc x11-xserver-utils

    • machine-idファイルの作成
      以下を実行
      sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"

    • 環境変数などを.profileファイルに設定
      .profile に以下を追記

      # set for fcitx ------------------
      export GTK_IM_MODULE=fcitx
      export QT_IM_MODULE=fcitx
      export XMODIFIERS=@im=fcitx
      export DefaultIMModule=fcitx
      if [ $SHLVL = 1 ] ; then
        (fcitx-autostart > /dev/null 2>&1 &)
        xset -r 49  > /dev/null 2>&1
      fi

    • 再起動
      WSL を再起動する。
      PowerShell を立ち上げ、 ディストリビューション名を確認。
      wsl -l
      WSL を再起動。(Debian の場合)
      wsl -t Debian

      再度端末を立ち上げ、gnome-terminal を立ち上げる。
      gnome-terminal実行時に、以下の様なワーニングが発生する場合、

      ** (gnome-terminal:54): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-3BGGQVhj0i: 接続を拒否されました

      .bashrc に 以下を追記
      # disable to display dbind-WARNING
      export NO_AT_BRIDGE=1

    • 日本語入力設定
      以下を実行し、設定を確認/修正する。
      fcitx-config-gtk3
       ( 日本語入力切り替えのキー等を好みにより設定。)

    以上で、日本語入力が可能になる。
    また、gnome-terminal 等のメニュー等も日本語になっているはず。

  4. フォント追加
    Windows の フォントを gnome-terminal 等で 使用できる様にする。
    /etc/fonts に 以下の様な "local.conf" を作成する。
    sudo vim /etc/fonts/local.conf

    <local.conf>
    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
        <dir>/mnt/c/Windows/Fonts</dir>
    </fontconfig>

    作成後、
    fc-cache -fv
    を実行する。

    実行終了したら、
    fc-list | head
    で、Windows の フォントがあることを確認する。

    但し、この状態で gnome-terminal の プロファイルの設定 から、Windows の フォントを選択することができなかった。(ドロップダウンリストに入っていない)
    ... 色々試行錯誤しているうちに、選択できるようになっていた。
      WSL の再起動が必用 ?


2021年9月25日土曜日

raspberry pi : FTPサーバーのインストール

 目的:

FTPサーバーをインストールして Windows等 からのファイルアクセスができるようにする。

手順:

以下の手順で vsftpd をインストールする。
  1. パッケージリストの更新、パッケージのアップデートを行う。
    sudo apt update
    sudo apt upgrade

  2. vsftpd のインストールを行う。
    sudo apt install vsftpd
     
  3. raspberry pi 起動時に vsftpd も立ち上げる様にする。
    sudo systemctl enable vsftpd

  4. /etc/vsftpd.conf を修正して ファイルの書き込みを許可する。
    sudo vi /etc/vsftpd.conf

    #write_enable=YES

    write_enable がコメントアウトされているので、#を消して有効にする。

ファイル転送:

 Windows PC 等 から、FTPクライアントソフト ( WinSCP 等 ) からアクセスし、ファイル転送できる事を確認する。


 

2021年9月11日土曜日

Windows : WSL (Debian) にVivado ML をインストールする。

目的:

WSL (Debian) に Vivado ML (スタンダード) を インストールする。

以前、Vivado  (2020.1) をインストールしたが、最新版(Vivado ML スタンダード) のインストールを行い、動作を確認する。

インストール手順:

今回は、GUI にて インストールできた。手順を以下に記す。
  1. インストーラをダウンロードする ( Windows )
    Xilinx のサイトから、「ザイリンクス統合インストーラー 2021.1: Linux 用自己解凍型ウェブ インストーラー (BIN - 301.28 MB) 」を 任意のディレクトリにダウンロードする。 (アカウントが必用。なければ、作成する)
  2. Xサーバーを起動 するWindows 上で Xサーバーを起動する。
  3. インストーラ を実行する
    必要に応じ、sudo apt update, sudo apt upgrade を実行しておく。
    WSL (Debian) の 端末から、インストーラを実行する。
     ダウンロードしたディレクトリ : D:\download\xilinx
     ダウンロードしたファイル名  : Xilinx_Unified_2021.1_0610_2318_Lin64.bin
    の場合、
     cd /mnt/d/download/xilinx
     ./Xilinx_Unified_2021.1_0610_2318_Lin64.bin
    を実行すると、インストーラのウィンドウが立ち上がる。
    1. Welcom の 画面 :
      next を押下
    2. Select Install Typw の画面 :
      E-mail Address, password を入力し、
      "Download and Install Now" が選択されていることを確認し、
      next を押下
    3. Select Product to Install の画面:
      vivad を選択し、next を押下
    4. Select Edition to Install の画面:
      Viado ML Standard を選択し、 next を押下
    5. Vivado ML Standard の画面:
      インストール内容を確認し、next を押下
    6.  Accept License Agreements
      全て(3か所) の "I Agree" にチェックを付け、next を押下
    7. Select Destination Directory の画面
      インストール先のディレクトリを指定する。
      各インストール先、ディスク容量等を確認し、next を押下
    8. Installation Summary の画面
      インストールの内容を確認し、Install を押下
    インストール終了まで待つ

Vivado の実行:

以下の様に、インストールディレクトリの settings64.sh を ソースし、vivado を実行する。( インストール先 : /tools/Xilinx, Ver 2021.1 の場合 )
 source /tools/Xilinx/Vivado/2020.1/settings64.sh
 vivado
vivado の実行で GUI の画面が立ち上がる。

コマンドラインで使用する場合も、2021.1 の settings64.sh を source した後に使用する。
以前のバージョン (2020.1) を使用する場合は、2020.1 の settings64.sh を source することで、以前のバージョンが使用できる。

普段使用するバージョンの settings64.sh を .bashrc に 記載しておくのが良いと思う。


 

2020年8月28日金曜日

WSL : WSL2 を使用する

目的:

WSL2 を使用できるようにする

概要:

Windows10 バージョン 1909 でも WSL2 が使用できるようになった為、WSL2 に更新にする。
 更新は以下を実施し、WSL2 が使用できることを確認した。
  1. 累積的更新プログラム「KB4566116 」を適用
  2. "仮想マシン プラットフォーム" のオプション コンポーネントを有効にする
  3. WSL2の有効化
  4. ディストリビューションの更新 (Debian を更新)
  5. wsltty を最新版に更新 
  6. GUI 設定 (DISPLAY 変更, VcXsrv 設定変更)

更新手順:

  1. 累積的更新プログラム「KB4566116 」を適用
    「設定」-「更新とセキュリティ」から アップデートを行う。
     
  2. "仮想マシン プラットフォーム" のオプション コンポーネントを有効にする
    1. powershellを管理者権限で起動
      スタートメニューから 「Windows powershell」-「Windows powershell」を右クリックし、「管理者として実行する」を左クリック
    2. "仮想マシン プラットフォーム" のオプション コンポーネントを有効にする
      powershell で次のコマンドを実行
      dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    3. PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
      
      展開イメージのサービスと管理ツール
      バージョン: 10.0.18362.900
      
      イメージのバージョン: 10.0.18363.1049
      
      機能を有効にしています
      [==========================100.0%==========================]
      操作は正常に完了しました。
      
    4. PC を再起動
      再起動すると、Windows の機能の更新が行われる
       
  3. WSL2の有効化
    WSL2をデフォルトへ設定
    powershell で次のコマンドを実行
    wsl --set-default-version 2
    PS C:\WINDOWS\system32> wsl --set-default-version 2
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
      
  4. ディストリビューションの更新
    1. 現在のディストリビューションのバージョンを確認
      powershell で次のコマンドを実行
      wsl --list --verbose
      (更新プログラム適用前は、 --verbose は 使用できない。)
      PS C:\WINDOWS\system32> wsl --list --verbose
        NAME      STATE           VERSION
      * Debian    Stopped         1
        Ubuntu    Stopped         1
      
      debian と ubuntu が あり、共に VERSION 1
    2. ディストリビューションの更新
      ここでは Debian を更新してみる。 powershell で次のコマンドを実行
      wsl --set-version Debian 2
      PS C:\WINDOWS\system32> wsl --set-version Debian 2
      変換中です。この処理には数分かかることがあります...
      WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
      変換が完了しました。
      
    3. 再度バージョンを確認
      wsl --list --verbose
      PS C:\WINDOWS\system32> wsl --list --verbose
        NAME      STATE           VERSION
      * Debian    Stopped         2
        Ubuntu    Stopped         1
      
      debian の VERSION が 2 に変わる。
       
  5. wsltty を最新版に更新
    wsltty を使用している場合、最新版( 現時点で 3.3.0 ) にしないと動作しない。
     
  6. GUI 設定 (DISPLAY , VcXsrv 設定) の変更
    WSL2 では ネットワーク構成が変更されている為、DISPLAY 設定が
    DISPLAY=:0.0
    では エラーが発生する。
    以下の設定に変更する必要がある。
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
    また、VcXsrv設定で,
    「Additional parameters for VcXsrv」(設定画面 3画面目) に -ac を入力する。
以上で、Debian が WSL2 が使用できるようになった。

尚、Ubuntu は 更新していないため、従来の WSL で起動した。

その他:

(2020/08/30 追記)

ネットワークドライブアクセス不可

現象:
 ネットワークドライブ 2つの内、1つへのアクセスができなくなった。
 アクセスできなくなったのは NAS( SMB1.0)。
 Raspbery pi のディスク ( SMB 2 ?) は アクセスできている。
対応:
  1.  WSL2 に cifs-utils をインストール
    sudo apt install cifs-utils
  2.  /etc/fstab を修正
    NAS の マウントの設定を以下の様にして  drvfs から cifs に 変更
    //サーバー名/共有名 /mnt/<マウント先ディレクトリ名> cifs vers=1.0,username=<ユーザ名>,password=<パスワード>,iocharset=utf8,rw,uid=1000,gid=1000,defaults 0 0
  3. ディストリビューションの再起動
    パワーシェル から WSL 終了コマンドを入力 後、起動し、起動時にマウントされることを確認する。
    wsl -t <ディストリビューション名>
これで、Debian は アクセス可能になった。
但し、WSL1 にすると、cifs での アクセスはできなくなる。
Ubuntu も同様にしたが、起動時に マウントができていない。
sudo mount -a
ではマウントできる。対応調査中

2020年8月16日日曜日

verilog : Vivado で SVA(アサーション) を試す

目的:

Vivado で SVA を使用してみる。

結果:

Vivado で SVA 並列アサーション を記述し、アサーションができることを確認した。
  • 2021/11/4 追記
    とくに問題なくアサーションできている。
  • 2020/10/16 追記
    前回から30日以上経過しているが、アサーション結果表示できている。
  • 2020/09/04 追記
    再実行で アサーションの表示が また 出力されるようになった。
    先日、Windows版の vivado を Update したが、この影響か ?
  • 2020/08/29 追記
    再実行したところ、アサーションの表示が 出力されない。
    WEB PACK ではサポートされず、30日間無償評価で使用できていたと思われる。
但し、
  1.  property に 引数 を付けるとエラー が発生する。
  2. アサーションの結果は 波形には表示されない。
  3. アサーションの結果は Fail 時 のみ ログ, ディスプレイ に表示される。
    ( 特に処理の記述を行わない場合 )
となる。
以下のパターンで試しただけなので、他にも注意点があるかもしれないし、上の点も 設定, 記述方法等があるかもしれないが、SVA は使用可能。
(尚、波形への表示については「Vivado で SVA(アサーション) を試す 2」を参照。)

SVA 適用手順:

Vivado の コマンドラインでのシミュレーション環境 をベースに SVA を適用した。
( SVA 適用後の サンプルは こちら を参照。)
  1. ディレクトリ構成
    アサーション格納用として assertion ディレクトリを作成
  2. アサーション用ファイルの作成
    アサーション用ファイルとして
    1. SVA ファイル ( アサーション記述のモジュール )
    2. bind ファイル ( SVA のモジュールを rtl に接続する記述 )
    3. bind リスト ( bind ファイルを インクルードする為の リスト )
    を作成する。
  3. bind ファイルのインクルード
    テストベンチに 上 の bind リスト を インクルードする。
  4. プロジェクトファイル (vlog.prj) 修正
    vlog.prj に SVA ファイル を追加する。
以上で、SVA が適用される。

SVA 適用例:

SVA 適用例を以下に示す。
  1. テストベンチ ( Vivado の コマンドラインでのシミュレーション環境からの差分 )
      end
    
    // include test patteern  ------------
    `include "tp.sv"
    
    // include assertion bind list -------
    `include "./assertion/bind.list"
    
    
    endmodule
    

  2. bind リスト
    `include "./assertion/bind_sva.sv"
    
    bind ファイルのインクルード文を記述する。
     
  3. bind ファイル
    bind testbench.i_plsgen sva_1 i_sva_1(
      .clk    (clk),
      .clr    (clr),
      .start  (pls_start),
      .en     (plsen),
      .outpls (output_pls)
    ) ;
    
    bind testbench.i_plsgen sva_2 i_sva_2(
      .clk    (clk),
      .clr    (clr),
      .start  (pls_start),
      .en     (plsen),
      .outpls (output_pls)
    ) ;
    
    ここでは、 2つのアサーションファイルをバインドしている。
    それぞれ RTL (i_plsgen) にバインド
    testbench には バインドできない ?
     
  4. SVA ファイル
    アサーションファイルを以下に示す。
    尚、アサーションの適不適は不問とする。
    ( RTL は パルス生成回路 )
    // -----------------------------------------------------
    //   Sample module
    //
    //   Module Name : sva_1
    //   Version     : 0.00
    // -----------------------------------------------------
    
    module sva_1 ( clk, clr, start, en, outpls) ;
      input clk ;
      input clr ;
      input start ;
      input en ;
      input outpls ;
    
      // sequence description ----------------
      sequence S1 ;
        outpls[*4] ##1 !outpls[*5] ;
      endsequence
    
      // property description ---------------
      property p_test1 ;
        @(posedge clk ) disable iff(clr)
          $rose(start) |-> ##1 S1[*6] ;
      endproperty
    
      // assertion description
      a_test1 : assert property ( p_test1 ) ;
    
      endmodule
    
    sva_1 は、 start 信号の立ち上がりの次クロックから、"H 4サイクル, L 5サイクル"のシーケンスを 6回繰り返すことをチェックする。
     
    // -----------------------------------------------------
    //   Sample module
    //
    //   Module Name : sva_2
    //   Version     : 0.00
    // -----------------------------------------------------
    
    module sva_2 ( clk, clr, start, en, outpls) ;
      input clk ;
      input clr ;
      input start ;
      input en ;
      input outpls ;
    
      // sequence description ----------------
      sequence S1 ;
        outpls[*4] ##1 !outpls[*5] ;
      endsequence
    
      // property description ---------------
      property p_test2 ;
        @(posedge clk ) disable iff(clr)
          $rose(start) |-> ##1 S1[*6] |-> ##1 $fell(en) ;
      endproperty
    
      // assertion description ---------------
      a_test2 : assert property ( p_test2 ) ;
    
      endmodule
    
    sva_2 は、 start 信号の立ち上がりの次クロックから、"H 4サイクル, L 5サイクル"のシーケンスを 6回繰り返した後、次サイクルで en が 立ち下がることをチェックする。
    尚、sva_1, sva_2 の 2ファイルに分ける必要は無いが (通常は 1つのファイル(モジュール) に a_test1 と a_test2 の 両方を記述する) 、サンプルの為 2つのファイルに分けている。
      
  5. プロジェクトファイル (vlog.prj)
    verilog xil_defaultlib  \
    "./rtl/plsgen.v" \
    "./rtl/D_CNT.v" \
    
    sv xil_defaultlib  \
    "./testbench/testbench.sv" \
    "./testbench/param.sv" \
    "./assertion/sva_1.sv" \
    "./assertion/sva_2.sv" \
    
    verilog xil_defaultlib "/tools/Xilinx/Vivado/2020.1/data/verilog/src/glbl.v"
    
    プロジェクトファイルに sva_1.sv, sva_2.sv を追加する。
     

SVA 適用結果:

SVA 適用後の シミュレーション実行結果を以下に示す。
****** xsim v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
  **** IP Build 2902112 on Wed May 27 22:43:36 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

source xsim.dir/test_1/xsim_script.tcl
# xsim {test_1} -autoloadwcfg -runall
Vivado Simulator 2020.1
Time resolution is 1 ps
run -all
ERROR: Assertion failed.
Time: 1140 ns Started: 220 ns Scope: /testbench/i_plsgen/i_sva_1 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_1.sv Line:28
ERROR: Assertion failed.
Time: 3580 ns Started: 2480 ns Scope: /testbench/i_plsgen/i_sva_2 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_2.sv Line:28
$finish called at time : 3841 ns : File "/mnt/d/UserData/hobby/logic/study/test3/testbench/tp.sv" Line 42
exit
INFO: [Common 17-206] Exiting xsim at Sun Aug 16 15:08:32 2020...
この時の波形

テストパターンは、3回 パルスを生成。
1回目は "H" 4 クロック, "L" 5クロック を 5回繰り返し
 6回目の"H" が無い為、a_test1 が Fail
 a_test2 は 6回目 の "H" が無く 前提部が不成立の為、発火しない。(Fail しない)
2回目は H4 クロック, L5クロック を 6回繰り返し
 a_test1, a_test2 共に 発火し、Pass。

3回目は H4 クロック, L5クロック を 7回繰り返し
 6回目の "H" がある為、a_test1 は発火し、Pass
 6回目の "H"→"L" の後 7回目が開始し、en (plsen) が 立ち下がらない為、Fail
期待通り、1回目, 3回目 のパルス生成で Fail し、エラー出力されている。

発火確認:

上の結果では、Fail した場合は ERROR 表示されるが、Fail しない場合は 何も表示されない。
この為、Pass したのか 発火しなかったのかの区別がつかない。
発火した場合に表示する様に SVA ファイルを修正してみる。
  // assertion description
  a_test1 : assert property ( p_test1 ) $display("a_test1 : OK") ;

  endmodule
  // assertion description ---------------
  a_test2 : assert property ( p_test2 ) $display("a_test2 : OK") ;

  endmodule
assert文 に 処理 ($display 等) を追加する。
処理追加後の結果は下の通り。

****** xsim v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
  **** IP Build 2902112 on Wed May 27 22:43:36 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

source xsim.dir/test_1/xsim_script.tcl
# xsim {test_1} -autoloadwcfg -runall
Vivado Simulator 2020.1
Time resolution is 1 ps
run -all
ERROR: Assertion failed.
Time: 1140 ns Started: 220 ns Scope: /testbench/i_plsgen/i_sva_1 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_1.sv Line:28

Time: 2340 ns Started: 1260 ns Scope: /testbench/i_plsgen/i_sva_1 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_1.sv Line:28
a_test1 : OK

Time: 2360 ns Started: 1260 ns Scope: /testbench/i_plsgen/i_sva_2 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_2.sv Line:28
a_test2 : OK

Time: 3560 ns Started: 2480 ns Scope: /testbench/i_plsgen/i_sva_1 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_1.sv Line:28
a_test1 : OK
ERROR: Assertion failed.
Time: 3580 ns Started: 2480 ns Scope: /testbench/i_plsgen/i_sva_2 File: /mnt/d/UserData/hobby/logic/study/test3/assertion/sva_2.sv Line:28
$finish called at time : 3841 ns : File "/mnt/d/UserData/hobby/logic/study/test3/testbench/tp.sv" Line 42
exit
INFO: [Common 17-206] Exiting xsim at Sun Aug 16 16:19:29 2020...

実行結果は、
1回目 (started: 220nS) は a_test1 Fail し、a_test2 は発火なし。
2回目 (started: 1260nS) は a_test1, a_test2 共に発火し、Fail なし。
3回目 (Started: 2480nS) は a_test1 は発火して Failなし, a_test2 は Fail。
となり、発火したことを確認できる。

できれば、波形に 表示されるといいのだが、、、
 → 表示案 : Vivado で SVA(アサーション) を試す 2 

2020年8月14日金曜日

verilog : Vivado の コマンドラインでのシミュレーション環境

目的:

Vivado のシミュレーション をコマンドラインで 実行する環境を作る 。
 ( Icarus Verilog と同様な環境でシミュレーションできるようにする )


概要:

Ivarus Verilog 用に作成した環境と同様の環境とする。

ディレクトリ構成

以下の様にディレクトリを分ける。
rtl         : 論理合成可能な RTL を格納する
testbench   : テストベンチ を格納する
testpattern : テストパターン を格納する。
log         : コンパイル,シミュレーション時の LOG を格納する。
xsim_dir    : コンパイル時に生成される作業ディレクトリ。
wave        : シミュレーション結果の波形ファイルを格納する。

コンパイル, シミュレーション実行

カレントディレクトリに Makefile、vlog.prj を作成し、
make TESTNAME=test_1
の様に テストパターンを指定してコンパイル、シミュレーションを実行できる様にする。
コンパイル、シミュレーション時に実行 LOG を log ディレクトリ下に生成/移動する。
シミュレーション結果の波形は、wave ディレクトリに 移動した <TESTNAME>.vcd を gtkwave 等で確認する。

vlog.prj は、verilog のファイル構成を記したファイル。
コンパイル、シミュレーションは vivado のプロジェクトは作成せず、コマンド実行のみで行う。

詳細:

ディレクトリ構成は、概要の通り。
サンプルの環境は こちら を参照。(rtl, testbench の内容についての説明は省略)
サンプルは パルス生成回路。
テストパターンは test_1. sv と test_2.sv
make TESTNAME=test_1
make TESTNAME=test_2
でそれぞれ異なるパルス出力 (output_pls) が発生。

尚、vivado のインストールは、
Windows : WSL に Vivado をインストールする
を参照。

テストベンチ構成

テストパターン(項目) に依存しない共通部分を testbench.sv に記述。
テストパターン(項目)毎の記述は、パターンごとにファイルを作成し、testpattern ディレクトリに格納する。
make 実行時に、実行するテストパターン(項目)のファイルを testbench ディレクトリにtp.sv のファイル名でコピーし、testbench.sv から include で 呼び出す。

vlog.prj 例

vlog.prj は、以下を記述する。
verilog <work_library> <file_names>...
sv <work_library> <file_names> ...
verilog xil_defaultlib  \
"./rtl/plsgen.v" \
"./rtl/D_CNT.v" \

sv xil_defaultlib  \
"./testbench/testbench.sv" \
"./testbench/param.sv" \

verilog xil_defaultlib "/tools/Xilinx/Vivado/2020.1/data/verilog/src/glbl.v"
* /tools/Xilinx/ は、Vivado をインストールしたディレクトリ
vlog.prj にvhdl のソースを記述する。
verilog のファイルは verilog に、SystemVerilog のファイルは sv に記述する。
また、glbl.v を記述する必要がある。


Makefile 例

# ==============================================

TESTNAME = default

# -- SHELL setting -------------------------
SHELL=/bin/bash -o pipefail

# -- dir setting ---------------------------
TBDIR  = ./testbench
TPDIR  = ./testpattern
WAVE   = ./wave
LOG    = ./log

# -- compile option ------------------------
VLOGOPT  = -log $(LOG)/xvlog.log
VLOGOPT += -prj vlog.prj

ELABOPT  = -timescale 1ns/100ps
ELABOPT += -log $(LOG)/xelab.log
ELABOPT += -debug typical
ELABOPT += -L xil_defaultlib

# -- simulation option ---------------------
SIMOPT   = -log $(LOG)/simulate.log
SIMOPT  += -R

# -- wave file name ------------------------
VCD_NAME = wave.vcd

# -- Description ---------------------------
all : clean comp  sim

comp :
 # --- testpattern copy to tp.sv ----------------------------
ifeq ($(TESTNAME),default)
 echo >| $(TBDIR)/tp.sv
else
 cp $(TPDIR)/$(TESTNAME).sv $(TBDIR)/tp.sv
endif
 # --- analysis ---------------------------------------------
 xvlog $(VLOGOPT) 2>&1 | tee $(LOG)/comp.log
 # --- elaborate --------------------------------------------
 xelab $(ELABOPT) xil_defaultlib xil_defaultlib.testbench  -s $(TESTNAME) 
 # --- move log file ----------------------------------------
 mv *.pb $(LOG)/. 2> /dev/null ; true
 mv webtalk.* $(LOG)/. 2> /dev/null ; true

sim :
 # --- simulation -------------------------------------------
 xsim $(SIMOPT) $(TESTNAME)
 # --- move log file ----------------------------------------
 mv *.log $(LOG)/. 2> /dev/null ; true
 mv *.jou $(LOG)/. 2> /dev/null ; true
 # --- move wave file ----------------------------------------
 mv *.wdb $(WAVE)/. 2> /dev/null ; true
 mv $(VCD_NAME ) $(WAVE)/$(TESTNAME).vcd

clean :
 rm $(LOG)/* 2> /dev/null ; true

Make file 内容
TESTNAME : テストパターンファイル名の拡張子を除いた部分。初期値として "default" を設定。
SHELL setting :Shell 設定。パイプ中でのエラーコードを返す様にする。
dir setting : 各ディレクトリ名を設定。
compile option : コンパイルオプション (xvlog, xelab のオプション )を指定する。simulation option : シミュレーションオプション (xsim のオプション)を指定する。
wave file name : 波形ファイル名。(テストベンチに記述しているファイル名)Description : make での 実行内容。

実行方法
make TESTNAME=<テストパターンファイル名(拡張子を除く)
で、テストパターンファイルに記述したテスト内容で コンパイル、シミュレーションし、gtkwave を起動する。
実行は、
  1. log ファイル を消去する。
  2. コンパイルを以下の順に行う。
    1. テストパターン ファイルを tp.sv のファイル名で testbench ディレクトリにコピーする。
      TESTNAME を指定しない場合( make のみで実行 ) は、空の tp.sv を作成する。
    2. コンパイル (xvlog) を実行する。
    3. エラボレーション (xelab) を実行する。
    4. ログファイルを LOGディレクトリに移動する。
  3. シミュレーション (xsim) を実行する。
    実行後、ログファイルを ログディレクディレクトリに移動する。
    また、結果 (波形ファイル wave.vcd) を wave ディレクトリ下に <テストパターン名>.vcd として移動する。
の順に行う。
波形の確認は gtkwave で行う。wave ディレクトリで、
gtkwave <テストパターン名>.vcd



2020年8月11日火曜日

WSL : WSL に Vivado をインストールする

目的:

WSL (Debian) に Vivado をインストールする。
 

結果:

CUI でインストールすることで、Vivado をインストールすることができた。
但し、
  1. コンパイル時など、スタックサイズを変更できない旨の Warning が発生。
    ( WSL では スタックサイズの変更はできないらしい )
    ( WSL2 では Warning は発生しない ) * 2020/08/28 追記
  2. Debian は 公式サポートされていない。 できれば、Ubuntu 等の方が良いかも。
  3. 作業ディレクトリを NAS上にすると、ファイルがコピーできない、ファイルが無い等のエラーでコンパイルできない。Dドライブ等の内臓ディスク上は OK。

    (マウントの仕方が悪い ?  vi 等では普通に編集かのうだが、、)

インストール手順:

  1. インストーラをダウンロードする。(Windows)
    ダウンロードする為には、アカウントを作成する必要が有る。

GUIインストールの場合

  1. Xサーバを起動する。(Windows)
  2. ダウンロードしたインストーラを起動する。(WSL)
    (Windows で d:\download\xilinx に ダウンロードした場合の例)
    cd /mnt/d/download/xilinx
    ./Xilinx_Unified_2020.1_0602_1208_Lin64.bin

    自環境(Debian) では インストーラのGUI は開かず、下の様なメッセージが発生。
    Exception in thread "SPLASH_LOAD_MESSAGE" java.lang.IllegalStateException: no splash screen available
            at java.desktop/java.awt.SplashScreen.checkVisible(Unknown Source)
            at java.desktop/java.awt.SplashScreen.getBounds(Unknown Source)
            at java.desktop/java.awt.SplashScreen.getSize(Unknown Source)
            at com.xilinx.installer.gui.H.run(Unknown Source)
    Exception in thread "main" java.lang.IllegalStateException: no splash screen available
            at java.desktop/java.awt.SplashScreen.checkVisible(Unknown Source)
            at java.desktop/java.awt.SplashScreen.close(Unknown Source)
            at com.xilinx.installer.gui.G.b(Unknown Source)
            at com.xilinx.installer.gui.InstallerGUI.G(Unknown Source)
            at com.xilinx.installer.gui.InstallerGUI.e(Unknown Source)
            at com.xilinx.installer.api.InstallerLauncher.main(Unknown Source)
    
    この為、CUI でインストールを行った。
    また、Debianでのインストールの為、以下のメッセージ(ダイアログボックス)が表示された。
    尚、Ubuntu の WSL で試したところ、GUI のインストーラが起動した。
    ( インストーラが起動するまで 数分 かかった。)
    Ubuntu でのインストールは行わなかったが、インストーラに従えばGUIで インストールできると思われる。

CUIインストールの場合


  1. インストーラの抽出
    --noexec  --target <抽出ディレクトリ> のオプションを付けてインストーラを起動する。
    [Windows で d:\download\xilinx に ダウンロードした場合の例:]
    cd /mnt/d/download/xilinx
    ./Xilinx_Unified_2020.1_0602_1208_Lin64.bin --noexec --target ~/xilinx-installer
    これで、~/xilinx-installer ディレクトにインストール用ファイルが抽出される。
  2. ユーザ名、パスワードの入力
    抽出されたディレクトリに移動し、 ./xsetup -b AuthTokenGen を実行する。
    cd ~/xilinx-installer
    ./xsetup -b AuthTokenGen
    で、User ID, Password ( Xilinx のアカウント登録した ID(メールアドレス) と パスワード) を入力する。
    ( ./xsetup コマンド 実行してから UserID, Password 入力まで 数分 かかった。
     以降、コマンド入力後、気長に待つ必要あり。(環境に依存するかも) )
  3. 設定ファイルの作成
    ./xsetup -b ConfigGen
    で、インストール用の設定ファイルを作成する。
    実行すると以下の様な選択項目が表示されるため、選択する。
    Select a Product from the list: に Vivado (2) を選択
    Select an Edition from the list: に WebPACK (1) を選択
    選択後、設定ファイルのパス,ファイル名 が表示される。
  4. 設定ファイルの編集
    3. で生成された設定ファイル (テキストファイル) を編集する。
    ( 今回は、インストール先を  /tools/Xilinx  に修正した。 )
  5. インストールの実行
    sudo ./xsetup --agree XilinxEULA,3rdPartyEULA,WebTalkTerms --batch Install --config <設定ファイルのパス/ファイル名>
    で、Vivado のダウンロートとインストールを開始する。
    2020.1 での ダウンロードサイズ は 16.12GB だった。

    インストール終了後、Xilinx Information Center が起動したため、
     [File] → [Exit]  で、これを閉じた。

Vivado 実行:

以下の様に、インストールディレクトリの settings64.sh を ソースし、vivado を実行する。( インストール先 : /tools/Xilinx, Ver 2020.1 の場合 )
source /tools/Xilinx/Vivado/2020.1/settings64.sh
vivado

vivado の実行で、GUI で Vivado が起動する。

2020年8月4日火曜日

raspberry pi : NFSサーバーのインストール

目的:

NFSサーバーをインストールし 接続した USB HDD を NFS で共有できるようにする。

手順:

以下の手順で nfs-kernel-server をインストールし、共有ディレクトリの設定を行う。
  1. パッケージリストの更新、パッケージのアップデートを行う。
    sudo apt update
    sudo apt upgrade
     
    この時、カーネルの更新が行われた場合は、再起動する。
    sudo reboot
     
  2. nsf-kernel-server のインストールを行う。
    sudo apt install nfs-kernel-server
     
  3. /etc/export を編集し、共有ディレクトリを設定する。
    sudo vi /etc/exports

    以下の書式でディレクトリを追記する。
    <共有ディレクトリ> <ホスト1>(オプション) <ホスト2>(オプション) …

    例:
    /mnt/hdd1 192.168.1.0/255.255.255.0(rw,sync)

  4. 設定を反映する
    exportfs -ra

以上で、NFSサーバーのインストール、設定は終了。

クライアント側の設定については、
  Windows10の場合 はこちら
  WSL では NFS クライアント は使用できなさそう。


/etc/export 書式 :

<共有ディレクトリ> <ホスト1>(オプション) <ホスト2>(オプション) …

<共有ディレクトリ>
共有させたいディレクトリを記載
<ホスト>
共有ディレクトリにアクセスするクライアントを記載
ホスト名, IPアドレス, IPネットワーク  等を記載
IPネットワークは、
192.168.1.0/24
192.168.1.0/255.255.255.0
の様な形式。
(オプション)
主なオプションを以下に示す。
rw             : 読み出し、書き込み 可能
ro             : 読み出し専用 (default)
sync           : 同期書き込みを有効にする (default)
async          : 非同期書き込み(遅延書き込み)を有効にする
root_squash    : root としての書き込みを行わない様にする。(default)
                 (rootのuidとgidをanonymousのuidとgidに割り当てる。)
no_root_squash : root_squashを無効にする。
all_squash     : すべてのuidとgidをanonymousのuidとgidに割り当てる。
anonuid=uid    : anonymousに割り当てるuidを指定する。
anongid=gid    : anonymousに割り当てるgidを指定する。
secure         : 1023番以前のポートの接続のみ許可する。 (default)
insecure       : 1024番以降のポートの接続も許可する。


Windows10 : NFSクライアントのインストール

目的:

Windows10 に NFSクライアント をインストールし、Linux に接続した USB HDD を NFS で共有できるようにする。

手順:

以下の手順で NFSクライアント を有効化し、NFS アクセスの設定を行う。
  1. NFS クライアントの有効化
    1. スタート(画面左下) を右クリックし、「アプリと機能」を押下
    2. 右上 関連設定 の 「プログラムと機能」を押下
    3. 左側にある 「Windowsの機能の有効化または無効化」を押下
    4. 「NFS用サービス」の 「NFSクライアント」にチェックをして、「OK」を押下
       
  2. マウント
    1. スタート(画面左下) を右クリックし、「コマンドプロンプト」を押下
      (管理者権限ではない方)
    2. mount <NFSサーバ>:<exportディレクトリ> <マウントドライブ>
      で、NFSサーバーのディレクトリをマウントする。
      例:
      mount 192.168.1.91:/mnt/hdd1 w:¥

  3. アンマウント
    1. umount <マウントドライブ>
      例:
      umount w:¥

アクセス時の uid, gid:

マウント時の uid, gid を指定するには、¥Windows¥System32¥drivers¥etc ディレクトリに passwd ファイル, group ファイルを 作成する必要がある。
作成しない場合の uid, gid は 適当な値(?) になっている。
uid, gid の指定は、以下の様な ファイルを作成して行う。

uid :

¥Windows¥System32¥drivers¥etc¥passwd
に、
<Windows ユーザ名>:x:<uid>:<gid>:<コメント>::
の形式で記入する。
例: (Windows ユーザ名=hoge, uid=1001, gid=1001 の場合)
hoge:x:1001:100:hoge::

gid :

¥Windows¥System32¥drivers¥etc¥group
に、
<Windows 所属グループ名>:x:<gid>:
の形式で記入する。
例: (Windows ユーザ名=Administrators, gid=1001 の場合)
BUILTIN¥Administrators:x:1001:
( Administrators の場合は、前に BUILTIN¥ を付ける )

passwd, group ファイルを作成/保存したら、内容を反映させる為に 一度 アンマウント して、再度 マウント を行う。

以上

2020年1月17日金曜日

linux : サービスの作成、管理

目的:

Linux での サービスの作成、管理について記しておく。

概要:

サービスの作成、管理は systemctl で行う。
systemctl は rootで実行, または sudo をつけて実行する。
サービスは、"unit" 単位で管理される。

systemctl コマンド:


  • サービス起動
    $ sudo systemctl start [unit名]
  • サービス停止
    $ sudo systemctl stop [unit名]
  • サービス再起動
    $ sudo systemctl restart [unit名]
  • サービスリロード(再読み込み)
    $ sudo systemctl reload [unit名]
  • サービスステータス表示
    $ sudo systemctl status [unit名]
  • サービス自動起動有効
    $ sudo systemctl enable [unit名]
  • サービス自動起動無効
    $ sudo systemctl disable [unit名]
  • サービス自動起動設定確認
    $ sudo systemctl is-enabled [unit名]
  • サービス一覧
    $ sudo systemctl list-unit-files --type=service
  • 設定ファイルの再読込
    $ sudo systemctl daemon-reload

サービスの作成:

  1. サービスで実行する処理(スクリプト等)を作成する。
  2. /etc/systemd/system に unit定義ファイル (下記参照) を作成する。
  3.  sudo systemctl list-unit-files --type=service で作成したサービスが表示されることを確認する。
  4.  サービスを起動する。(systemctl start [unit名])
  5. 自動起動を設定する。(systemctl enable [unit名])

unit定義ファイル:

unit定義ファイルの例

[Unit]
# サービスの説明。内容は任意
Description=unit file sample
# このUnitより先に起動するべきUnitを設定
After=network.target
 
[Service]
# 実行するコマンドやスクリプトを記述
ExecStart=/usr/bin/test.sh
# サービス停止時の Kill する単位を設定
KillMode=process
# プロセスの起動方法を指定
Type=simple
# サービス停止時の再起動条件 (no は再起動しない)
Restart=no

[Install]
# 該当ユニットへの弱い依存関係を設定
WantedBy=multi-user.target

log 確認:


サービスの log確認は、
$ sudo journalctl -u [unit名]

で行う。
このlog は、/var/run/log/journal にバイナリ形式で保存され、再起動で消えるため、 log は直近の起動後のみが確認できる。
再起動で消えないようにする為には、 /var/log に journal ディレクトリを作成し、再起動する。

$ sudo mkdir /var/log/journal

$ sudo reboot

2019年6月22日土曜日

WSL : シェルを tcsh にする

目的:

通常使用するシェルを tcsh にする。

手順:

 

インストール

sudo apt-get update
sudo apt-get install tcsh

シェルの切り替え

tcsh

tcsh のパスを確認

which tcsh

起動時のシェルを変更する

chsh -s /usr/bin/tcsh <ユーザ名>


設定ファイル は、 .cshrc



2019年6月16日日曜日

verilog : コンパイル/シミュレーション環境のインストール (WSL)

目的: 

PC(WSL) 上で Verilog の コンパイル、シミュレーションができる様にする。

インストール内容:

WSL (Debian) 上に Icarus Verilog と gtkwave をインストール。
gtkwave は、GUI の為、事前に Xサーバーのインストールが必要。

インストール手順:

以下を実行する。
sudo apt-get update
sudo apt-get install iverilog
sudo apt-get install gtkwave

gtkwave のインストールに少し時間がかかるが、特に問題なくインストール完了。

実行手順:

以下にコンパイルから波形表示までの手順を簡単に記す。
  • コンパイル
    iverilog -o <出力ファイル名> <Verilog ファイル名>


    iverilog -o test testbench.v test.v
  • シミュレーション実行
    vvp <出力ファイル名>


    vvp test
  • 波形表示
    gtkwave <vcdファイル名>


    gtkwave test.vcd

その他:

gtkwave を実行すると、

(gtkwave:656): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message
GConf Error: No D-BUS daemon running
 

が発生するが、取り敢えず波形は見れそう。



2019年6月15日土曜日

WSL : Xサーバーをインストールする

目的:

Xサーバーをインストールし、WSLで GUI のアプリを実行可能にする。

インストール手順:

  1. VcXsrv Windows X Server」で 「Download」を押下し、インストーラをダウンロードする。
  2. ダウンロードしたファイルを実行する。

Xサーバー起動:

スタートメニューの 「VcXsrv」にある「Xlaunch」 を実行する。
表示方法等、いくつかの選択を行った後、 Xサーバーが起動する。
選択時、最後に 「Save configuration」 を押下すると、設定を保存できる。
次回は、保存した設定ファイルをダブルクリックすると、保存した設定で起動する。

尚、WSL2 の場合は、VcXsrv設定で,
「Additional parameters for VcXsrv」(設定画面 3画面目) に -ac を入力する。

WSL設定:

WSL から Xサーバーを使用する為に DISPLAY を設定する。
設定は、.bashrc に以下の1行を追加。

WSL1 の場合:
export DISPLAY=:0.0
WSL2 の場合:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0


.cshrc の場合は
setenv DISPLAY :0.0


WSL : 端末を wsltty にする

目的:

WSL (Windows Subsystem for Linux) の端末を wsltty に変更する。

インストール手順:

  GitHub (mintty/wsltty) から、インストールファイルをダウンロードし実行する。
  1. 少し下にある 「Installation from this repository」 の下の 「download」をクリックし、wsltty-*.*.*.*-install.exe をダウンロードする。
  2.  ダウンロードしたファイルを実行する。
    この時、「Windows によってPCが保護されました Windows Defender ..... 」
    の警告が出た為、「詳細情報」をクリックし、「実行」をクリックしてインストールを実行。

 起動:

 インストール終了後、スタートメニューに登録されていなかったため、PCを再起動。
再起動後、スタートメニューに WSLTTY が追加されていることを確認。
また、「Debian Terminal」 の様な メニューも追加されている。

WSLTTYの下にある 「add to context menu」を実行すると、エクスプローラの 右クリックメニューに WSLTTY を開くメニューが追加される。





2019年3月19日火曜日

VIM : beep音を止める/画面フラッシュを止める

目的:
 VIM で、beep 音 や 画面フラッシュ(点滅) を止める。

 背景:
 カーソルを文章の端からさらに移動させようとした時などに beep音がなったり、画面が点滅すると煩わしいため、これを止めたい。

方法:
 beep音と止めて、画面を点滅させる。
  set vb
   又は
  set visualbell
 beep音と止めて、画面の点滅もさせない。
  set vb t_vb=
 又は
  set visualbell t_vb=

尚、 KaoriYa gvim で、
 _vimrc の set visualbell t_vb= を設定しても、画面のフラッシュが発生。
 _gvimrc に set visualbell t_vb= を設定すると、画面のフラッシュも停止。

2019年3月3日日曜日

VIM : よく使うコマンド/設定

VIM よく使うコマンド/設定
  ( 気が付いたら、追加していく )

--- カーソル移動
j                : カーソルを 下に移動
k                : カーソルを 上に移動
l                : カーソルを 右に移動
h                : カーソルを 左に移動
0                : カーソルを 行頭に移動
$                : カーソルを 行末に移動
G                : カーソルを 最終行に移動
<n> G            : <n> 行目へ移動   n: 1~
Ctrl-f           : 1画面進む
Ctrl-b           : 1画面戻る

--- 編集
u                : アンドゥ
Ctrl-r           : リドゥ
i                : カーソルの前で挿入モードに移行
a                : カーソルの後ろで挿入モードに移行
A                : 行末で挿入モードに移行
R                : カーソル位置で置換えモードに移行
Esc              : コマンドモードに移行
x                : 1文字削除
yy               : 1行コピー
dd               : 1行消去
<n>y             : <n>行コピー(ヤンク)
<n>d             : <n>行消去
ma               : マーク ( a は、任意の1文字 )
ya               : マークした行からカーソル行までコピー (aは マークした文字)
da               : マークした行からカーソル行まで消去 (aは マークした文字)
yw               : 1ワードコピー
dw               : 1ワード消去
p                : ペースト
.                : 前の操作を再実行
J                : 次の行を現在の行に連結

--- 矩形編集
Ctrl-v           : 矩形選択開始 カーソル移動で範囲を選択

   y             : 選択範囲をコピー(ヤンク)
   d             : 選択単位を消去
   I             : 選択範囲の前に挿入(挿入モードに移行。ESC で終了

                   挿入した文字が全行に入る)
   c             : 選択範囲を消去して挿入モードに移行。
p                : 矩形選択範囲をコピーした後、p で矩形でペースト

--- ファイル操作
:w               : ファイル保存
:q               : ファイルを閉じる
:wq              : ファイルを保存して閉じる
:q!              : ファイルを強制終了 (保存しない)

--- 検索
/<検索文字列>    : <検索文字列> を検索する
 

--- 置換
:1,$s/<置換前文字列>/<置換後文字列>/g 
                 : ファイル内の <置換前文字列> を <置換後文字列> に置換する。
                   1,$ は 1行目から最終行を表す。
                   3~7行の間だけ置換する場合は 
                     :3,7s/<...>/<...>/g

--- ウィンドウ操作
:sp              : 現在の編集ファイルを縦にウィンドウ分割する。
:sp <ファイル名> : ウィンドウを縦分割して <ファイル名> を開く
:vs <ファイル名> : ウィンドウを横分割して <ファイル名> を開く

Ctrl-w k         : ウィンドウ間を上へ移動する
Ctrl-w j         : ウィンドウ間を下へ移動する
Ctrl-w h         : ウィンドウ間を左へ移動する
Ctrl-w l         : ウィンドウ間を右へ移動する

Ctrl-w +         : ウィンドウサイズを 1行分広げる
Ctrl-w -         : ウィンドウサイズを 1行分狭める
Ctrl-w <n> +     : ウィンドウサイズを <n>行分広げる
Ctrl-w <n> -     : ウィンドウサイズを <n>行分狭める



-------- 設定 ------------------------------------------------------
設定ファイル     : .vimrc に設定。
                    KaoriYa gvim の場合、個人用設定は、ホームディレクトリの _gvimrc, _vimrc
            に記述する。(GUI関連は_gvimrc, 通常のvim設定は _vimrc が良いかな? )
                    ホームディレクトリは、 :echo $HOME で確認できる。

set number       : 行番号を表示する
set nonumbeer    : 行番号を非表示にする
set incserch     : インクリメンタルサーチ オン (1文字入力毎に検索)
set noincseerch  : インクリメンタルサーチオフ
set vb t_vb=     : BEEP音をならない様にする
set mouse-=a     : マウス操作を無効にする
set mouse=a      : マウス操作を有効にする
set fileencoding=utf-8 : ファイル保存時の文字コードを utf-8 にする
set expandtab    : タブ入力を空白入力に置き換える
set shiftwidth=2 : インデントの幅を 2 にする

2018年11月17日土曜日

raspberry pi : dnsmasq サービス開始時に Fail

問題点:
DNS (dnsmasq) が サービス開始時に Fail し、名前解決できなくなった。

原因:
apt-get upgrade を行った事で、何らかの不具合が発生したと推定。
sudo service dnsmasq start を実行すると、

Job for dnsmasq.service failed. See 'systemctl status dnsmasq.service' and 'journalctl -xn' for details.
systemctl status dnsmasq.service を実行すると、

 ● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled)
  Drop-In: /run/systemd/generator/dnsmasq.service.d
           └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
   Active: failed (Result: exit-code) since 土 2018-11-17 18:41:50 JST; 34s ago
  Process: 3918 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=1/FAILURE)
  Process: 3915 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)

何が悪いのか良く判らない。

対応策:
 dnsmasq を アンインストール後、再インストールで 起動できる様になった。

アンインストール
sudo apt-get autoremove dnsmasq

再起動
sudo reboot

インストール
sudo apt-get install dnsmasq

2018年6月17日日曜日

linux : apt-get upgrade で エラーが発生した場合の対処

目的
apt-get upgrade で 以下の様なメッセージが表示された場合の対処

dpkg: パッケージ ******* の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:

対処方法
1. 以下のコマンドで、状況を確認。
sudo dpkg --audit

2. 上記コマンドで表示された設定の完了していなパッケージを以下のコマンドで設定する。
sudo dpkg --configure <パッケージ>

( 依存関係の問題が発生した場合は必要なパッケージの設定を先に行う。)

3. 設定でエラーが発生したパッケージがある場合、/var/lib/dpkg/info にある
<パッケージ>.postinst
<パッケージ>.postrm
<パッケージ>.prerm
を削除してから 2. を行う。