20210221のLinuxに関する記事は8件です。

LPIC201を受ける方へ

はじめに

LPIC201に合格したので、私の勉強方法についてまとめます。
私自身、他の方の合格体験記を励みに勉強していたので、これから受験する方の一つの参考になれば幸いです。

LPIC201とは

ここに訪れている方には説明不要かと思いますが、簡単にご説明します。
LPICとは、LINUX OSに対する知識を問う認定資格です。
LPICにはLevel1〜3まであり、Level3までいくためには、Level1から順次取得していく必要があります。
Level2の認定を受けるためには本試験である201及び、202の二つの試験に合格する必要があります。

筆者スペック

個人的に、合格体験記に筆者スペックが書いてあると自分と照らし合わせて考えられるので、結構好きな欄です。このくらいのバックグラウンドの人が、これくらい勉強して合格したんだな、なんて指標にもなると思うので、一つのサンプルとしてご査収ください。

項目 内容
職業 独立系SIer勤務3年目。主に制御系システムの請負業務。
Linux経験 業務で一年ほど。Linuxベースシステムのミドルウェア開発。
他経験 制御系システム開発(C言語)。最近はパブリッククラウドの設計・構築。
学歴 地方国立理系(非情報分野)
年齢 27歳
保有資格 基本情報技術者 / LPICLevel1 / AWS系 / Azure系

勉強期間

大体1ヶ月です。
1日の勉強量は測定していませんが、1〜3時間くらいだったと思います。
時間ではなく、今日はここまで、と目標を区切ってやりました。

勉強方法

# 内容 期間
1 小豆本を読む 1週間
2 Ping-t 一周目(全てヒット) 2週間
3 Ping-t 二周目(全てコンボ) 5日
4 Ping-t コマ問一周 2日

1.小豆本を読む(約1週間)

まずはLPICお馴染みの小豆本で、内容をさらっと理解します。
ここでは、内容の完璧な理解は意識していなくて、こんなものがあるんだなーくらいで全体像を掴むことを意識しました。
1日1章のペース進めました。

2.Ping-t 一周目(全てヒット)(約2週間)

LPICお馴染みのPing-t。このサイトは本当に素晴らしいと思います。
各章ごとに、10問ずつを1セットとして解いていきました。最初は全然解けないかもしれませんが、心配はいりません。ここで重要なのは、解説までしっかりと目を通すことです。問題の暗記だけでは合格難しいと思います。
1日0.5章くらいのペースで進めました。
0.5章/日というペースはあまり負担になることのないペースでした。また、2日かけて1章を完了するので、2日目に1日目の復習ができたのがよかったと思います。

3.Ping-t 二周目(全てコンボ)(約5日)

一周目は各章ごとに行いましたが、今回は全章をランダムに10問を1セットとして解いていきました。前半の章などは結構忘れてしまったりするので、解説もそれなりに目を通します。
大体1日100問強をコンボにしていきました。

4.Ping-t コマ問一周(約2日)

意外とやらないがちですが、私としてはこれに毎度助けられている気がします。
コマ問は、各章ごとに一周で良いのでやった方がいいと思います。ここまでの選択式の問題だと、コマンドやパスなどが曖昧な記憶になってしまいがちかと思います。コマ問を一周するだけで頭の整理と記憶の定着が出来た感がありました。もちろん最初は全然解けないかもしれませんが、それだけ記憶が曖昧だったと自覚して、頑張って一周はしましょう。

ここまできて、模擬試験を2回実施し、共に9割超え出来ていたので、本番試験に臨みました。

結果


590/800点で合格でした。
偉そうに書いてる割には点は伸びていないですね。
本番中は見たことあるような問題が多かったので、かなりリラックスして臨めました。(正直もっと取れていると思いましたが・・・。)
見たことないような問題も出ましたが、最初から覚悟しておけばパニックにならないと思います。
コマンドの問題は6,7問くらいだったと思います。Ping-tのコマ問よりは圧倒的に簡単でした。オプションは問われることはなく、コマンド単体を答えるだけのものが多かったです。

おわりに

冒頭にも書きましたが、今後201試験を受ける人の参考になればと思います。
年内にLevel3まで取得する予定です。

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

常用のLinuxコマンドラインをまとめ

ファイル管理

  • $ ls -al 隠されたファイルを含めフォーマットに表示
  • $ mkdir YOURDIR ディレクトリを作成
  • $ touch YOURFILE ファイルを作成または更新
  • $ cp YOURFILE1 YOURFILE2ファイル名を更新またはコピー
  • $ cp YOURFILE1 YOURFILE2ファイル名を更新またはコピー
  • $ mv YOURFILE1 YOURFILE2ファイル名を更新または移動
  • $ cp -r YOURDIR1 YOURDIR2ディレクトリ及びディレクトリ配下ファイルをコピー
  • $ rm YOURFILEファイルを削除
  • $ rm -rf YOURDIRディレクトリ及びディレクトリ配下ファイルを削除
  • $ scp -r USERNAME@HOSTIP:~/REMOTEDIR LOCALDIRリモートのディレクトリからディレクトリ及びディレクトリ配下ファイルをコピー

プロセス管理

  • $ ps 現在実行しているプロセスを検閲
  • CTRL+Z 現在実行しているプロセスを一時停止
  • $ bg一時停止するプロセスを検閲
  • $ jobs アクティブなジョブをリスト表示
  • $ fg JOBID動作中のバックグラウンドジョブをフォアグラウンドで実行
  • $ kill PIDプロセスを中止

ファイルと内容検索

  • $ grep YOURKETWORD YOURFILE ファイルに内容検索
  • $ grep -r YOURKETWORD YOURDIRディレクトリ配下ファイルに内容検索
  • $ find YOURDIR -name "YOURSEARCHNAME"ディレクトリ配下ファイルをファイル名またはディレクトリ名で検索
  • $find YOURDIR -name "*.EXNAME"ディレクトリ配下ファイルをファイル名で拡張子で検索、*は.EXNAME以外未指定でも検索できる

 ファイル権限管理

  • $ chomd XXX FILENAME 権限対象はOWNER(第一位),GROUP(第二位)とWORLD(第三位)三種類、権限はREAD(4),WRITE(2),EXECUTE(1)三種類.例えば、$ chomd 761 readme.txtは「OWNERの権限はREAD+WRITE+EXECUTE=7,GROUPの権限はREAD+WRITE=6,WORLDの権限はEXECUTE=1」と言う意味です。ps:chomdは他の権限表示方法もある。

その他

  • nvidia-smi nvidia CPU 状態を検閲
  • find . -FILENAME '.*.???' -type f -print -exec rm -rf {} \;隠すファイルを全部削除
  • ifcofig ipアドレースを検閲
  • echo CMDLINE > FILECMDLINEはFILEに書く
  • sh SHELL.shSHELL.shを実行
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS初学者向け】テスト用EC2作成時の面倒くさいことを、代わりにシェルスクリプトにやってもらおう!

1.はじめに

AWSというのはとても便利で、重いサーバー,ラックを用意しなくても誰でも簡単にサーバー構築が出来る。
そしてそれと同じように簡単にサーバーを削除することが出来る。
作っては消して作っては消してを世のハンズオンドキュメント,動画の数だけ行うのだ。
しかし何度も何度も構築するにあたってやりたいことは違えど毎回同じ作業が発生するのだ。
駆け出しであろうとIT従事者であるからには、そういう同じ無駄な作業を無くしていかなければならない。
今回はシェルでの無駄作業を自分は一切コマンドを打つことなく、代わりにシェルスクリプトに自動でやってもらおうというハンズオン記事である。
(ハンズオンと言ってもシェルスクリプトを書くだけだが..)
同時にシェルスクリプト、viの訓練にもなるので初学者の方は是非見ていって欲しい。

2.概要

今回の流れは、
"EC2(Amazon Linux2)を構築する際、作成時の「ステップ3:インスタンスの詳細の設定」「ユーザーデータ(テキストで)」にあらかじめ作成しておいたシェルスクリプトを挿入、構築後の面倒なコマンド操作を自動でシェルスクリプトに行ってもらう"
となっている。
注意事項として既にネットワーク周りの設定(VPC,Subnet等)は構築済でEC2を構築した段階で外と通信が行われる前提で話を進めていく。

※使用イメージはAmazon Linux2です。

3.シェルスクリプトの作成

早速だが本題のシェルスクリプトを作成する。
下記コードが今回の"面倒くさいから自動化しちゃおうスクリプト"になる。

#!/bin/bash -ex
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

# まずは全てのパッケージをアップデート
yum update -y

# 言語設定
echo "LANG=ja_JP.UTF-8" > /etc/sysconfig/i18n

# 時刻同期
sed -ie 's/ZONE=\"UTC\"/ZONE=\"Asia\/Tokyo\"/g' /etc/sysconfig/clock
sed -ie 's/UTC=true/UTC=false/g' /etc/sysconfig/clock
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# ホスト名の変更
HOST_F=hostname.domainname
sed -ie "s/localhost\.localdomain/${HOST_F}/g" /etc/sysconfig/network

#/etc/hostsにホスト名を追加
ip addr show | grep "inet.*eth0" | awk {'print $2'} | sed -e 's/\(.*\)\/.*$/\1/g' | xargs -I{} echo "{} ${HOST_F} ${HOST_S}" >> /etc/hosts

# ユーザの作成 & passwd設定 ※testuserを貴方の好きなユーザー名に、testpasswdを好きなパスワードに変更して下さい。
useradd testuser
echo "testpasswd" | sudo passwd --stdin testuser
# su権限を与える
sed -i -e '$ a testuser ALL=(ALL)    NOPASSWD:ALL' /etc/sudoers
# パスワード認証でのSSH接続の許可
sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
# sshdを再起動し、設定を反映 ※これで作成したユーザーによるSSH接続(passwd認証)が可能になります。
systemctl restart sshd
# ec2-userの削除
userdel ec2-user

# 王道のApacheをセットアップ ※nginxを使用する際はhttpdをnginxに変える
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
yum install -y httpd mariadb-server
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

# おまけ
touch sample.txt
echo "blogyondekuretearigatougozaimasu" > sample.txt

テスト用インスタンスに必要な初期設定はこれくらいになるはず。
こんなんも自動化したら楽になるといったものがあれば是非コメントでいただきたい。

4.EC2の構築

では実際にシェルスクリプトをユーザーデータに貼り付けてEC2を構築してみよう。
EC2の構築講座ではないので構築手順等については他の記事がいくらでもあるので参照していただきたい。

手順1:上記スクリプトの必要箇所を修正してコピー
手順2:EC2を作成、ステップ3のユーザーデータにスクリプト貼り付け ※下記画像参照

Qiita_1.png

手順3:SSH接続 ※作成したユーザー名とパスワードを入力して下さい
手順4:各設定が反映されているか確認 ※下記コマンド参照

・コマンド確認

# ホスト名が変わっているか
cat /etc/hosts

#時刻同期が出来ているか
date

#ユーザー名が変わっているか
cat /etc/passwd | grep 設定したユーザー名

#ec2-userが削除できているか
cat /etc/passwd | grep ec2-user

・Apache確認

EC2インスタンスのPublicIPAddressをコピーしてブラウザのURLに貼り付けて検索実行。
Apacheのページが表示されたら確認OK。

5.まとめ

といった感じでうまい具合に面倒くさい作業が自動化されたわけだ。
もちろん人によって面倒くさいは変わってくると思うので、各々が好きにスクリプトをカスタムするのをおすすめする。
実はシェルスクリプト以外にもユーザーデータを使用しての自動化は行えるが、今回は一番ポピュラーなシェルスクリプトを使用させていただいた。
上記でも書いたがこういうことを構築時に自動化したい等あれば是非コメント等いただきたい。
では以上で失礼します。

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

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

SSH接続したLinuxでキャプチャしたパケットをローカルPCのWiresharkで開きたい

はじめに

TeratermなどでSSH接続したLinuxでキャプチャしたパケットを、ローカルのWiresharkで開いてグラフ解析などをしたい場合があります。

Linuxでキャプチャしたパケットを、ローカルPCにダウンロードする方法を調べてみたのでメモとして残しておきます。

目標

  • SSH接続したLinuxでtsharkにてパケットをキャプチャし、それをローカルPCに落としてwiresharkで開く

環境

AWS EC2を使用
- インスタンス:t2.micro
- OS:Amazon Linux2
- ターミナル:Teraterm

準備

あらかじめroot権限を取得しておく

  • wiresharkがインストールされているか確認
rpm -q wireshark
  • インストールされていなければ、インストールする
yum -y install wireshark

パケットキャプチャ

  • 適当なパケットをキャプチャし、ファイルに出力する
 tshark -i eth0 -w packet.pcapng

ダウンロード

  • 所有権を変更
    ダウンロードできるように一般ユーザー権限に変更する
chown ec2-user:ec2-user packet.pcapng
  • teratermのssh SCPでダウンロード
    • ファイル→SSH SCP...→以下のように入力して[Recieve]
From:先ほどキャプチャして保存したファイルを指定
To:ローカルPCの適当なディレクトリを指定

ローカルPCのWiresharkで開く

Wiresharkでダウンロードしたファイルを指定して開きます。
うまくできていれば開いてグラフ解析などの機能が使えるはずです。

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

Cloud gaming handheld project [Service] ---- 2021/02/21

There is too many experience in this project, so I will separate to two or three part, I will talk about the [Cloud gaming service] first.

Why & What's [Cloud Gaming]?

Cloud gaming is a new way to play game.
The PC game is more and more heavy now, not only the size of the game, but also the spec of your PC.
It's not that difficult, if you are an indoor guy to play it, but that only happen before you graduate.
I've many online friends is disappear because of their job, that broke my heart a lot.
So I start this project, to let every gamer can play any game in everywhere.
This project is still unfinished, this article is some of my experience.
If you are interesting with cloud gaming, please finish this project, not for me, for every gamer.

How it work?

As the name "Cloud" gaming, the game is actually not running on the handheld device.
The game is running by a high spec PC in your home (or server room), and use any communications protocol (like VNC) send the graph in to your handheld device.
So the only thing your handheld do is just display the graph sending from the gaming PC, and send the control message to the gaming PC.
CloudGaming01.png

Communications Protocol

There is more and more company is making there own cloud gaming service science it pop up.
So I decided to use the cloud gaming service making by the other company, not only because I'm lazy, the most important is to protect my gaming PC not to being hack.

Steam link

Steam link is the first cloud gaming service I have test, it's the most popular communications protocol every one is using.
But it only support local network, can't use in out door.
image.png

Moonlight

Moonlight is support using in outside, but you need to click the accept button on your gaming PC every time when you want to connect it.
image.png

RainWay

RanWay is a good cloud gaming service that I have been use for a long time.
They have even design Android and IOS version, so you can play it on your phone.
image.png
I even buy a steady to keep my smartphone on my PS4 controller.(I'm not using Bluetooth because 2.4Ghz will make my wifi unstable.)
image.png
But the smartphone version consumes a lot of electricity, and makes your phone really hot.
After I use RainWay, I realize that I need the other handheld device to run it, not using the smartphone anymore.

Parsec <--Witch I'm using now.

Parsec support many kind of device, just like RainWay, Parsec support Android too(but no IOS, I know that because I bought an IPad 2018 for it).
image.png
It not only support smartphone, also Raspberry pi 3(not on 4, yes I west my money AGAIN!).
image.png

So this is all the cloud gaming service I have been use before.
I will talk about the hardware part in the next article.<--The most expensive part XDD

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

コンソールで遊んでみよう!

自己紹介

rat.png
なまえ:rattcv(しばたかずお)
職業:会社員&フリーランスプログラマ
・UnixライクなOSが好き
・自称CLIヲタク
・青森県弘前市というところに住んでます
・twitter: @rattcv


今回の趣旨

  • Linux デスクトップ環境では、X Window System(略して X)というディスプレイ上でウィンドウシステムを提供するネットワーク透過な表示プロトコルが使われています。
    (他にWaylandがある)

  • 今日はこの X を起動せずに、コンソールのままでグラフィカルなアプリケーションを使用する方法を紹介します。


仮想コンソールについて

仮想コンソールとは、非グラフィカル環境でのテキストコンソールのことです。
X Window System を備えたた Linux 環境で、画面がフリーズした場合などのトラブルシューティングに有効です。

仮想コンソールは tty(TeleTypewriter) と呼ばれています。通常は、6つ(tty1 ~ tty6)が存在します。それぞれのコンソールは同時にアクセスし、異なる作業を行うことができます。

■ グラフィカルデスクトップとの切り替え方法(Ubuntu20.04の場合)

動作 入力キー
仮想コンソール( tty[1-6] )切り替え Ctrl + Alt + F[1-6]
デスクトップに戻る Ctrl + Alt + F7

現在ログインしている仮想コンソールの番号は、次のコマンドから確認できます。

$ tty
/dev/tty3

sudo systemctl set-default multi-user.target とやってリブートしてもテキストログイン出来る。

sudo systemctl set-default graphical.target でグラフィカルモードに戻る。


mltermを使ってみる

Linux Kernel 2.2からframebufferで高解像度のコンソールが使えるが、2バイト文字には非対応。
そこで、ターミナルエミュレータ mlterm のコンソール版である mlterm-fb を使ってみましょう。

https://github.com/arakiken/mlterm


libsixelを使ってみる

https://github.com/saitoha/libsixel


w3m-sixelを使ってみる

https://github.com/tats/w3m


sayakaちゃんを使ってみる

https://github.com/isaki68k/sayaka


FFmpeg-SIXELを使ってみる

https://github.com/saitoha/ffmpeg-sixel/tree/sixel


matplotlib-sixelを使ってみる

https://github.com/koppa/matplotlib-sixel


おしまい

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

ln -s …の次の引数の順序に迷った時の覚え方

cpmvコマンドと同じで、今実在するパスが先

ここからコメントで教えて頂いた内容ですが、この時 ln -s ではなく ln -sr にしておくと階層違いのシンボリックリンクを張る時にも安全です。

例えば mylink -> mydir/myfile というリンクを張りたい時に
ln -s mydir/myfile mylink ならOKですが
cd mydir した位置で ln -s myfile ../mylink とすると作られたリンクは mylink -> myfile となって繋がりません。
-rオプションがあるとそれを直してくれるためcpmvなどのようにTabキーでファイル名補完できたパスを使いたい時は-r付きだと安全です。

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

Tesla K80を動作させる方法

こんにちは。橋本です。

超並列計算が必要な科学計算用途において、計算用GPUの存在は不可欠です。
中でもプログラミングツールキットの情報が豊富なNvidia製GPUは汎用性が高く、従来より高速な計算が可能となっております。

しかしながら、倍精度を要求する計算において、一般的に流通しているNvidia GTX,RTXシリーズは厳しい制限が掛けられており、科学計算には不向きです。(単精度においてはこの限りではありません。)
Nvidia製GPUの中で倍精度に制限が掛けられておらず、現在のGTX,RTXシリーズと比較しても遜色ない性能のものは以下の何れかしかありません。

image.png

このうち、K20,40,80あたりが中古で現実的な値段で手に入りやすくなっております。
そこで、K80を研究室で購入頂いたわけなのですが、動作までにちょっとした苦戦がありましたのでナレッジしておきます。

なぜか、記述が見つからなかったので。

K80のインストール方法を述べます。

先に結論

K80が使用できるチップセットは「C610」「X99」「Z77」以降のアルファベットシリーズです。
「B150」とか「X79」とかは使えません!
また、対応しているからと言って必ず使えるとはかぎりません。(大抵は使えると思いますが。)
事前にマザーボードの設定項目が「Above 4GB MMIO BIOS Assignment (4GB を超える MMIO BIOS 割り当て)」をサポートしているかを確認してください。
この項目の無いマザーボードは動きません。

組み立て

K80はパッシブ冷却ですので、ファンを内蔵しておりません。そこで以下のシロッコファンを接着剤でつけることで解決しております。
image.png
また、電源はペリフェラルから12Vを供給しております。おそらくマザーボードのファン端子から電気を得るとMOSFETがアチアチになると思います。

設定

マザーボードUEFI BIOSの項目「Above 4GB MMIO BIOS Assignment (4GB を超える MMIO BIOS 割り当て)」を探し、有効にしてください。

有効にしないままインストールを進めると、OSをから認識はされますが、ドライバーが当たらない奇妙な現象に遭遇します。

OSのインストール

Ubuntu 20.04LTSを導入します。
インストールする際に「サードパーティ製のドライバをインストールする」項目にチェックを入れないでください。ログインループに陥ります。やらかしてしまった場合は素直にOSをインストールし直しましょう。

ドライバのインストール

任意のCuda Toolkit ヴァージョンをアーカイブから選択してインストールします。
Cuda Toolkit Archives「https://developer.nvidia.com/cuda-toolkit-archive
あとは、インストール手順に従ってインストールを行います。
image.png

再起動の後、「nvidia-smi」コマンドで確認してください。
20210217_023522700_iOS (2).jpg

「lspci -v」コマンドでPCIeからは認識しているのにCUDAドライバーが当たらない事象に遭遇しました。原因は「Above 4GB MMIO BIOS Assignment (4GB を超える MMIO BIOS 割り当て)」の有無です。

そもそも、PCIeは「メモリ空間」「IO空間」「コンフィギュレーション空間」の3つのアドレス空間を持ちます。
うち、メモリ空間において1バスでメインメモリ空間に転送(仮想化)できるメモリ量は256MB。x16バスで4GB(32ビットアドレス長)
k80は1つのバスに24GBのメモリがあり、x16バスで全てをマッピングできません。
(Tesla k40やTesla C2070ではこの現象が現れなかったため、24GBというメモリ量がこれを要請している可能性がある。)

すなわち、「IO空間」「コンフィギュレーション空間」が生きているからPCIeから認識されるが、「メモリ空間」を有効にするドライバを入れようとすると弾かれてしまうと考えられます。

解決策は「Above 4GB MMIO BIOS Assignment (4GB を超える MMIO BIOS 割り当て)」を有効にすることです。有効にすれば、1バス256MBの制限がなくなります。
この機能は「C610」「X99」「Z77」以降のアルファベットシリーズを持つチップセットに搭載されている事が知られています。

参考

nvidia公式では「いや~。k80はワークステーション向けだから。そんな一般のマザボで動かないとか知らんよ。ワークステーション向けのC610とか買ったら?」的な事が書いてありました。
https://community.intel.com/t5/Intel-NUCs/Latest-BIOS-for-NUC6i7KYK-and-quot-Above-4G-decoding-quot/m-p/690484#M68958

Xeon Phiのインストールのときダメだった的なコミュニティなのですが、ここで「K80とか大きなメモリ空間を使うものはAbove 4GB MMIO BIOS Assignmentを有効にすればいいよ!」と猛者がつぶやいており、ここから答えをえました。
https://forums.developer.nvidia.com/t/plugging-tesla-k80-results-in-pci-resource-allocation-error/37007/11

ASUSさんは言ってましたね。「Teslaとか使うときには4GBデコードをオンにしてね!」と。
https://www.asus.com/jp/support/FAQ/1017190/

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