问题由来已久,表现为shell都显示正常,只要通过ssh -x 就会出现中文显示为一个一个方块。今天看到一个文章,提示了我,说是没有安装中文的x window 的字体。赶快装一下
sudo apt install fonts-arphic-uming
问题由来已久,表现为shell都显示正常,只要通过ssh -x 就会出现中文显示为一个一个方块。今天看到一个文章,提示了我,说是没有安装中文的x window 的字体。赶快装一下
sudo apt install fonts-arphic-uming
我在win10上运行emacs, 总是出现不响应,比如,打开某个很小的文本文件,或者打开某个目录,然后就没反应了。如果接着按C-g, emacs就白屏了。即使等上一天,也是不响应状态。
最近看到消息,说1709版本的WSL非常不错,正好我的电脑已经升级到这个版本,尝试了下。
之前的半屏无法放大的问题已经没有了。但中文输入法还是无法使用win10 原生的,幸好,我的emacs配置中预防了没有中文输入法的情况。只是相对而言,有些不太方便,我比较习惯用shif来切换中英文。
xming+wsl的emacs简直是绝配。我已经决定将通过mysys2安装的emacs卸载了
过于复杂的密码很容易丢失,即使使用密钥管理器也容易发生误操作或者被迫暴露。而密钥文件其实也并非那么的可靠。
cryptsetup的命令真的很长。我写了个小脚本(crypt.sh)简化下。
#!/bin/bash KEYFILE="" HEADFILE="" KEYFILEOFFSET=0 DEVICE="" S_POS=0 PAYLOAD=0 ACTION="" CIPHER="serpent-xts-plain64" CRYPTSETUP="cryptsetup" EXTEND="" BLOCKSIZE=4194304 N=1 function convert() { local ret=`echo $1 | awk '/[0-9]$/{print $1;next};/[gG]$/{printf "%u\n", $1*(1024*1024*1024);next};/[mM]$/{printf "%u\n", $1*(1024*1024);next};/[kK]$/{printf "%u\n", $1*1024;next}' ` echo "$ret" } function get_args() { while getopts "k:h:d:p:s:c:eb:n:m:" arg do case $arg in k) KEYFILE=$OPTARG ;; h) HEADFILE=$OPTARG ;; d) DEVICE=$OPTARG ;; p) PAYLOAD=$(($(convert $OPTARG) / 512)) ;; s) S_POS=$(convert $OPTARG) ;; c) CIPHER=$OPTARG ;; e) EXTEND="extend" ;; b) BLOCKSIZE=$(convert $OPTARG) ;; n) N=$OPTARG ;; ?) echo "unknow argument" exit 1 ;; esac done } function open() { $CRYPTSETUP open --keyfile-size $KEYSIZE --key-file $KEYFILE --keyfile-offset $KEYOFFSET --header $HEADFILE $DEVICE `basename $DEVICE` } function close() { $CRYPTSETUP close `basename $DEVICE` } function format() { $CRYPTSETUP luksFormat --cipher $CIPHER --key-size 512 --keyfile-size $KEYSIZE --hash sha512 --key-file $KEYFILE --keyfile-offset $KEYOFFSET --header $HEADFILE --align-payload $PAYLOAD $DEVICE } function dump() { $CRYPTSETUP luksDump --keyfile-size $KEYSIZE --key-file $KEYFILE --keyfile-offset $KEYOFFSET $HEADFILE } function extend() { dd if=$KEYFILE of=/dev/shm/`basename $KEYFILE` bs=$BLOCKSIZE count=1 skip=1 HEADFILE=/dev/shm/`basename $KEYFILE` } function quit() { return 0 } function extendquit() { rm -rf /dev/shm/`basename $KEYFILE` } ACTION=$1 shift get_args $@ $EXTEND echo $KEYFILE echo $HEADFILE KEYOFFSET=$((`od $KEYFILE -N $N -tu4 -j $S_POS | grep [^0$N] | awk '{print $2}'` * 8)) KEYSIZE=$((BLOCKSIZE - KEYOFFSET)) $ACTION ${EXTEND}quit
使用方法如下
crypt.sh action -k key -h header -d /dev/sdx -p xG -s offset -c cipher -b blocksize -e -n N
脚本只支持key文件的方式。脚本使用key文件的offset* 8位置的数值作为在key文件中的偏移,默认为1个字节,可以通过设置N的值来修改字节的大小,比如N为2就是两个字节的值*8作为最终的偏移,N越大,则密钥文件需要的也越大,因为表示偏移位置的数字范围也越大。我比较喜欢使用随机生成的文件,因此,这个最终的偏移是多少,除了打开文件,具体计算,我也不清楚,但只需要记住初始的值offset就可以了。
blocksize为密钥文件的大小, 单独可能没太大用,但如果将key文件和header文件直接拼接起来,带上参数-e, 则后续的操作(format除外), 就不需要使用header文件了。脚本会将header文件解出来,放到/dev/shm下面,使用完之后,再删除掉它, 这个时候, blocksize就很有用了。
-p 对应的是align-payload 参数,支持偏移,这个值和blocksize, offset 一样, 支持K,M,G这样人类可看的格式。 action可以为 open, close, format, dump 对应的使cryptsetup的 open, close, format,luksDump
这样一来, 主要只用记住密钥文件的偏移即可。