Python 3 and pip install --user
Pythonのライブラリはpkgでインストールするものは /usr/local 以下にインストールされる。これまでは、pkgでインストールできないライブラリが必要である場合、 ~/.python/2.7.x/site-packages などを指定してきたが、pipは--userオプションを付けてインストールすると ~/.local/ 以下にインストールするのがデフォルトのようだ。
今後はそれに合わせることにする。それにともなって .cshrcなどには以下のように記述する。
setenv PYTHONPATH ~/.local/lib/python3.7/site-packages
あるpythonライブラリは、~/.local/bin にコマンドを放り込むので、pathを通すことにした。
zfs rootでsingle user mode
zfs root環境ででsingle user modeを利用する場合、
# zfs mount -a # zfs set readonly=off rpool
のあと作業する。
# shutdown -r now
でリブートする。
SSH public key login problem
何が起こったか全くわからないが、自分向けのメモ。
これまで、
~/.ssh/config
Host github HostName github.com IdentityFile ~/.ssh/id_rsa_github User git
~/Documents/freebsdPostInstall/.git/config
... [remote "origin"] url = git@github.com:username/freebsdPostInstall.git ...
のように記入していて問題なく利用できていた。はず。にも関わらず、最近これではpushできなくなった。
% cd ~/Documents/freebsdPostInstall/ % git push origin master Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
~/.ssh/configのHost行が間違っており、この場合は、
% ssh -T git@github
としてloginできる。しかし、.git/configではgit@github.comでloginしようとしてだめと言われる。
なので、
~/.ssh/config
Host github.com ...
と変えてpushできるようになった。
~/Documents/freebsdPostInstall/.git/config
... [remote "origin"] url = git@github:username/freebsdPostInstall.git ...
と変えてもloginできる。
しかし、なぜ以前はloginできてpushできていたのだろう。何も変えていないのに。単純に考えるとsshの振る舞いが変わったように思うが、この間バージョンアップはしてないはずなんだけど。もしかして忘れてるだけか。
自分向け追記 2021/01/27
このとき何が起きたのかは、依然としてわからないが、
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
などをみると、
Host github github.com HostName github.com IdentityFile ~/.ssh/id_github_rsa User git
のように、Host 欄を書くほうが良いらしい。githubというエイリアスが必要ない場合は、github.comのみで問題ないと思うのだが。
Intel I219V driver for FreeBSD
家のサーバーのリプレース作業。
購入したマザーボードASUS H170M-PLUSのオンボードネットワークがIntel I219Vで、FreeBSDのGENERICカーネルでは認識しない。Intelはこのチップのためのdriverを公開している。 (em-7.6.1.tar.gz)
基本的にはこのtar ballを展開してmakeすればよい。make loadでコンパイルして一時的にドライバーを組み込む。make installでインストールするので、/boot/loader.confに
if_em_load="YES"
と書いておけばブート時に自動的に読み込む。
ただし、GENERICカーネルにはemドライバーが存在するので、そのままmake loadするとロードに失敗する。したがって、GENERICWOEMというコンフィグファイルでemとigbを外したカーネルを作り、インストールして、その上でmake installした。igbは特に意味ないが、外しておいた。
もしかしたら、GENERICカーネルに無理やりmake installすれば置き換わるのかもしれないが(それがモジュール化ということの意味であるような気もする)、気持ち悪いのでとりあえずGENERICWOEMを作りなおした。
Wi-Fi設定
最近、あまりにも無線LANが遅くなっていたので設定を見なおした。
BUFFALOの無線LANアクセスポイントを使用しているが、11n/g/bの無線チャンネルを自動にしていると1チャンネルに設定される。このチャンネルは周辺の多数の機器が設定してるようで、干渉が発生しているようだ。とりあえず7チャンネルに固定すると、少し通信環境が改善した。
そもそも、このアクセスポイントは5GHzに対応しているのに、家の機器は2.4GHzにしか接続していない。設定を見直すと、11n/aと11n/g/bの両方が同じSSID(仮にHOMEとしよう)を設定しているのが問題だった。とりあえず、11n/aのSSIDをHOME-5Gとして設定しなおした。
多くの機器をHOME-5Gに接続すると、通信環境は劇的に改善した。ただ、11n/aの無線チャンネルを自動にしておくと56チャンネルとなり、NexusのタブレットがHOME-5Gに接続できない。そこで48チャンネルに設定することで、NexusもHOME-5Gに接続できるようになった。
zfs setup memo
zfsのルートファイルシステムでインストールし、/homeを5台のHDDにraidz2のファイルシステムを作成する手順のメモ。
参考: bsdinstall でも自由なパーティションレイアウトで Root on ZFS
bsdinstallのpartitioningにてShellを選択して。
# gpart create -s gpt ada0 # gpart add -a 4k -s 512k -t freebsd-boot -l boot0 ada0 # gpart add -a 4k -s 60g -t freebsd-zfs -l sys0 ada0 # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 # gpart set -a active ada0 # gnop create -S 4096 ada0p2 # zpool create -o altroot=/mnt -m none -f rpool ada0p2.nop # zfs set atime=off rpool # zfs set checksum=fletcher4 rpool # zfs create -V 8g -o checksum=off rpool/swap0 # zfs create -o mountpoint=none rpool/ROOT # zfs create -o mountpoint=/ rpool/ROOT/default # zfs create -o mountpoint=/tmp -o setuid=off rpool/tmp # zfs create -o mountpoint=/usr rpool/usr # zfs create -o compression=lz4 -o setuid=off rpool/usr/ports # zfs create -o compression=lz4 -o exec=off -o setuid=off rpool/usr/src # zfs create -o mountpoint=/var rpool/var # zfs create -o compression=lz4 -o exec=off -o setuid=off rpool/var/crash # zfs create -o compression=lz4 -o exec=off -o setuid=off rpool/var/log # zfs create -o compression=lz4 -o atime=on rpool/var/mail # zfs create -o compression=lz4 -o setuid=off rpool/var/tmp # zpool export rpool # gnop destroy ada0p2.nop # zpool import -o altroot=/mnt rpool # mkdir -p /mnt/boot/zfs # zpool set cachefile=/mnt/boot/zfs/rpool.cache rpool # zpool set bootfs=rpool/ROOT/default rpool # exit
bsdinstallの終了時にManual ConfigurationをYesで選択して。
# echo 'zfs_load="YES"' >> /boot/loader.conf # echo 'zfs_enable="YES"' >> /etc/rc.conf # echo '/dev/zvol/rpool/swap0 none swap sw 0 0' >> /etc/fstab # exit
rebootした後に、rootでログインして。
# zpool create hpool raidz2 ada1 ada2 ada3 ada4 ada5 # zfs create hpool/home # zfs set mountpoint=/home hpool/home # zfs set mountpoint=none hpool # gpart add -a 4k -s 32G -t freebsd-zfs -l zil0 ada0 # gpart add -a 4k -s 60G -t freebsd-zfs -l l2arc0 ada0 # zpool add hpool log gpt/zil0 cache gpt/l2arc0
/etc/login.conf and ~/.cshrc
現在のFreeBSDデフォルトの.cshrcには次のような部分がある。
# These are normally set through /etc/login.conf. You may override them here # if wanted. # set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin) # setenv BLOCKSIZE K # A righteous umask # umask 22
すなわち、この部分で書かれていることはコメントアウトされているが、通常は/etc/login.confによって設定されるから書く必要はないよ、もしサイトポリシーである/etc/login.confと異なる設定をする場合には、コメントをとって設定してね、という意味だと理解できる。
/etc/login.confを確認すると、
default:\ ... :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ ... :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\ ... :umask=022:
という感じに書かれている。だから、~/.cshrcにはset pathを書かなくても~/binにパスが通ると思う。しかし、それほど単純ではないようだ。
外部からログインした場合は、/etc/login.confの中身が正しく設定されて、~/binにパスが通っているが、MateのTerminalを開いた場合、
% echo $path /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin
と設定されており、~/binにパスが通っていない状態になる。
これは、MateのTerminalの設定で「ログインシェルとしてコマンドを実行する」にチェックを入れても解決しない。
したがって、現時点では~/.cshrcの3行についてコメントをとって、
# These are normally set through /etc/login.conf. You may override them here # if wanted. set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin) setenv BLOCKSIZE K # A righteous umask umask 22
のようにして使用するのが便利だと思う。