- 投稿日:2020-03-27T23:05:02+09:00
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-devLTTng 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
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
- 投稿日:2020-03-27T20:57:22+09:00
【Linux】zipファイルの圧縮, 解凍
下記コマンドのxxxの部分をファイル名にする
zipファイルに圧縮するコマンド
zip -r xxxx.zip directoryzipファイルの解凍コマンド
unzip xxx.zip
- 投稿日:2020-03-27T20:57:22+09:00
【Linux】zipファイルの圧縮, 解凍コマンド
下記コマンドのxxxの部分をファイル名にする
zipファイルの解凍コマンド
unzip xxx.zipzipファイルに圧縮するコマンド
zip -r xxxx.zip directory
- 投稿日:2020-03-27T19:38:00+09:00
【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を追加して通してみる
.bashrcexport PATH=$PATH:追加したいコマンド検索パス.bash_profileexport 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コマンド探索パスは左から優先度が高くなっているので、このように記載する。
- 投稿日:2020-03-27T19:19:06+09:00
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.yamlnetwork: 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: noDocker
サーバは全部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 ComposeLogwatchで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へ送るようにする。
- 投稿日:2020-03-27T15:46:54+09:00
秘密鍵は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できるようになりました。
- 投稿日:2020-03-27T12:03:10+09:00
【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.3
にapache-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.34. MavenへのPATHを追加する
.bash_profile
にMVN_HOME
を追加するPATH
にMVN_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_profile5.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をどこにすべきかちょっと迷った
参考
- 投稿日:2020-03-27T10:33:48+09:00
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
- 投稿日:2020-03-27T09:03:58+09:00
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 さんから提供されたものです。この場をお借りして感謝申し上げます。このサンプルのビルド方法や詳しい説明はブログの次のページを参照してください。
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す1』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す2』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す3』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す4』
サンプルのダウンロード
上で紹介したサンプルのバイナリファイルを、@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-Ultra96FPGA ビットストリームファイルの準備
ダウンロードしたリポジトリにはすでに 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 namedmesg でカーネルのログを確認します。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 : 0XRT 環境の設定
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参考
- https://github.com/Xilinx/XRT
- https://github.com/ikwzm/ZynqMP-FPGA-Linux
- https://github.com/ikwzm/ZynqMP-FPGA-XRT
- https://github.com/ikwzm/ZynqMP-FPGA-Ubuntu18.04-Ultra96
- https://github.com/ikwzm/ZynqMP-FPGA-XRT-Example-1-Ultra96
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す1』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す2』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す3』
- 『Vitis 2019.2 で RTL カーネルを使用してストーミング接続を試す4』
- 『bootgen を Debian GNU/Linux、Ubuntu で動かす』@Qiita
- 投稿日:2020-03-27T09:03:23+09:00
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が利用されている。
- 投稿日:2020-03-27T04:42:32+09:00
e2fsprogsのマニュアルの日本語訳
- 投稿日:2020-03-27T01:35:06+09:00
【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_directorycd
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 --serverauxオプションをつけると、より詳細かつ、より幅広いプロセスの情報を一覧することができていて、
実務上で使うのは、以下のコマンドです。実行結果$ 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 rootgrep
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.txt777はあまり使わないようにも思いますが、
読み書き実行についての権限が変更できます。先に紹介したlsコマンドの-lオプション付きでの実行により、
ここでいう権限も確認できるようになっています。chown
Change Ownerの略らしく、ファイルやディレクトリの所有者を変更するコマンドです。
大体はユーザーかrootなのかな?と思っていますが、
まぁこれらを変更するコマンドです。実行結果$ chown root:rootざっと思い出せる限りで書いてみました。
Linuxコマンドは数も多く、コマンドそれぞれのオプションも多いので、
覚えるのが大変!って思うかもしれません。。なので、本番環境やプロジェクトのテスト環境ではなく、
完全にプロジェクトに影響のないローカル環境で
バチバチ動かしてみて、体で覚えていくと良いかなと思います。これからもがんばります。笑