Ubuntu 19.10 でChromeがフリーズする場合の回避策

うちのUbuntu 19.10 で度々Chromeがフリーズするのでメモ。

どうやらグラフィック周りの問題なのか?
とりあえず起動したいので、コンソールからGPUを無効にして起動。

$ google-chrome-stable --disable-gpu

起動したら、[設定] > [詳細設定] > [システム] > [ハードウェアアクセラレーションが使用可能な場合は使用する] をオフにする。

[ハードウェアアクセラレーションが使用可能な場合は使用する] をオフ

あとは chrome://flags を開いて、[GPU rasterization] を [Disabled]にしてブラウザを再起動。

GPU rasterization を無効化

これでChromeが固まる事はなくなった。

Amazon FireHD8からUbuntuにVNC接続して外付けモニタ代わりにする

VNCを使ってFireHD8タブレットをサブモニターにしたのでメモ

参考にしたのはここ。
Ubuntu 18.04 で Kindle Fire HD をサブディスプレイとして使う方法

まずはUbuntu 19.10に必要なツールをインストール。

sudo apt install -y tightvncserver x11vnc

うちのPCはAMD Ryzen搭載マシンなので、/usr/share/X11/xorg.conf.d/10-radeon.conf を編集する。

#/usr/share/X11/xorg.conf.d/10-radeon.conf
Section "OutputClass"
	Identifier "Radeon"
	MatchDriver "radeon"
	Driver "radeon"
	Option "VirtualHeads" "2" #追加
EndSection

ここで一旦ログアウトのち再ログインする。

続いてxrandrでディスプレイの確認。

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
#中略
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

上記出力で言うと eDP がメインのモニタで DisplayPort-1 がサブモニタになる。

続いて gtf コマンドで Modeline設定を取得

$ gtf 1280 700 60

  # 1280x700 @ 60.00 Hz (GTF) hsync: 43.50 kHz; pclk: 72.38 MHz
  Modeline "1280x700_60.00"  72.38  1280 1336 1472 1664  700 701 704 725  -HSync +Vsync

このModelineの右側に出ている “1280x700_60.00” 72.38 1280 1336 1472 1664 700 701 704 725 -HSync +Vsync をこのあと使う。

そして xrandr でディスプレイを追加

$ xrandr --newmode "1280x700_60.00"  72.38  1280 1336 1472 1664  700 701 704 725  -HSync +Vsync
$ xrandr --addmode DisplayPort-1 1280x700_60.00
$ xrandr --output DisplayPort-1 --mode 1280x700_60.00 --left-of eDP

これでモニタの左側にもデスクトップスペースが出来上がる。
そして x11vnc を起動して待ち受ける。

$ x11vnc

あとはこれにFireHDからVNC接続するだけ。

俺は VNC Client Free を使ってる。

VNC Client FreeからこのPCのの5900番ポートに接続すればOK。
画面小さいけどslackの画面を出しておきたい時に重宝してる。

alienでrpmをdebに変換

rpmでバイナリしか提供されてないツールをUbuntuにインストールしかったのでメモ。

alien で変換可能。
まずはaptでインストール。

sudo apt install -y alien

rpmをalienで変換して、dpkgでインストールすればOK.

sudo alien hoge.rpm
sudo dpkg -i hoge.deb

これで助かった。

digコマンドで逆引き

digでIPアドレスからホスト名を逆引きしたかったのでメモ。

digに -x オプションをつければOK.

dig -x 203.0.113.1

または、IPアドレスを逆に並べて .in-addr.arpa を末尾につけるという方法もあるけどメンドクサイ。

dig 1.113.0.203.in-addr.arpa

-x でいいや

Ubuntu 19.10: Docker を使う

Ubuntu 19.10にDockerをインストールしたのでメモ。

Dockerのインストール

参考にしたサイトはここ。
How To Install and Use Docker on Ubuntu 18.04 | DigitalOcean

まずは必要なものをaptで入れる。

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

それからレポジトリを追加して、docker-ceをインストール。
19.10なのでeoan.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu eoan stable"
sudo apt update
sudo apt install docker-ce

コンテナの実行

インストール出来たので、試しに公式のubuntuイメージをダウンロードしてDockerで実行する。

sudo docker pull ubuntu

ダウンロードしたイメージを実行。

sudo docker run -itd ubuntu

シェルに入りたい場合は、psでコンテナID/コンテナ名を調べてattachする。

sudo docker ps -l
CONTAINER ID    IMAGE       COMMAND     CREATED             STATUS                      PORTS   NAMES
34567890abcd    ubuntu      "/bin/bash" 18 minutes ago      Exited (0) 4 seconds ago            hardcore_heisenberg

上記の34567890abcdにattach

sudo docker attach 34567890abcd

これでrootログイン出来るので、あとは必要な環境を揃える。
例えばvimをインストールする。

apt install -y vim

コンソールから抜け出たい時は Ctrl+P を押してから Ctrl+Q で出れる。
Ctrl+Dを押すとコンテナが終了してしまうので注意。

コンテナを停止する場合はstop

sudo docker stop 34567890abcd

DockerHubにpush

変更したコンテナイメージをDockerHubにプッシュするにはまずはDockerHubでアカウントを作成しておく。

変更内容をcommit.

sudo docker commit -m 'vim installed' -a 'orenomemo' 34567890abcd orenorepo/myubuntu

ここでorenorepoがDockerHubのレポジトリ名でmyubuntuがイメージ名

ローカルのイメージを確認するにはimages.

sudo docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
oreno_repo/myubuntu   latest              1234567890ab        17 minutes ago      152MB

そしてDockerHubにログイン

sudo docker login -u orenorepo

最後にpush.

sudo docker push orenorepo/myubuntu

CentOS 6.5 に OpenVZ をインストール

LPIC 304の勉強ついでにOpenVZ環境をセットアップしたのでメモ。

CentOS7でやろうとしたら上手く行かなかったのでCentOS6.5を用意。
まずは下記サイトを参考にしてOpenVZをインストールする。

Install And Configure OpenVZ On CentOS | Unixmen

rootで作業する。

wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ
yum install vzkernel

それから /etc/sysctl.conf を修正。
下記パラメータを変更or追加する。

# /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

続いてSELinuxをオフにするため、/etc/sysconfig/selinux を修正。

# /etc/sysconfig/selinux
SELINUX=disabled

そして関連ツールをインストール

yum install vzctl vzquota ploop

ここまで来たら再起動する。
再起動後にGRUBがデフォルトのOpenVZカーネルを起動する。

コンテナの作成。
CentOS7テンプレートを使う。
これまたrootで作業。

cd /vz/template/cache/
wget http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
vzctl create 101 --ostemplate centos-7-x86_64-minimal

ここでいう101はコンテナのID。
以後このIDに対して操作を行う。

コンテナにIPアドレスを振る。
実機と同じネットワークを使う。

vzctl set 101 --ipadd 10.0.2.199 --save

コンテナを起動する。

vzctl start 101

コンテナのシェルに入る。

vzctl enter 101

ここでpasswdコマンドでrootのパスワードを作っておけば、vzctl consoleコマンドでログインも出来る。

vzctl console 101

VZコンテナコンソールから抜け出すには ESC を押してから . (ドット)を押せば抜け出せる。

Ubuntu に LXC をインストール

これまたLPIC 304の勉強でLXCをUbuntu 19.10 にインストールしたのでメモ

まずaptでlxcをインストール

sudo apt install lxc -y

今回はとにかく動かして操作するのが目的なので、sudoでササっとコンテナを作る。

sudo lxc-create -t download -n mycont-1

すると、利用可能なディトリ一覧が出てくる。
今回のコンテナはUbuntu 18.04で作るのでディストリは

ubuntu

リリースは

bionic

アーキテクチャは

amd64

と入力すればOK.

次はコンテナ起動。

sudo lxc-start -n mycont-1 -d

コンテナのシェルに入る。

sudo lxc-attach -n mycont-1

ここでpasswdコマンドを使ってデフォルトユーザーubuntuのパスワードを変えておく。
とでlxc-consoleコマンドでコンソールに入る時に使う。

sudo lxc-console -n mycont-1

これでコンソールに入れる。

コンソールから抜ける場合は Ctrl+AのあとにQを押す

コンテナの停止は

sudo lxc-stop -n mycont-1

CentOS7 で KVM 仮想環境を構築

これまたLPIC304勉強ついでにKVM環境を構築したのでメモ。

まずは下記サイトを参考にして諸々インストール。
インストールしたらlibvirtdを起動。

How to install KVM on CentOS 7 / RHEL 7 Headless Server – nixCraft

yum install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
systemctl enable libvirtd
systemctl start libvirtd

続いてブリッジ設定を追加。
デフォルトのNICがenp0s3だとして、下記を末尾に追記

# /etc/sysconfig/network-scripts/ifcfg-enp0s3
BRIDGE=br0

そしたら今度は br0のファイルを作成する。
/etc/sysconfig/network-scripts/ifcfg-br0 を下記の内容で作成。

# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
BOOTPROTO="dhcp"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
ONBOOT="yes"
TYPE="Bridge"
DELAY="0"

ここまで来たらNetworkManagerを再起動してブリッジ設定を有効化する。

systemctl restart NetworkManager

いよいよ仮想マシンを作成。
testvm2という名前でCentOS7を仮想マシンとしてインストールします。

virt-install --connect=qemu:///system \
--name testvm2 \
--virt-type kvm \
--os-type linux \
--os-variant centos7.0 \
--vcpus=2 \
--ram 2048 \
--accelerate \
--hvm \
--disk path=/var/lib/libvirt/images/testvm2.img,size=10,bus=virtio,format=qcow2 \
--nographics -l "https://mirrors.edge.kernel.org/centos/7/os/x86_64/" \
--network bridge=br0,model=virtio \
--extra-args='console=tty0 console=ttyS0,115200n8'

Text インストーラが起動するので、通常通りインストールすればOK。

仮想マシンを起動してコンソールに接続するなら

virsh start testvm2
virsh console testvm2

仮想マシンから元のコンソールに戻る場合は Ctrl + ] で戻れる。

CentOS7 で Xen仮想環境を構築

LPIC 304の勉強ついでにXen環境を作ろうとして中々手間取ったのでメモ。

まずは「Virtualbox上のゲストCentOS7」にxenをインストールする方法。

Virtualboxでハイパーバイザーを使うので、CPU設定で「ネステッドVT-x/AMD-Vを有効化」にチェックを入れる。
CPUコアも4つ割り当てる。

そしてCentOS7を起動してXenを入れる。
下記の記事を参考にしたが、このまんまだとXenのインストールも仮想マシンのインストールもコケるので微修正

Getting started with Xen Virtualization On CentOS 7.x | Computing for Geeks

rootで作業してます。
まずはcentos-release-xen-48をインストール。

yum -y install centos-release-xen-48
yum -y update kernel
yum -y install xen

続いて /etc/default/grub を修正。
dom0のメモリ割当サイズを変更。

# /etc/default/grub
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=2048M,max:4096M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"

そしてgrubのxen設定の変更を反映したのちに再起動

grub-bootxen.sh
reboot

再起動後、libvirt関連をインストール。
centos-virt-xen-48のレポジトリを使う事。

yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install
systemctl enable libvirtd
systemctl start libvirtd

そして仮想マシンをインストール。
メモリ使用量が少なくて済むCentOS5を入れます。

virt-install -d \
--connect xen:/// \
--name testvm \
--os-type linux \
--vcpus=2  \
--paravirt \
--ram 1024  \
--disk /var/lib/libvirt/images/testvm.img,size=10 \
--nographics -l "http://archive.kernel.org/centos-vault/5.0/os/x86_64/" \
--extra-args="text console=com1 utf8 console=hvc0"

これでCentOS5のインストール画面が出てくるので通常通りインストールすればOK。
起動を確認したら一旦終了。

再び仮想マシンを起動して、仮想マシンのコンソールに接続。

virsh --connect xen:/// start testvm
xl console testvm

Ctrl + ] でDomain0のコンソールに戻れる。

JS Beautifier で JS ファイルを綺麗にする

ターミナルでJSをbeautifyしたかったのでメモ。

インデントが崩れたり難読化されたJSファイルを読みやすくしたい時に使える。

js-beautify – npm

npmでインストール。

sudo npm -g install js-beautify

変換結果が標準出力に出るので別ファイルにリダイレクトする。

js-beautify input.js > output.js 

今までChromeデベロッパーコンソールのpretty-printを使ったり、またはエディタの拡張機能を使ってたんだけどコマンドラインのが便利ね。