20200204のLinuxに関する記事は6件です。

Docker for windows環境にてPowershellでCtrl+zが使用できない問題の解決法(仮)

Docker for windows環境にてPowershellを使ってDocker上のLinuxをCUI操作している場合、Ctrl+zでLinuxにシグナルを送ろうとしても上手く動作しない。
Ctrl+zがPowershellの操作に割り当てられている様子。Linuxを抜けてPowershellの操作に戻ってしまう。
簡単な解決法として、Powershellで「レガシーコンソール」を使用することで解決した。

プロパティから「レガシーコンソール」を選択するだけ

PowerShellのバー上で右クリック → プロパティを選択
クリップボード一時ファイル01.png

「レガシーコンソールを使用する」にチェックを入れる
クリップボード一時ファイル02.png

これ以外のもっとエレガントな解決方法がきっとあるはずである。

参考:Windows PowerShell, Control-Z, and Kitematic
https://alankent.me/2017/07/04/windows-powershell-control-z-and-kitemati/

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

[MEMO][TERMINAL] HYPER + FiraCode

はじめに

LinuxでもFiraCodeをターミナルで使いかったので

やり方

Hyper

https://hyper.is/#installation

wget https://releases.hyper.is/download/deb
sudo dpkg -i package-x.x.x.deb

FiraCode

https://github.com/tonsky/FiraCode/wiki/Linux-instructions

sudo add-apt-repository universe
sudo apt install fonts-firacode
fc-list | grep fira
>
/usr/share/fonts/woff/firacode/FiraCode-Regular.woff: Fira Code:style=Regular
/usr/share/fonts/opentype/firacode/FiraCode-Retina.otf: Fira Code,Fira Code Retina:style=Retina,Regular
/usr/share/fonts/woff/firacode/FiraCode-Light.woff: Fira Code,Fira Code Light:style=Light,Regular
/usr/share/fonts/woff/firacode/FiraCode-Bold.woff: Fira Code:style=Bold
/usr/share/fonts/opentype/firacode/FiraCode-Bold.otf: Fira Code:style=Bold
/usr/share/fonts/opentype/firacode/FiraCode-Regular.otf: Fira Code:style=Regular
/usr/share/fonts/opentype/firacode/FiraCode-Medium.otf: Fira Code,Fira Code Medium:style=Medium,Regular
/usr/share/fonts/opentype/firacode/FiraCode-Light.otf: Fira Code,Fira Code Light:style=Light,Regular
/usr/share/fonts/woff/firacode/FiraCode-Medium.woff: Fira Code,Fira Code Medium:style=Medium,Regular

設定

~/.hypter.js
module.exports = {
  config: {
    // choose either `'stable'` for receiving highly polished,
    // or `'canary'` for less polished but more frequent updates
    updateChannel: 'stable',

    // default font size in pixels for all tabs
    fontSize: 12,

    // font family with optional fallbacks
    fontFamily: 'Fira Code, "Menlo", "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LXC で NVIDIA GPU が使えるコンテナを作る

異なるバージョンのCUDAを一つの計算機で共存したいときにこうすると便利である。ホスト側のLinuxで nvidia-smi を実行したときと同じようにコンテナ内の nvidia-smi が動作するようにする。LXC でコンテナを作成し実行することはすでに出来ているとする。

ホスト側でnvidia-smiを実行すると以下のように見える

# nvidia-smi
Tue Feb  4 10:52:19 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.48.02    Driver Version: 440.48.02    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:08:00.0 Off |                  N/A |
| 30%   31C    P8    25W / 250W |     18MiB / 11016MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 208...  Off  | 00000000:09:00.0 Off |                  N/A |
| 29%   32C    P8    20W / 250W |      1MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1262      G   /usr/lib/xorg/Xorg                            16MiB |
+-----------------------------------------------------------------------------+

ホスト側での作業

まず lxc-create -n コンテナ名 -t download -- -d ubuntu -r eoan -a amd64 でUbuntuのコンテナを作る。もし /var/lib/lxc がBTRFSにあるなら -B btrfs を付けておくと後で lxc-copy -n 古いコンテナ -N 新しいコンテナ でコンテナを複製するときに掛かる時間が劇的に短くなる。

次に lxc-execute -n コンテナ名 -- /bin/passwd でrootに適切なパスワードを設定する。

以下の設定を追加する

/var/lib/lxc/コンテナ名/configに追加
lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,rw,create=file 0 0
lxc.mount.entry = /dev/nvidia-modeset dev/nvidia-modeset none bind,rw,create=file,optional 0 0
lxc.mount.entry = /dev/nvidia-uvm dev/nvidia-uvm none bind,rw,create=file 0 0
lxc.mount.entry = /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,rw,create=file 0 0
lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,rw,create=file 0 0
lxc.mount.entry = /dev/nvidia1 dev/nvidia1 none bind,rw,create=file,optional 0 0
lxc.cgroup.devices.allow = c 195:* rwm
lxc.cgroup.devices.allow = c 235:* rwm

最後に lxc-start -F -n コンテナ名 でコンテナを起動する。ログインプロンプトが表示されたらrootでログインする。

コンテナ内での作業

apt-get --no-install-recommends install software-properties-common
add-apt-repository ppa:graphics-drivers/ppa
apt-get --no-install-recommends install nvidia-utils-440

最後のnvidia-utils-440 はホスト側LinuxのNVIDIAドライバのバージョンと完全に同一でないとエラーになりnvidia-smiが動作しないので注意。ここまで行いコンテナ内でnvidia-smiを実行すると

# nvidia-smi
Tue Feb  4 02:01:33 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.48.02    Driver Version: 440.48.02    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:08:00.0 Off |                  N/A |
| 30%   31C    P8    26W / 250W |     18MiB / 11016MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 208...  Off  | 00000000:09:00.0 Off |                  N/A |
| 29%   32C    P8    20W / 250W |      1MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

となる。

他のホストからネットワーク的に見えるようにするには

設定ファイルに以下の内容を追加する

/var/lib/lxc/コンテナ名/configに追加
lxc.net.0.type = macvlan
lxc.net.0.link = enp6s0 # この名前は "ip l" で表示されるEthernetインターフェースの名前
lxc.net.0.flags = up
lxc.net.0.name = eth0

ホストの/homeをコンテナ内で見えるようにするには

/var/lib/lxc/コンテナ名/configに追加
lxc.mount.entry = /home home none bind,rw 0 0
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[MEMO][TERMINAL] alacritty

はじめに

クラスプラットフォームなRust製でGPUアクセラレイトでdotfileでカスタマイズできる進んでるターミナルでgitのお星様2万個のお墨付きをもらっているので

開発環境

Ubuntu

Install

https://github.com/alacritty/alacritty

sudo add-apt-repository ppa:mmstick76/alacritty
sudo apt install alacritty

設定

https://github.com/alacritty/alacritty/wiki

~/.config/alacritty/alacritty.yml
# Font configuration (changes require restart)
font:
  # The normal (roman) font face to use.
  normal:
    family: Ubuntu Mono
    # Style can be specified to pick a specific face.
    style: Regular

  # The bold font face
  bold:
    family: Ubuntu Mono
    # Style can be specified to pick a specific face.
    # style: Bold

  # The italic font face
  italic:
    family: Ubuntu Mono
    # Style can be specified to pick a specific face.
    # style: Italic

  size: 14.0

# Colors (Monokai Dark)
colors:
  # Default colors
  primary:
    background: '0x272822'
    foreground: '0xF8F8F2'

  # Normal colors
  normal:
   black:   '0x272822'
   red:     '0xF92672'
   green:   '0xA6E22E'
   yellow:  '0xF4BF75'
   blue:    '0x66D9EF'
   magenta: '0xAE81FF'
   cyan:    '0xA1EFE4'
   white:   '0xF8F8F2'

  # Bright colors
  bright:
   black:   '0x75715E'
   red:     '0xF92672'
   green:   '0xA6E22E'
   yellow:  '0xF4BF75'
   blue:    '0x66D9EF'
   magenta: '0xAE81FF'
   cyan:    '0xA1EFE4'
   white:   '0xF9F8F5'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

/dev/tcp/hostname/port

sh-4.2$ echo > /dev/tcp/$DATABASE_SERVICE_NAME/3306 && echo "OK"
OK
sh-4.2$ echo > /dev/tcp/$DATABASE_SERVICE_NAME/3305 && echo "FAIL"
sh: connect: No route to host
sh: /dev/tcp/quotesdb/3305: No route to host
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxで、特定ホスト・特定ポートへの通信を試みる (/dev/tcp/hostname/port編)

echo > /dev/tcp/\${HOSTNAME}/\${PORT}
で、対象ホストのTCPポートとの疎通確認が行える。
疎通OKの場合、何も返ってこないので、以下のように && echo "OK" のように、OKだった場合の応答を定義してあげるのがよいかもしれない。

sh-4.2$ echo > /dev/tcp/$DATABASE_SERVICE_NAME/3306 && echo "OK"
OK
sh-4.2$ echo > /dev/tcp/$DATABASE_SERVICE_NAME/3305 && echo "FAIL"
sh: connect: No route to host
sh: /dev/tcp/quotesdb/3305: No route to host

参考

参考というか、以下のリンクがあればこの記事要らない・・・(笑)
https://qiita.com/_oba23_/items/e3038d8f388aa435b7d8

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