growisofs コマンドを使う。
= (イコール) を忘れないように注意。
$ sudo apt install growisofs $ growisofs -dvd-compat -Z /dev/dvd=./ubuntu-ja-20.04.1-desktop-amd64.iso
● growisofs, linux, command, iso, file, dvd, DVD, ISO, コマンド
主に Linux (Ubuntu, Fedora) 関連の設定メモ&小技集です。たまに Windows 関連ネタも。
(プロンプトの $ は一般ユーザ権限、# は root 権限です。いちいち説明はせんよ。)
growisofs コマンドを使う。
= (イコール) を忘れないように注意。
$ sudo apt install growisofs $ growisofs -dvd-compat -Z /dev/dvd=./ubuntu-ja-20.04.1-desktop-amd64.iso
● growisofs, linux, command, iso, file, dvd, DVD, ISO, コマンド
SVN でリポジトリをチェックアウトしたとき、mtime は、チェックアウトした時刻になります。
コミットした時刻にする方法。
$ vi ~/.subversion/config (miscellany セクションに use-commit-times = yes を記述。コメントアウトでいける場合もあり) [miscellany] use-commit-times = yes
● SVN, チェックアウト, checkout, コミット, commit, mtime, 更新時刻, 時刻, タイムスタンプ, timestamp
必要があったので、メモ。
$ find . -name "*.zip" | while read filename; do unzip -o -d "`basename -s .zip "$filename"`" "$filename"; done;
● zip, 解凍, unzip, ディレクトリ, directory, 全て
rpm2cpio がインストールされていない場合は、インストールする。
# apt install rpm2cpio
展開。
$ rpm2cpio hogehoge.rpm | cpio -id
● rpm, 中身, 展開, rpm2cpio
ttf ファイルを /usr/local/share/fonts/ ディレクトリにコピー
$ sudo cp FONT_NAME.ttf /usr/local/share/fonts
Font Cache を更新
$ fc-cache -fv
Font Cache への登録を確認
$ fc-list | grep FONT_NAME
● Ubuntu, font, cache, ttf, TTF, fc-cache, fc-list, 登録
CPU がハードウェア仮想化に対応しているか確認する。
$ egrep -c '(vmx|svm)' /proc/cpuinfo 32
KVM をインストール
# apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
virt-manager をインストール
# apt install virt-manager
libvirt, kvm グループにユーザを登録
# adduser USER_NAME libvirt # adduser USER_NAME kvm
virt-top をインストール
# apt install virt-top
あとは、virt-manager でゲスト OS を設定
$ virt-manager
● Ubuntu, KVM, kvm, virt-manager, 仮想, 仮想化, virtual
/etc/systemd/timesyncd.conf を編集
# vi /etc/systemd/timesyncd.conf (下記の箇所を変更) [Time] NTP=ntp.nict.jp FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
timesyncd 再起動
# systemctl restart systemd-timesyncd
状況確認
timedatectl timesync-status
● NTP, 時刻, 同期, 時刻同期, timesync, timesyncd,
少しハマったので、メモ。gdm を使っているのが前提。
ログイン画面で synergy が動作するように設定。
# vi /usr/share/gdm/greeter/autostart/synergyc.deskgop (新規作成して、下記を記述) [Desktop Entry] Type=Application Name=synergyc Exec=/usr/bin/synergyc IP_ADDRESS NoDisplay=true X-GNOME-AutoRestart=true
ログイン時、gdm で起動した synergyc を kill するように設定。
# vi /etc/gdm3/PostLogin (新規作成して、下記を記述) #/bin/sh killall synergyc
モード変更
# chmod 755 /etc/gdm3/PostLogin/Default
ログアウト後、synergy が動作するように設定。
# vi /etc/gdm3/PostSession/Default (下記のように記述) #!/bin/sh # Kill old process /usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done # Get the xauthority file GDM uses, setup DISPLAY var and start synergyc again xauthfile=$(ps aux |grep Xauth | grep '^root' | grep -oP '\-auth \K[\w/]+') export DISPLAY=:0 export XAUTHORITY=${xauthfile} /usr/bin/synergyc IP_ADDRESS exit 0
ログイン時、自動起動するアプリケーションに下記を実行するように追加。
$ vi ~/bin/start-synergy.sh (下記のように記述) #!/bin/sh /usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done /usr/bin/synergyc IP_ADDRESS
実行権を追加
$ chmod 775 ~/bin/start-synergy.sh
参考: https://stackoverflow.com/questions/67399211/starting-synergy-during-gdm-startup-greeter-in-centos8
■ 2021/09/08 追記 gdm が、Xorg → Wayland に切り替わっていて、ログイン時に synergy が接続できなくなっていた。
# vi /etc/gdm3/custom.conf (下記のコメントを外す) [daemon] # Uncomment the line below to force the login screen to use Xorg WaylandEnable=false
● Ubuntu, 20.04, gdm, synergy
/etc/default/grub を編集。
# vi /etc/default/grub (下記を編集) GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
update-grub を実行。そのあとで、再起動。
# update-grub
● Ubuntu, 20.04, eth0, 変更, ubuntu
Alt + F7 で画面が動かせるようになる。
● Ubuntu, 20.04, インストール, install, 画面, クリック, できない, display, click, ボタン, 押せない
古い PC の ssh サーバにログインしようとしたとき、key exchange method がマッチしないというエラーが出る。
その時の解決方法。
古い PC は、セキュリティー対応が追いついてないってことね。
エラーの例。
$ ssh 192.168.0.1 Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
~/.ssh/config に設定を追加。Host のところは適宜変更。
$ vi ~/.ssh/config (下記を追加) Host 192.168.0.1 KexAlgorithms +diffie-hellman-group14-sha1
● ssh, key exchange, 古い, サーバ, old, server, login, ログイン, できない
telnet コマンドが無いときの代替手段。
便宜上、22 番ポートにつないだ場合の例を書いてます。
curl -v telnet://
$ curl -v telnet://192.168.0.1:22 * Trying 192.168.0.1:22... * TCP_NODELAY set * Connected to 192.168.0.1 (192.168.0.1) port 22 (#0) SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10
nc -v [destination] [port] で接続。
$ nc -v 192.168.0.1 22 Connection to 192.168.0.1 port [tcp/ssh] succeeded! SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10
● telnet, 代替, curl, nc, alternative
proxy 経由で Gitlab に ssh で接続する設定メモ。
ssh の公開キーを Gitlab に登録するところは説明省略。
~/.ssh/config の設定箇所のみ。PROXY_HOST, PROXY_PORT は適切に変更。
$ vi ~/.ssh/config (下記を追加) Host gitlab.com Hostname altssh.gitlab.com IdentityFile ~/.ssh/id_rsa Port 443 ProxyCommand nc -X connect -x PROXY_HOST:PROXY_PORT %h %p
確認。Welcome to GitLab が出れば OK。
$ ssh -T git@gitlab.com ... Welcome to GitLab, @USR_NAME
● Gitlab, gitlab, proxy, ssh, nc, id_rsa, キー, 設定
Ubuntu 20.04 で、X-mouse (focus follows mouse) の設定をする方法。
デスクトップ環境が Unity から GNOME に変わったので、やり方も変わってた。
$ gsettings set org.gnome.desktop.wm.preferences focus-mode 'mouse'
(参考) https://askubuntu.com/questions/64605/how-do-i-set-focus-follows-mouse
● Ubuntu, 20.04, X-Mouse, x-mouse, GNOME, gsettings, focus follows mouse, マウス, フォーカス, mouse, focus, アクティブ, active
Ctrl-d でログアウトしない設定。
今更ながらこのメモを書くのは、その設定になってないシステムがあって困ったからだ。
$ set -o ignoreeof
ちなみに、現在の設定を確認するのは、set -o
$ set -o allexport off braceexpand on emacs on errexit off errtrace off functrace off hashall on histexpand on history on ignoreeof on interactive-comments on keyword off monitor on noclobber on noexec off noglob off nolog off notify off nounset off onecmd off physical off pipefail off posix off privileged off verbose off vi off xtrace off
● Ctrl-d, ログアウト, logout, ignoreeof, させない, しない
$ unzip -l hogehoge.zip
$ unzip -c hogehoge.zip hoehoe.txt | less
● unzip, zip, less, 中身, 解凍, 解凍しない, 解凍せずに, 解凍せず
zip, tar.gz の中味までも ripgrep できる ripgrep-all。
これはいい。インストールは簡単。
(参考) https://github.com/phiresky/ripgrep-all
依存パッケージをインストール。
# apt install ripgrep pandoc poppler-utils ffmpeg
下記から、適当なリリースバージョンをダウンロードして解凍。
https://github.com/phiresky/ripgrep-all/tags
$ tar zxvf ripgrep_all-v0.9.6-x86_64-unknown-linux-musl.tar.gz $ cd ripgrep_all-v0.9.6-x86_64-unknown-linux-musl.tar.gz $ sudo cp rga rga-preproc /usr/bin/
rg のかわりに、rga を使えば OK。
$ rga hogehoge
● ripgrep, zip, tar.gz, rg, rga, rust, ripgrep-all
$ diff -qr --no-dereference aaa/ bbb/
● diff, no-dereference, シンボリックリンク
Emacs のコピー/ペーストをシステムのコピー/ペーストに反映させるには、autocutsel を使う。
(ウィンドウマネージャの起動時に実行するように設定する) autocutsel -fork autocutsel -fork -selection PRIMARY
■参考
https://stackoverflow.com/questions/3216081/integrate-emacs-copy-paste-with-system-copy-paste
● Emacs, emacs, copy, paste, system, integrate, コピー, ペースト, システム, 同期, 反映
sudo を実行するときに、proxy の設定とかが引き継がれないことがある。
sudo 実行時に、環境変数を引き継ぐオプション -E を使用すれば良い。
$ sudo -E ...
● sudo, 環境変数, proxy
cp コマンドで、ディレクトリごと上書きコピーする。
既にある foo ディレクトリに bar ディレクトリを上書きコピーする場合。
$ cp -r bar -T foo
● cp, directory, overwrite, ディレクトリ, 上書き, コピー, オプション, option
複数ファイルをテキストファイルにリスト化しておいて、wget でダウンロードさせる方法のメモ。
urls.txt ファイルにダウンロードしたい URL のリストを記述
$ vi urls.txt (下記を記述) ftp://hogehoge.org/hogehoge1.tar.gz ftp://hogehoge.org/hogehoge2.tar.gz ftp://hogehoge.org/hogehoge3.tar.gz
xargs と wget でダウンロード。wget の -c オプションは、レジューム。途中、停止したときに再開できる。
$ xargs -P 20 -n 1 wget -c --user=hogehoge --password=hogehoge < urls.txt
● wget, xargs, urls.txt, 一括, 自動, ダウンロード, レジューム, download
SVN で、チェックアウトしたローカルのツリーをサーバと同じ状態にしたいことがある。
make でいうところの、distclean みたいなやつ。
そんな便利コマンドは無いので、bash の function に SVN-DISTCLEAN というコマンドを追加する。
function SVN-DISTCLEAN () { svn status --no-ignore svn status --no-ignore | cut -c 2- | xargs rm -rf svn revert -R . svn update svn status --no-ignore }
ツリーに移動して、SVN-DISTCLEAN を実行。
作業中のファイルがある場合は、悲しいことになってしまうので注意。
$ SVN-DISTCLEAN
● SVN-DISTCLEAN, svn, distclean
XML ファイルを整形するコマンド。
$ tidy -i -w 0 -xml -utf8 ./hogehoge.xml > hogehoge-out.xml
● tidy, xml, XML, 整形
Windows10 で、Caps Lock キーを Ctrl キーに割り当てる設定メモ。
レジストリを変更する方法で。
(レジストリを変更するので、自己責任でお願いします)
レジストリキー | コンピューター -> HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Keyboard Layout |
種類 | バイナリ値 (REG_BINARY) |
データ | 00 00 00 00 00 00 00 00 02 00 00 00 1d 00 3a 00 00 00 00 00 |
caps2ctrl.reg ファイルを作成して実行する。中身は下記。
実行後、再起動。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
先頭から、4 バイトずつ
00,00,00,00 : ヘッダ (バージョン)
00,00,00,00 : フラグ
02,00,00,00 : エントリー数 (NULL 終端含む)
1d,00,3a,00 : キーコード変換 (003a を 001d に変換)
00,00,00,00 : NULL 終端
remove_caps2ctrl.reg ファイルを作成して実行する。中身は下記。
実行後、再起動。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=-
Windows キーも不要という人 (=自分) は、下記を使います。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,00,00,5b,e0,00,00,5c,e0,00,00,00,00
00,00,00,00 : ヘッダ (バージョン)
00,00,00,00 : フラグ
04,00,00,00 : エントリー数 (NULL 終端含む)
1d,00,3a,00 : キーコード変換 (003a Caps Lock を 001d Ctrl に変換)
00,00,5b,e0 : キーコード無効 (e05b 左 Win を無効化)
00,00,5c,e0 : キーコード無効 (e05c 右 Win を無効化)
00,00,00,00 : NULL 終端
● windows, windows10, caps, caps lock, ctrl, control, キャプスロック, コントロール, キー, 変更, 入れ替え, 割り当て, regedit, レジストリ, registry, win キー, win key, windows キー, windows key, 無効, 無効化
fzf をインストールするときに、毎回迷うのでメモしておく。
今回は、Ver.0.25.1 の例。シェルは bash。
git でやっても良いが、下記から tar.gz をダウンロード。
https://github.com/junegunn/fzf/tags
$ tar zxvf fzf-0.25.1.tar.gz $ cd fzf-0.25.1 $ ./install Downloading bin/fzf ... - Already exists - Checking fzf executable ... 0.25.1 Do you want to enable fuzzy auto-completion? ([y]/n) n Do you want to enable key bindings? ([y]/n) n Generate /home/masao/.fzf.bash ... OK Do you want to update your shell configuration files? ([y]/n) n Update /home/ohmoto/.bashrc: - [ -f ~/.fzf.bash ] && source ~/.fzf.bash ~ Skipped For more information, see: https://github.com/junegunn/fzf $ sudo cp bin/fzf* /usr/local/bin $ sudo cp man/man1/fzf* /usr/share/man/man1/ $ cp shell/completion.bash ~/.fzf_completion.bash $ cp shell/key-bindings.bash ~/.fzf_key-bindings.bash
.bashrc に、下記を設定。設定はお好みで。
export HISTSIZE=100000 export HISTCONTROL=ignoreboth:erasedups # history を重複登録しないための設定 export PROMPT_COMMAND='history -a; history -c; history -r' # 複数のシェルで history を共有するための設定 shopt -u histappend # 同上 source ~/.fzf_completion.bash source ~/.fzf_key-bindings.bash export FZF_DEFAULT_OPTS='--height 40% --reverse --border' export FZF_CTRL_R_OPTS="--preview-window up:3:wrap --preview 'echo {}'"
● fzf, history, 重複