20200327のLinuxに関する記事は12件です。

LTTng Tracing Tips

Overview

Here descibes ROS2 tracepoint related information, this is public info but not so organized well because this is mostly my own note to keep this in the mind. nobody blames on it. ROS2 tracepoint is actually depends on LTTng so knowing LTTng is to help to understand ROS2 tracepoint.

LTTng

Installation

$ sudo apt-add-repository ppa:lttng/ppa
$ sudo apt-get update
$ sudo apt-get install lttng-tools lttng-modules-dkms babeltrace liblttng-ust-dev liblttng-ctl-dev

LTTng Modules

LTTng are the kernel modules, so that you can see a bunch of ko via lsmod command. Notable features are CTF(Common Trace Format) support, tracepoint, function tracer, monitoring and kprobes. LTTng is context aware so that able to attach context information to event in the trace.

Required Kconfig

  • CONFIG_MODULES
  • CONFIG_KALLSYMS
  • CONFIG_HIGH_RES_TIMERS
  • CONFIG_TRACEPOINTS

Tutorial

Hello Tracing

Trace Session Mode

  • Local mode LTTng writes the traces to the file system of the machine it traces (target system).
  • Network streaming mode LTTng sends the traces over the network to a relay daemon running on a remote system.
  • Snapshot mode LTTng does not write the traces by default. Instead, you can request LTTng to take a snapshot, that is, a copy of the tracing session’s current sub-buffers, and to write it to the target’s file system or to send it over the network to a relay daemon running on a remote system.
  • Live mode This mode is similar to the network streaming mode, but a live trace viewer can connect to the distant relay daemon to view event records as LTTng generates them.

and there are so far five tracing domains are supported,

  • Linux Kernel
  • User space
  • java.util.logging
  • log4j
  • Python

License

Package License
LTTng-tools LGPLv2.1 and GPLv2
LTTng-UST LGPLv2.1, the MIT license and GPLv2
LTTng-modules LGPLv2.1, GPLv2 and the MIT license

Reference

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】zipファイルの圧縮, 解凍

下記コマンドのxxxの部分をファイル名にする

zipファイルに圧縮するコマンド

zip -r xxxx.zip directory

zipファイルの解凍コマンド

unzip xxx.zip
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】zipファイルの圧縮, 解凍コマンド

下記コマンドのxxxの部分をファイル名にする

zipファイルの解凍コマンド

unzip xxx.zip

zipファイルに圧縮するコマンド

zip -r xxxx.zip directory
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】PATHについて

ターミナルのコマンドであるPATHについて記載していきます。

PATHとは

コマンド検索パスを追加するコマンドです。
コマンド検索パスとは、コマンドの実行ファイルを探しにいくようなパスのことです。

$ ls
/bin/ls

例えば上記のようにフォルダとファイルを参照する$ lsを実行したときに、/binディレクトリの下にlsという同名の実行ファイルがあるとします。
$ lsはパスを指定せずにコマンドを実行しているので、シェルが各ディレクトリからコマンドに対応している実行ファイルを探しだします。

この探しだすパスをコマンド検索パスといい、PATHコマンドでこのパスを追加することができます。

コマンド検索PATHの確認方法

$ echo $PATHで確認可能です。ある環境だと下記のように表示されます。

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin 

パスは:で区切られており
/usr/local/bin/usr/bin/bin/usr/sbin/sbin/usr/local/sbinの6つが探索コマンドパスとして設定されています。

コマンド実行ファイルの格納場所の確認方法

$ which lsで確認できます。実行結果は下記になります。

$ which ls

#実行結果
/bin/ls

同名の実行ファイルが複数の探索コマンドパスにあるとき

この場合は優先度があり、$ echo $PATHで出力された左のものから実行されます。
例えば下記のような場合だと

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin

/usr/local/binから実行されます。
優先度としては/usr/local/bin/usr/bin/bin/usr/sbin/sbin/usr/local/sbinとなります。

PATHの追加

PATHを追加するには.bashrc.bash_profileファイルにexport PATH=$PATH:追加したいコマンド検索パス形式で記載すると追加されます。

実際にPATHを追加して通してみる

.bashrc
export PATH=$PATH:追加したいコマンド検索パス
.bash_profile
export PATH=$PATH:追加したいコマンド検索パス

PATHを記載するファイルは.bashrc.bash_profileのどちらでも問題ありません。

$ source ~/.bashrc
$ source ~/.bash_profile

それぞれ記述したファイルをsourceコマンドで実行しないとパスが通りません。

exportコマンドとは

環境変数を表示や設定をする。

環境変数の表示

export -p

#出力結果(一部のみ記載)
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
declare -x LANG="ja_JP.UTF-8"
declare -x SHELL="/bin/bash"

設定されている環境変数を表示しています。

環境変数の設定

例えば$ ULBという環境変数を設定する場合は、下記のように設定します。

$ export ULB=/usr/local/bin

$ echo $ULB
/usr/local/bin #出力結果

$ echo $ULBで設定されていることを確認していています。

ls /usr/local/bin
ls $ULB

どちらのコマンドでも同様の結果になります。

環境変数の上書き

$ echo $ULB
/usr/local/bin #出力結果

$ export ULB=/u/l/b

$ echo $ULB
/u/l/b #出力結果

上記のように環境変数の上書きを行うこともできます。

環境変数の削除

unsetコマンドで削除することができます。

$ unset ULB #[$]は入力しなくて良い。

$ echo $ULB
#何も出力されない。

追加するコマンド探索パスの優先度を高くする

$ export PATH=追加したいコマンド検索パス:$PATH

コマンド探索パスは左から優先度が高くなっているので、このように記載する。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ConoHa VPS (ubuntu 18.04) 初期設定メモ

ConoHaが新プランになったし、再度別のサーバをUbuntu18.04から立ち上げる。この記事の更新の位置づけ。本当は20.04を待ちたかったけどまあいいや。

ConoHa VPSの契約

RAM1GB/SSD100GBプラン@東京リージョンを契約。月880円。3,4年前より安いわSSDが倍だわ…
- ひとまずポート制限はなし。sshでログインしてから設定。
- イメージタイプはOS。ubuntu 18.04を選択。OSじゃなくてアプリ指定(例えばDocker指定)しても立ち上げられんのね。進化してる!
- SSH Pubkeyは登録しない。仮想マシン作成時はユーザが作られないため、ユーザを作ってから登録する。

ドメインの設定

ドメイン管理はさくらインターネットのまま保持。
- さくらのドメイン管理画面から、当該ドメイン名のアドレスを変える。
- ConoHaのサーバ管理画面で、逆引きホスト名として当該ドメイン名を入れておく。念のため。

セキュリティ周りの初期設定

ユーザ作成 & ssh

SSHかコントロールパネルからrootでシェルログインをしてユーザ作成、sudoersに追加、ssh鍵の設定、viで適当に新しいユーザの公開鍵をコピペして登録、まで一気にやってしまう。

# adduser <new user>
# usermod -aG sudo <new user>
# su <new user>
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ vi ~/.ssh/authorized_keys

sshd_configをいじってPort変更、Root/Passwordログインを禁止、公開鍵ログインのみとする。

$ sudo vi /etc/ssh/sshd_config
- Port 22
+ Port xxx # ポート変更

- PermitRootLogin yes
+ PermitRootLogin no

- PubkeyAuthentication no
+ PubkeyAuthentication yes #公開鍵ログイン

- PasswordAuthentication yes
+ PasswordAuthentication no

- UsePAM yes
+ usePAM no

$ sudo /etc/init.d/ssh restart

iptablesの設定

ufwで楽をする。Port 80/443はdockerのnginx-proxyが勝手に空けてくれるのでわざわざ空けなくてよろしい。

$ sudo ufw allow <ssh port> # ssh
$ sudo ufw default deny # デフォルトでは全部拒否
$ sudo ufw enable

確認。

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip


To                         Action      From
--                         ------      ----
<ssh port>                 ALLOW IN    Anywhere                  
<ssh port> (v6)            ALLOW IN    Anywhere (v6)             

IPv6の設定

ConoHa VPSには、サーバごとに17個のIPv6アドレスが振られている。
しかし、Ubuntu18.04イメージで作成したイメージにはIPv4アドレスのみが割り当てられている。
IPv6でアクセスしたいのでIPv6アドレスも割り当てる。

/etc/netplan/10-gmovps.yaml
network:
    ethernets:
        eth0:
-           addresses: [] 
+           addresses:
+             - <ipv6_address>/64
            dhcp4: true
            dhcp6: false
            accept-ra: false
            optional: true
+           gateway6: <gateway_address>
    version: 2

上記のように変更、あるいは11以上のプレフィックスのついたyamlを作って上記のように入れて設定を上書きする(e.g., /etc/netplan/20-mynetwork.yaml)。そして以下を実行して反映。

$ sudo netplan apply

ホスト名変更

/etc/hosts/etc/hostnameが食い違ってるので、

/etc/hosts
127.0.0.1 conoha

/etc/hostname
conoha

みたいにしておく。

NTPはもう入れない

もうNTPサーバを立てる必要もなさそう。Ubuntuではsystemd-timesyncdが動いているので勝手に時刻同期してくれるようだ。

こんな感じで同期している。

$ timedatectl status
                      Local time: Tue 2020-03-17 17:37:26 JST
                  Universal time: Tue 2020-03-17 08:37:26 UTC
                        RTC time: Tue 2020-03-17 08:37:27
                       Time zone: Japan (JST, +0900)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Docker

サーバは全部Dockerで動かす所存。

リポジトリの設定

$ sudo apt-get update;
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # DockerのGPG鍵を導入
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable" # リポジトリ追加

Docker Community Editionの導入

$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker run hello-world # 動作確認

作った一般ユーザでDockerが利用できるようにしておく

sudo usermod -aG docker <new user>

Docker Composeの導入

$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# これ書いてる時点では1.25.4が最新。状況はgithubをチェック。 https://github.com/docker/compose/releases

$ sudo chmod +x /usr/local/bin/docker-compose # 実行権限付与
$ docker-compose --version # チェック
docker-compose version 1.25.4, build 8d51620a

参考:
Get Docker CE for Ubuntu
Install Docker Compose

Logwatchでgmail宛にログを投げる。

念のため。

$ sudo apt-get install logwatch
$ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

gmail宛に編集。

/etc/logwatch/conf/logwatch.conf
- MailTo = root
+ MailTo = xxx@gmail.com

以下の記事を使って、さくらのメールサーバをリレーサーバとし、postfixからgmailへ送るようにする。

https://qiita.com/jqtype/items/cfb03be0efb8eacd8978

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

秘密鍵はchmodで600にする話

秘密鍵(id_rsa)について、よくつまづくのでメモ。

はじめに

自分の秘密鍵を.ssh配下にコピペしてgit cloneしたら以下のエラーが。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/yu_uchida/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/yu_uchida/.ssh/id_rsa
Permission denied (publickey).
fatal: Could not read from remote repository.

パーミッションが too openだと怒られてます。

解決方法

chmodでパーミッションを0600にする。

$ chmod 0600 id_rsa

これでgit cloneできるようになりました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】Amazon Linux 2にMavenをインストールする方法

概要

AWS EC2(AMI: Amazon Linux 2)にMavenをインストールしてmvnコマンドが使えるようにする

環境

  • AWS EC2
    • OS: Amazon Linux 2
    • AMI ID: amzn2-ami-hvm-2.0.20200304.0-x86_64-gp2

構築手順

1. JDK8をインストールする

  • Amazon Linux 2にはデフォルトでJavaが入っていないのでインストールする
    • Apache Maven 3.3以降はJDK 1.7以上が必要
$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
$ sudo alternatives --config java
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

2. Mavenをダウンロードする

  • ダウンロード先: Downloading Apache Maven
    • Binary tar.gz archiveのLinkのURLをコピーしてwgetでダウンロード
$ cd /usr/local/lib/
$ sudo wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

Saving to: ‘apache-maven-3.6.3-bin.tar.gz’  
2020-03-27 11:23:54 (23.6 MB/s) - ‘apache-maven-3.6.3-bin.tar.gz’ saved [9506321/9506321]

3. Mavenを展開して配置する

  • ダウンロードしたファイルを解凍して/opt/に配置
  • 展開したapache-maven-3.6.3apache-mavenのシンボリックリンクを貼る
$ sudo tar -xzvf apache-maven-3.6.3-bin.tar.gz
$ sudo mv apache-maven-3.6.3 /opt/
$ cd /opt/
$ sudo ln -s /opt/apache-maven-3.6.3 apache-maven
$ ls -l
lrwxrwxrwx 1 root root 23 Mar 27 11:36 apache-maven -> /opt/apache-maven-3.6.3
drwxr-xr-x 6 root root 99 Mar 27 11:28 apache-maven-3.6.3

4. MavenへのPATHを追加する

  • .bash_profileMVN_HOMEを追加する
  • PATHMVN_HOME/binを追加する
  • .bash_profileを反映する
$ cd
$ vi .bash_profile
MVN_HOME=/opt/apache-maven
PATH=$MVN_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin

$ source .bash_profile

5.mvnコマンドが使えることを確認する

$ mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.amzn2.0.1.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.171-136.231.amzn2.x86_64", arch: "amd64", family: "unix"

感想

Maven homeをどこにすべきかちょっと迷った

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux で ISO ファイル(CDイメージ)を作成する方法

Linux で ISO ファイル(CDイメージ)を作成する方法

ファイルやフォルダからisoファイルを作成する場合

# mkisofs -r -J -V <ラベル> -o <isoファイル名> <ディレクトリ名>

(例)# mkisofs -r -J -V "MyCD" -o cd_image.iso /home/hoge/・CD/DVDドライブからISOファイルを作成する場合

CD/DVDドライブからISOファイルを作成する場合

# dd if=/dev/cdrom of=<isoファイル名>

(例)# dd if=/dev/cdrom of=cd_image.isoまたは

または

# mkisofs -r -J -o -V <ラベル> -o <isoファイル名> <マウント場所>

(例)# mkisofs -r -J -V "MyCD" -o cd_image.iso /media/cdrom

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ultra96/Ultra96-V2 向け Debian GNU/Linux で XRT(Xilinx Runtime) を動かす(実践編)

はじめに

筆者は Ultra96/Ultra96-V2(ZynqMP) 向けに Debian GNU/Linux を提供しています1。また、XRT(Xilinx Runtime) はXilinx社が提供する開発環境(Vitis)で開発したプログラムをプラットフォームで動かすための環境です2

本来なら MPSoC Edge Device 用の XRT は Xilinx が提供する Linux 環境(Petalinux) でしか動きませんが、この記事では Ultra96/Ultra96-V2 向け Debian GNU/Linux で動かすための手順を幾つかのパートに分けて説明します。

注意

この記事で紹介している Debian Package は Xilinx 社の公式なものではありません。

サンプルの紹介

この実践編で紹介する XRT のサンプルは「FPGAの部屋」というブログを書いている @marsee101 さんから提供されたものです。この場をお借りして感謝申し上げます。このサンプルのビルド方法や詳しい説明はブログの次のページを参照してください。

サンプルのダウンロード

上で紹介したサンプルのバイナリファイルを、@marsee101 さんの許可のもとに、githubで公開しています。

このリポジトリを ZynqMP-FPGA-XRT をインストールした Ultra96-V2 にダウンロードしてください。

shell$ git clone https://github.com/ikwzm/ZynqMP-FPGA-XRT-Example-1-Ultra96
Cloning into 'ZynqMP-FPGA-XRT-Example-1-Ultra96'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 13 (delta 3), reused 13 (delta 3), pack-reused 0
Unpacking objects: 100% (13/13), done.
shell$ cd ZynqMP-FPGA-XRT-Example-1-Ultra96

FPGA ビットストリームファイルの準備

ダウンロードしたリポジトリにはすでに FPGA ビットストリームファイル(streaming_lap_filter5.bin) は含まれていまが、この節では、このビットストリームファイルの作り方を説明しておきます。

このビットストリームファイルは Partial Reconfiguration のベースとなります(ここらへんの話は インストール編 の「Device Tree の準備」を参照してください)。本来ならベースとなるビットストリームファイルは xclbin を作ったときに別に作られるべきものですが、このサンプル例では「たまたま」 xclbin ファイルに含まれているビットストリームファイルと同じです。したがって、まず、xclbinutil コマンドを使ってビットストリームファイルを取り出します。

shell$ xclbinutil --input streaming_lap_filter5.xclbin --dump-section BITSTREAM:RAW:streaming_lap_filter5.bit
XRT Build Version: 2.6.0 (2019.2_Ultra96)
       Build Date: 2020-03-26 13:46:25
          Hash ID: 4a669990dd872f3b683009c0e2200b3bd3d2a9c0
------------------------------------------------------------------------------
Warning: The option '--output' has not been specified. All operations will
         be done in memory with the exception of the '--dump-section' command.
------------------------------------------------------------------------------
Reading xclbin file into memory.  File: streaming_lap_filter5.xclbin
Section: 'BITSTREAM'(0) was successfully written.
Format: RAW
File  : 'streaming_lap_filter5.bit'
Leaving xclbinutil.

次に、bootgen コマンドを使って streaming_lap_filter5.bin を作ります。streaming_lap_filter5.bif はリポジトリに含まれています。

shell$ bootgen -arch zynqmp -image streaming_lap_filter5.bif -o tmp.bin
****** Xilinx Bootgen v2019.2
  **** Build date : Jan 16 2020-08:00:00
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

bootgen コマンドは XRT(Xilinx Runtime) には含まれていません。以下の記事を参考にインストールしてください。

zocl の準備

ZynqMP-FPGA-XRT をインストールした際に zocl (MPSoC Edge Device 用の Linux カーネルモジュール)もインストールされています。ただしzocl は Linux にインストールしただけでは有効になりません。zocl を有効にするためには Device Tree が必要です。そこで次のような Device Tree を用意しています。

zocl.dts
/dts-v1/; /plugin/;
/ {
    fragment@0 {
        target-path = "/fpga-full";
        __overlay__ {
            firmware-name = "streaming_lap_filter5.bin";
        };
    };
    fragment@1 {
        target-path = "/amba_pl@0";
        __overlay__ {
            #address-cells = <2>;
            #size-cells = <1>;
            zyxclmm_drm {
                compatible = "xlnx,zocl";
                status = "okay";
                reg = <0x0 0xA0000000 0x10000>;
            };
            fclk0 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&zynqmp_clk 0x47>;
                insert-rate   = "100000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
        };
    };
};

streaming_lap_filter5.bin を /lib/firmware にコピーします。

shell$ sudo cp streaming_lap_filter5.bin /lib/firmware/

zocl.dts を Device Tree Overlay します。 dtbicfg.rb というDevice Tree Overlay 用の ruby スクリプトを用意していますので、こちらを使います。

shell$ ./dtbocfg.rb --install zocl --dts zocl.dts
<stdin>:14.16-18.6: Warning (unit_address_vs_reg): /fragment@1/__overlay__/zyxclmm_drm: node has a reg or ranges property, but no unit name

dmesg でカーネルのログを確認します。fpga manager によってstreaming_lap_filter5.bin が FPGA にプログラムされたこと、zocl カーネルモジュールがロードされたこと、fclkcfg によって PL Clock0 の周波数が 100MHz に設定されたことを確認できたら成功です。

shell$ dmesg | tail -12
[ 4824.024388] fpga_manager fpga0: writing streaming_lap_filter5.bin to Xilinx ZynqMP FPGA Manager
[ 4824.176574] [drm] Probing for xlnx,zocl
[ 4824.176710] [drm] FPGA programming device pcap founded.
[ 4824.176715] [drm] PR Isolation addr 0x0
[ 4824.178392] [drm] Initialized zocl 2018.2.1 20180313 for a0000000.zyxclmm_drm on minor 1
[ 4824.180629] fclkcfg amba_pl@0:fclk0: driver installed.
[ 4824.180640] fclkcfg amba_pl@0:fclk0: device name    : amba_pl@0:fclk0
[ 4824.180644] fclkcfg amba_pl@0:fclk0: clock  name    : pl0_ref
[ 4824.180649] fclkcfg amba_pl@0:fclk0: clock  rate    : 99999999
[ 4824.180674] fclkcfg amba_pl@0:fclk0: clock  enabled : 1
[ 4824.180677] fclkcfg amba_pl@0:fclk0: remove rate    : 1000000
[ 4824.180681] fclkcfg amba_pl@0:fclk0: remove enable  : 0

XRT 環境の設定

XRT 用の環境変数を設定します。XRT には環境変数の設定用に /opt/xilinx/xrt/setup.sh が用意されているので、これを使います。

shell$ source /opt/xilinx/xrt/setup.sh
XILINX_XRT      : /opt/xilinx/xrt
PATH            : /opt/xilinx/xrt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LD_LIBRARY_PATH : /opt/xilinx/xrt/lib:
PYTHONPATH     : /opt/xilinx/xrt/python:

サンプルの実行

サンプルを実行します。次のような結果が出たら成功です。

shell$ ./streaming_lap_filter5.exe streaming_lap_filter5.xclbin
Using FPGA binary file specfied through the command line: streaming_lap_filter5.xclbin
Found Platform
Platform Name: Xilinx
Loading: 'streaming_lap_filter5.xclbin'
total time = 0.001533 sec
Success HW and SW results match

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxとは

OS

OSとは、Operating Systemの略で、システム全体を管理するソフトウェアのこと。
みんながPCとして利用しているWindowsやMacなどもOS。

Linux

プログラミングではLinuxというOSがよく用いられる。LinuxはWindowsやMacとは異なり、厳密にはOSの中核部分(Linuxカーネル)を指す。

実用的なOSとして動かすためには、カーネルに加え、画面表示・通信・ファイル管理など各種機能を担うソフトウェアを組み合わせる必要がある。
車に例えるならカーネルはエンジン。エンジンは車の中核部分だが、車が走行するためにはブレーキ・アクセル・ハンドルなどの部品が必要になる。

Linuxカーネルとソフトウェアを組み合わせて実際に機能するOSを作り上げるためには、Linuxカーネル自体やOSに関する深い知識が必要となるため、現実的ではない。

Linuxディストリビューション

そこで、一般のユーザーや開発者が手軽にLinuxを利用できるよう、Linuxカーネルと各種ソフトウェアをいい感じに組み合わせて配布されているものがある。これが「Linuxディストリビューション」。一般的には色々なLinuxディストリビューションをまとめて「Linux」と呼ぶことが多い。

サーバー向けに安定性を重視したもの、古いPCでも快適に利用できるものなど、Linuxディストリビューションには様々な用途に最適化されたものが存在している。

Linuxを使う理由

プログラミングのためにLinuxを使う理由は、Linuxにはプログラミング用のソフトウェアが豊富に存在し、便利だから。
さらに、 Linux は GNU General Public Licence (グヌー・ジェネラル・パブリック・ライセンス、GPL) というライセンスの下で提供されているため、基本的に無料で利用できる。
これは膨大な数の PC を用意することになるサーバー運営において、大きくコストを下げることができるというメリットがある。
そのためWebプログラミングの世界では、広くLinuxが利用されている。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

e2fsprogsのマニュアルの日本語訳

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】実務で使ってるLinuxコマンド一覧

実務で使ってるLinuxコマンド一覧

最近ではLAMP環境でアレコレやることも(きっと)減っていて、
僕自身、実際あまりLinuxコマンドに触れることはなかったです。

使ってたのはせいぜい

cd
mkdir
rm
vim
ls

ぐらいでした。

オプションつけるなんてことも滅多になく。
(あったとしてもrm -rf)

しかし3月〜、受託会社にてエンジニアとして勤めていると、
なんとまぁLinuxコマンドはわりと普通に使うんですね。(当然ですかね。。笑)

ということで色々とアレコレやりだして仕入れた、
Linuxコマンドたちを備忘録としても使えるようにまとめてみました。

ls

List Segmentsの略、らしい。
カレントディレクトリのファイルやディレクトリを一挙に表示してくれます。

実行結果
$ ls
Application  Documents  Downloads  Library  Movies  Music
Pictures  Public

個人的にはlオプションをつけて表示すると、縦一列に並ぶ上、ファイルの持つ権限なども
一覧になり、管理する上でも、シンプルに閲覧する上でも見やすくて欠かせないオプションです。

mkdir

Make Directoryの略ということで、
文字通り、ディレクトリを作成するコマンドです。

実行結果
$ mkdir test_directory
$ ls
test_directory

cd

Change Directoryの略ということらしく、
ディレクトリを移動するためのコマンドです。

実行結果
$ cd test 
$ pwd
Users/User_Name/test

因みに、存在しないディレクトリには移動できないため、
ディレクトリを作成する意図がある場合には、
mkdirでディレクトリを生成してからにしましょう!

よく使うのは、「..」で、1階層上のディレクトリに移動するというコマンドです。
cdだけで打つと、ホームディレクトリに一発で戻れます。
ディレクトリ移動をうっかり間違えた場合などは「cd -」で一個前にいたディレクトリに戻ります。

pwd

Positioning Work Directoryの略(のはず)らしいです。
いまいるディレクトリのパスを表示するというコマンドです。

実行結果
$ pwd
Users/User_Name/

たったそれだけですが、本番環境などで作業する際に、
cdコマンドで移動したあとに、ちゃんと想定通りのディレクトリに移動したか?
などの確認のために使っています。

rm

Removeの略だと思っている。
ファイル削除のためのコマンドです。

実行結果
$ ls
test1.txt test2.txt test3.txt
$ rm test1.txt
$ ls
test2.txt test3.txt

-rfオプションをつけるとディレクトリ削除ができます。
因みに、つけないとディレクトリ削除はできません。

実行されたが最後、問答無用で削除するので、
本番環境にいる場合など、要注意です。

ps

なんの略だか知りません。笑
Linux上で稼働中のプロセスを表示するコマンドです。

実行結果
$ ps
 PID TTY           TIME CMD
1989 XXXXXXX    0:00.03 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server

auxオプションをつけると、より詳細かつ、より幅広いプロセスの情報を一覧することができていて、
実務上で使うのは、以下のコマンドです。

実行結果
$ ps aux| grep hoge
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
hoge     2336   0.0  0.0  4268212    540 s001  R+    1:21AM   0:00.00 grep root

grep

psコマンドの紹介中にちゃっかり出てきたこいつ、
ファイル中の文字列に対して正規表現を使って検索し表示するというコマンドです。

実行イメージ
$ grep test DIRECTORY_NAME/*

上記のコマンドを打つと、DIRECTORY_NAMEというディレクトリ内にあるファイルの中身を検索し、
testという文言がある箇所がコンソールに表示されます。

ssh

TeratermやPuTTyなどの便利な接続ツールがあるおかげであまりコマンドを打って
サーバーに接続するみたいなのってイメージとして減っているように思うのですが、
実際はどうなんでしょうか?

実行結果
$ ssh hoge_server
hoge_server $

基本的にはパスワードやらの入力は必要だと思いますが、このコマンドを用いて他サーバに接続することが可能です。
また、~/.ssh/configというファイルの中にssh接続情報が格納されており、
ここにアレコレ記述することで、ssh接続の際の手間を削減することも可能です。

chmod

Change Modeの略らしく、ファイルやディレクトリに与えられている権限の変更を行うコマンドです。

実行結果
$ chmod 777 test.txt

777はあまり使わないようにも思いますが、
読み書き実行についての権限が変更できます。

先に紹介したlsコマンドの-lオプション付きでの実行により、
ここでいう権限も確認できるようになっています。

chown

Change Ownerの略らしく、ファイルやディレクトリの所有者を変更するコマンドです。

大体はユーザーかrootなのかな?と思っていますが、
まぁこれらを変更するコマンドです。

実行結果
$ chown root:root

ざっと思い出せる限りで書いてみました。

Linuxコマンドは数も多く、コマンドそれぞれのオプションも多いので、
覚えるのが大変!って思うかもしれません。。

なので、本番環境やプロジェクトのテスト環境ではなく、
完全にプロジェクトに影響のないローカル環境で
バチバチ動かしてみて、体で覚えていくと良いかなと思います。

これからもがんばります。笑

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む