やるきなし

2017/11/16 14:57 / broadcom-sta if.h: fatal error: sys/socket.h: No such file or directory

broadcom-sta-dkms (6.30.223.271-7) の compile に以下の通り fail する.

[/var/lib/dkms/broadcom-sta/6.30.223.271/build/make.log] 抜粋
Kernel architecture is X86_64
  AR      /var/lib/dkms/broadcom-sta/6.30.223.271/build/built-in.o
  CC [M]  /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/shared/linux_osl.o
In file included from ./include/linux/compat.h:17:0,
                 from ./include/linux/ethtool.h:17,
                 from ./include/linux/netdevice.h:41,
                 from /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/include/linuxver.h:69,
                 from /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/shared/linux_osl.c:25:
./include/linux/if.h:28:10: fatal error: sys/socket.h: No such file or directory
 #include <sys/socket.h>   /* for struct sockaddr.  */
          ^~~~~~~~~~~~~~
compilation terminated.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862175 にあるとおりinclude/uapi/linux/if.hが使われるべきで,include/linux/if.hは存在しないべき(?)だそう.include/uapi/linux/if.hが存在すれば /usr/src/linux-headers-<version>/include/linux/if.h を削除してしまえば解決する.

2017/11/15 15:56 / Linux ORC unwinder と objtool (CONFIG_STACK_VALIDATION needs tools/objtool/objtool along headers)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833500 にあるとおり CONFIG_STACK_VALIDATION=yだと(CONFIG_ORC_UNWINDER=yが依存する) 別途コンパイルするタイプのモジュール(nvidia-kernel-dkms 等)のコンパイルにことごとく失敗する(Makefile がうまく *.o を生成してくれず,ld を呼び出して link する際に make が error で落ちる,という不親切な状態).

以下のように kernel compile 時にできた objtool を /usr/src/linux-headers-<version>/tools/objtool/ に copy すれば解決する.

sudo cp tools/objtool/objtool /usr/src/linux-headers-<version>/tools/objtool/

Related articles

2017/11/15 15:41 / Linux 4.13.12 -> 4.14.0

4.14 が出たので.configがどう変更されるのか見てみた.2017/09/18 07:04 / Linux 4.13.1 -> 4.14-rc1 との差分のみ(ターゲットが異なって,こちらはより汎用指向の環境).以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/11/07 10:34 / mendeleydesktop on Debian GNU/Linux unstable (sid)

mendeleydesktop(最新版は 1.17.11)をDebian GNU/Linux unstableにinstallしたのだが,aptitude updateで以下のように怒られる.もっと書くとCRON-APTでupdateに失敗したと見なされてupgradeされない.

W: Failed to fetch https://desktop-download.mendeley.com/download/apt/dists/stable/InRelease: 403  Forbidden [IP: 54.230.108.7 443]
E: Some index files failed to download. They have been ignored, or old ones used instead.

stable (stretch) では特に問題ないので,unstable の apt の原因らしい(仕様変更がある?)./etc/apt/sources.list.d/mendeleydesktop.list を削除するか,当該ファイルにてapt lineをcomment outするのがwork aroundな模様.

2017/09/18 07:04 / Linux 4.13.1 -> 4.14-rc1

4.14-rc1が出ているので .config がどう変更されるのか見てみた.ターゲットは VMware on Windows 上の Guest で CPU は i7-3687U.以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

ちなみに 4.14-rc1 は使用に耐えられず(刺さる),0666f560b71b899cd11a7caf39fd45129e9030fdを使用.Firmware が削除されたということだが,特に問題になることはなかった.

以下,その他.

追記 (2017/10/12)

Linux 4.14-rc3Linux 4.14-rc4にあるように4.14のリリースは結構大変そう.手元でも rc2 以降は Xorg が起動しない状況(rc4まで確認).

追記 (2017/10/16)

Linux 4.14-rc5ではだいぶましになってきていて,Xorg も起動するようになった.

Related articles

2017/09/05 04:14 / Linux 4.12.10 -> 4.13

4.13 が出たので.configがどう変更されるのか見てみた.2017/07/16 23:56 / Linux 4.12.0 -> 4.13-rc1 との差分のみ(ターゲットが異なって,こちらはより汎用指向の環境).以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/08/12 11:52 / WordPress Multisite Post Duplicator Plugin 1.7.1

以下のように wp-cli (https://github.com/wp-cli/wp-cli) (以下の wp command)を使って WordPress の自動 update を行っているのだが,

#!/bin/sh

wp core update
wp core update-db --network
wp plugin update --all
wp theme update --all
wp core language update

cron から以下のようなエラーメールが届く.

PHP Parse error:  syntax error, unexpected '[' in /somewhere/public_html/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php on line 418
Parse error: syntax error, unexpected '[' in /somewhere/public_html/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php on line 418
PHP Parse error:  syntax error, unexpected '[' in /somewhere/public_html/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php on line 418
Parse error: syntax error, unexpected '[' in /somewhere/public_html/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php on line 418

Update 後 Multisite Post Duplicator (v1.7.1) (https://wordpress.org/plugins/multisite-post-duplicator/) が正常動作せず,うまく表示がされなくなる.

サーバの PHP のバージョンは以下のとおりで,

% php -v
PHP 5.3.3 (cli) (built: Jan  5 2016 08:52:51)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

http://php.net/manual/en/language.types.array.php にある PHP 5.4 形式の配列(array in PHP = ordered map)定義を使っているのが原因.ということで,以下パッチ.

--- a/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php
+++ b/wp-content/plugins/multisite-post-duplicator/inc/mpd-functions.php
@@ -415,10 +415,10 @@ function mpd_get_images_from_the_content($post_id){
             $image_obj = get_post($matches[0]);
             //Push this object into an array.
             // Save all elements needed to the duplication process
-            $images_objects_from_post[ $matches[0] ] = [
+            $images_objects_from_post[ $matches[0] ] = array(
                 'attached_file_path' => get_attached_file( $matches[0] ),
                 'object'             => $image_obj
-             ];
+            );
 
         }
         //Deliver the array of attachment objects to the core

2017/08/09 19:37 / From: の書き換えに対応しているメールサービス

たとえば Gmail で送信者情報として Gmail ではない自身のメールアドレスを使う,といった話.もっと書くと,SMTP (RFC 821 -> RFC 2821 -> RFC 5321)では RCPT TO:/MAIL FROM: コマンドでそれぞれ送信先/送信元を設定しつつも,メール本体(DATA)は RFC 822 のとおりこの中にも別途 From: と To: 等が記載できるようになっていて,その From: を書き換えるという話.ちょっとだけ調べた範囲.

2017/08/07 13:05 / ストレージ32GBのマシンにWindows 10 Creators Updateを適用する

手元に Office 入りの 32Gストレージの Windows 10 Note (Windows 8 から無償アップデート)があって,それを最新のWindows 10にするためになんとかする.

空き容量が8G必要で(解説ページによっては10Gが安全と書いてあったりする),ちょっとどうあがいても6G程度の空き容量しか作れなかったので,Media Creation Tool (MCT)で別途インストールメディアを作成してインストール.

基本的にはAnniversary Update適用の際にMCTを利用する詳細を記述してある http://ascii.jp/elem/000/001/232/1232920/ の記事のとおりのことを今やればCreators Updateが入ってくれる.

手元の 32GB Windows 10 Note は Windows 10 Home なので,メディア作成時のエディションとしてはWindows 10 Homeを単純に選びたかったのだが,

という項目しか表示されなかった.後者を選択して,現状特に問題なし.Office 等もそのまま使えている.

Media Creation Tool (MCT)は https://www.microsoft.com/software-download/windows10 からダウンロードする(言語自動判定).ただしこのURL,Windows ではない OS からアクセスするとISOをダウンロードするページに飛ばされる様子.

2017/07/16 23:56 / Linux 4.12.0 -> 4.13-rc1

4.13-rc1が出ているので .config がどう変更されるのか見てみた.ターゲットは VMware on Windows 上の Guest で CPU は i7-3687U.以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/07/03 12:39 / dax: Could not allocate 8192 bytes percpu data on Linux 4.12

Kernel を 4.12 に上げたら dax (手元では device-mapper が依存)が modprobe に失敗するようになった.

percpu: allocation failed, size=8192 align=4096 atomic=0, alloc from reserved chunk failed
CPU: 4 PID: 3257 Comm: modprobe Tainted: P           O    4.12.0-(snip)
Hardware name: (snip)
Call Trace:
 ? dump_stack+0x5c/0x7a
 ? pcpu_alloc+0x601/0x640
 ? load_module+0x7bf/0x2af0
 ? kernel_read_file+0x19d/0x1c0
 ? SyS_finit_module+0xa5/0xe0
 ? SyS_finit_module+0xa5/0xe0
 ? entry_SYSCALL_64_fastpath+0x1e/0xa9
dax: Could not allocate 8192 bytes percpu data

mm/percpu.cpcpu_allocでコケているようなのだが(8192 byteが大きいということ?),percpu_testのkernel moduleを作ってみても以下のような感じでうまく動かず.

% sudo modprobe percpu_test
modprobe: ERROR: could not insert 'percpu_test': Resource temporarily unavailable

ということで,これ以上は追えず.とりあえずはCONFIG_DAX=mCONFIG_DAX=yにすれば解決する.

2017/07/03 12:32 / nvidia-legacy-340xx-kernel-dkms 340.102-1 on Linux 4.12

Kernel を 4.12 に上げたら nvidia-legacy-340xx-kernel-dkms の compile でコケるようになった.treewide: move set_memory_* functions away from cacheflush.hの影響でset_memory_uc()他がasm/cacheflush.hから<asm/set_memory.h>に移動した影響.

以下 nvidia-legacy-340xx-kernel-dkms 向けやるきなしなしパッチ.4.12 以前では動かない.

--- a/conftest.sh
+++ b/conftest.sh
@@ -372,6 +372,7 @@ compile_test() {
             #
             CODE="
             #include <asm/cacheflush.h>
+            #include <asm/set_memory.h>
             void conftest_set_memory_uc(void) {
                 set_memory_uc();
             }"
@@ -385,6 +386,7 @@ compile_test() {
             #
             CODE="
             #include <asm/cacheflush.h>
+            #include <asm/set_memory.h>
             void conftest_set_memory_array_uc(void) {
                 set_memory_array_uc();
             }"
@@ -398,6 +400,7 @@ compile_test() {
             #
             CODE="
             #include <asm/cacheflush.h>
+            #include <asm/set_memory.h>
             void conftest_set_pages_uc(void) {
                 set_pages_uc();
             }"
--- a/nv-linux.h
+++ b/nv-linux.h
@@ -194,6 +194,7 @@ RM_STATUS nvos_forward_error_to_cray(struct pci_dev *, NvU32,
 #if defined(NV_SET_MEMORY_UC_PRESENT)
 #undef NV_SET_PAGES_UC_PRESENT
 #undef NV_CHANGE_PAGE_ATTR_PRESENT
+#include <asm/set_memory.h>
 #elif defined(NV_SET_PAGES_UC_PRESENT)
 #undef NV_CHANGE_PAGE_ATTR_PRESENT
 #endif

Related articles

2017/06/28 11:30 / nfsroot + squashfs + overlayfs

良くあるDiskless Clientの構成法だと思われるが,あまり情報がないので自分用メモ.

ということを overlayfs で squashfs に tmpfs を overlay して実現する,という話.

ざっくりと設定手順は以下のとおり.サーバ・クライアントは Debian GNU/Linux stretch を想定.

DHCP Server の設定

isc-dhcp-server をインストールして,/etc/dhcp/dhcpd.confを以下のような感じで設定.groupを使うと記述が少なくて済む(global parameter として next-server と filename を書いても良い).

group {
  next-server 10.0.0.2;
  filename "/client/pxelinux.0";
  host megane {
    hardware ethernet xx:xx:xx:xx:xx:xx;
    fixed-address 10.0.0.71;
    option host-name "megane";
  }
  ### 他のホストの設定多数
}

10.0.0.2はTFTP ServerのIP Address,filenameでTFTPのパスを指定.

TFTP Server の設定

tftpd-hpa をインストール(tftpd は Tftpd is not suitable for use with the PXE bootloader(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401288) とのことで PXE boot 向けではないとのこと).

/etc/default/tftpd-hpaTFTP_DIRECTORY="/srv/tftp"とあって,つまりサーバの/srv/tftpがTFTPの/になる.

PXE netboot 用のファイルを /srv/tftp/client (dhcpd.confで指定したパス)に配置する.network boot の Debian installerを細工する形で置くが簡単.

/srv/tftp/client/pxelinux.cfg/defaultに設定ファイルを置く.私の場合は以下.

default syslinux/vesamenu.c32
    prompt 0
    menu title Diskless clients
    MENU AUTOBOOT Starting the default kernel in # seconds

include syslinux/stdmenu.cfg

label Linux 4.11.7-diskless-01+
    menu label Linux 4.11.7-diskless-01+ (stretch)
    menu default
    timeout 100
    kernel boot/vmlinuz-4.11.7-diskless-01+
    append initrd=boot/initrd.img-4.11.7-diskless-01+ root=/dev/nfs nfsroot=10.0.0.2:/export/diskless,ro ip=:::::eth0:dhcp

label Linux 4.11.6-diskless-01+
    menu label Linux 4.11.6-diskless-01+ (stretch)
    kernel boot/vmlinuz-4.11.6-diskless-01+
    append initrd=boot/initrd.img-4.11.6-diskless-01+ root=/dev/nfs nfsroot=10.0.0.2:/export/diskless,ro ip=:::::eth0:dhcp

boot/は実際には/srv/tftp/client/boot/が対応し,ここに後の手順で作成する root のイメージから,vmlinuz と initrd を copy する.10.0.0.2:/export/disklessはNFSで mount する際の source.

syslinux/以下のファイルはDebian installerから流用(若干調整が必要).

NFS Server の設定

nfs-kernel-server をインストール./export/disklessがNFSでクライアントからマウント可能なように/etc/exportsを設定する.See man exportfs.

root (/) イメージ作成

debootstrap を利用する.debootstrapをインストールしておく.

sudo debootstrap --verbose --arch amd64 stretch stable http://ftp.jp.debian.org/debian/

で,stable/ 以下に root (/) のファイルが配置される.あとは

sudo chroot stable /bin/sh

stable// とみなした shell が起動するので,そこで apt-get で必要なパッケージを入れまくる(/etc以下や password 等も設定).

ただし /proc 等が存在しないので,chroot の前に以下で mount しておくのが無難.

sudo mount -t devpts devpts stable/dev/pts
sudo mount -t proc proc stable/proc
sudo mount -t binfmt_misc binfmt_misc stable/proc/sys/fs/binfmt_misc
sudo mount -t sysfs sysfs stable/sys
sudo mount -t tmpfs tmpfs stable/sys/fs/cgroup

この段階で,別途 make-kpkg でカスタム linux-image package を作成し,それを chroot 環境で dpkg -i する.kernel 再構築の際,使う NIC の Driver や NFS 等は module (m)ではなくkernelに組み込んでおく(y)必要がある.また,initrd に細工する必要があるが,これはまた後ほど.

あと,ホスト毎に処理を変えたい部分については /etc/rc.local に書いておく.ssh server の鍵をホスト毎に変えたくなる(かつ永続性も確保したい)が,これについてはたとえば以下のようなファイルを用意しておき,

[/etc/init.d/ssh-pre]
#! /bin/sh

### BEGIN INIT INFO
# Provides:             ssh-pre
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# X-Start-Before:       sshd
# Default-Start:        2 3 4 5
# Default-Stop:         
# Short-Description:    Prepare ssh host keys
### END INIT INFO

# `hostname` に応じてどこかから鍵を /etc/ssh/ に copy する

chroot環境でinsserv ssh-preを実行して,起動時に実行されるようにしておく.

好みの感じに仕上がった stable/ を squashfs 化する.

sudo rsync -avzL --exclude=... stable/ stable-tmp/
sudo mksquashfs stable-tmp stable.img

上のように無駄なファイルを squashfs に入れても仕方がないので rsync で一旦フィルタする.mksquashfs の -ef option でも exclude できるが,容量が大きくテストが煩雑になるので,rsync で exclude するようにした.手元の script では例えば以下のように exclude している.

     --exclude='/tmp/*'                                 \
     --exclude='/opt/*'                                 \
     --exclude='/proc/*'                                \
     --exclude='/sys/*'                                 \
     --exclude='/dev/*'                                 \
     --exclude='/var/cache/apt/archives/*'              \
     --exclude='/var/tmp/*'                             \
     --include='/var/log/*/'                            \
     --exclude='/var/log/*'                             \
     --exclude='/var/log/*/*'                           \

initrd の細工

initrd から squashfs を mount (ro)して,それに対して tmpfs (rw) を overlay して diskless client の / とする,という設定を行う.今から思えばhttps://github.com/chesty/overlayrootとほぼ同じ.

以下の2つのファイルを用意する.

[/usr/share/initramfs-tools/hooks/overlayroot]
#!/bin/sh
PREREQ=""
prereqs()
{
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

manual_add_modules overlay
manual_add_modules squashfs
manual_add_modules loop

hooks/* は kernel module や initrd で必要な実行ファイルを initrd に含める設定を書く箇所.overlay や squashfs が initrd に含まれるようにする.

$1で処理を分岐している部分は,hook ファイルの起動順を決めるための部分で,もし他のhookファイルに依存する場合はPREREQ変数にその名前を記載しておく (see man initramfs-tools).

[/usr/share/initramfs-tools/scripts/init-bottom/overlayroot]
#!/bin/sh
PREREQ=""
prereqs()
{
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

modprobe overlay
modprobe squashfs
modprobe loop

mkdir -p /over
mount -t tmpfs -o size=1g tmpfs /over

mkdir -p /over/rw
mkdir -p /over/ro
mkdir -p /over/sq
mkdir -p /over/work

mount -o remount,ro /root
ro=/over/ro

file=`ls /root/*.img | tail -1`
if test -f $file ; then
    mount -t squashfs $file /over/sq
    ro=/over/sq
fi

mount --move /root /over/ro

mount -t overlay -o upperdir=/over/rw,lowerdir=$ro,workdir=/over/work overlay /root

# Create files for /var/log/ .
# See /var/lib/dpkg/info/base-files.postinst .
touch /root/var/log/wtmp /root/var/log/btmp /root/var/log/lastlog

mkdir -p /root/over
mount --move /over /root/over

if command -v nuke >/dev/null; then
    nuke /over
fi

scripts/init-bottom/overlayroot/usr/share/initramfs-tools/init (/init)から起動されることになるファイル.scripts/init-bottom/udev も存在すると思われるが,それより先に実行される(ファイル名で sort した順っぽい).PREREQについてはhookと同じ.

やっていることは以下のとおり.

あとは chroot 環境で以下で initrd を作り直す.initrd は /boot/initrd*に生成される.

# update-initramfs -u -k all

NFSROOT の設置

NFS server の /export/diskless に squashfs のイメージ stable.img を置く.また,/export/diskless/dev/ 等は一時的に mount point となるので,以下を mkdir しておく(中身は空).

テスト

いちいち実機でテストするのは面倒なので同一ネットワーク内の別ホストで kvm を用いてテストすると簡便.たとえば以下(DHCP サーバに接続するため要ブリッジの設定).

% qemu-img create -f qcow2 debian.qcow 20G
% kvm -vnc :0 -hda debian.qcow -smp 8 -net bridge -net nic,model=e1000 -m 8000 &
% vncviewer :0 &

追記 (2017/08/03)

上記作業だと

と,かなり容量が必要で,もとの / は upgrade 等のために必要で保存しておく必要もあるので,いっそのこと作った squashfs + overlayfs で (1) の代用にしようとしたのだが,

ということで,(1)を(3)+overlayfsに rsync -a しようとしたら,大量の同一ファイルの copy が発生してしまった.

% ls -l --full-time stable/etc/hosts stable-20170731-over/etc/hosts
-rw-r--r-- 1 root root 109 2017-06-20 13:05:10.000000000 +0900 stable-overlay/etc/hosts
-rw-r--r-- 1 root root 109 2017-06-20 13:05:10.714742658 +0900 stable/etc/hosts
% stat stable/etc/hosts stable-20170731-over/etc/hosts
  File: stable/etc/hosts
  Size: 109             Blocks: 8          IO Block: 4096   regular file
Device: 2ch/44d Inode: 11835294    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-08-04 10:32:23.151773243 +0900
Modify: 2017-06-20 13:05:10.714742658 +0900
Change: 2017-06-20 13:05:10.714742658 +0900
 Birth: -
  File: stable-20170731-over/etc/hosts
  Size: 109             Blocks: 1          IO Block: 1024   regular file
Device: 702h/1794d      Inode: 1613        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-06-20 13:05:10.000000000 +0900
Modify: 2017-06-20 13:05:10.000000000 +0900
Change: 2017-06-20 13:05:10.000000000 +0900
 Birth: -

みたいな感じで,stable/ は通常の(1) filesystem 上のファイル,stable-overlay/ は (3) のファイル.

rsync で dry-run してみると,以下のとおり一応同じ timestamp だとはみなしてもらえる.

% rsync -avz -n stable/etc/hosts stable-20170731-over/etc/hosts
sending incremental file list

sent 44 bytes  received 12 bytes  112.00 bytes/sec
total size is 109  speedup is 1.95 (DRY RUN)

で,実際に rsync しようとすると以下のように怒られる.

% rsync -avz stable/etc/hosts stable-20170731-over/etc/hosts
sending incremental file list
rsync: failed to set times on "/somewhere/stable-20170731-over/etc/hosts": Operation not permitted (1)

sent 44 bytes  received 141 bytes  370.00 bytes/sec
total size is 109  speedup is 0.59
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]

実際に copy はしないが,timestamp の update を試みていることが分かる(user権限でrsyncしたので,permission が deny された).実際に timestamp が update されると,overlayfs の upper layer 側にファイルが作成されることになる.

ということで(1)を完全に削除(つまり(3)のうえに rsync しない)しようか思案中.

Related articles

2017/06/21 19:50 / Debian GNU/Linux stretch の NVIDIA Driver

Kernel は 4.11.6 の自前パッケージ.ドライバのソースは以下の2種類を試した.

Linux 4.11.6 + nvidia-kernel-dkms 375.66-1

嵌ったのは,以下のような2つのファイルを混同してしまう点.conftest.sh でことごとく error がでる.

/usr/src/linux-headers-4.11.6-<version>/include/asm/ をまるごと削除して解決させた.ソースコードの修正は不要.

Linux 4.11.6 + nvidia-legacy-340xx-kernel-dkms 340.102-1

手元に GeForce 8600 (古い)があって,これは最新のドライバではダメで,legacy ドライバを利用する必要がある.ということで仕方なくコンパイル.以下の対応する変更が必要.

以下パッチ.

--- a/conftest.sh
+++ b/conftest.sh
@@ -1579,6 +1579,7 @@ compile_test() {
             #
             CODE="
             #include <linux/sched.h>
+            #include <linux/sched/signal.h>
             void conftest_fatal_signal_pending(void) {
                 fatal_signal_pending();
             }"
--- a/nv-drm.c
+++ b/nv-drm.c
@@ -48,7 +48,7 @@ static int nv_drm_load(
     return -ENODEV;
 }
 
-static int nv_drm_unload(
+static void nv_drm_unload(
     struct drm_device *dev
 )
 {
@@ -64,7 +64,7 @@ static int nv_drm_unload(
         }
     }
 
-    return -ENODEV;
+    return;
 }
 
 static void nv_gem_free(
diff --git a/uvm/nvidia_uvm_linux.h b/uvm/nvidia_uvm_linux.h
index f69c107..3d21a47 100644
--- a/uvm/nvidia_uvm_linux.h
+++ b/uvm/nvidia_uvm_linux.h
@@ -189,6 +189,9 @@
 #include <linux/ratelimit.h>
 #endif
 
+#include <linux/signal.h>
+#include <linux/sched/signal.h>
+
 #if !defined(no_printk)
 //
 // TODO: bug 1329255: instead of this heavy-handed approach, use conftest to
diff --git a/uvm/nvidia_uvm_lite.c b/uvm/nvidia_uvm_lite.c
index 71bebe3..3685dc6 100644
--- a/uvm/nvidia_uvm_lite.c
+++ b/uvm/nvidia_uvm_lite.c
@@ -818,7 +818,7 @@ done:
 }
 
 #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
-int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+int _fault(struct vm_fault *vmf)
 {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
     unsigned long vaddr = (unsigned long)vmf->virtual_address;
@@ -828,7 +828,7 @@ int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
     struct page *page = NULL;
     int retval;
 
-    retval = _fault_common(vma, vaddr, &page, vmf->flags);
+    retval = _fault_common(vmf->vma, vaddr, &page, vmf->flags);
 
     vmf->page = page;
 
@@ -866,7 +866,7 @@ static struct vm_operations_struct uvmlite_vma_ops =
 // it's dealing with anonymous mapping (see handle_pte_fault).
 //
 #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
-int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+int _sigbus_fault(struct vm_fault *vmf)
 {
     vmf->page = NULL;
     return VM_FAULT_SIGBUS;

Related articles

2017/06/19 11:23 / Debian GNU/Linux stretch

Debian GNU/Linux 9.0 stretch が 2017-06-17 にリリースされたので,upgrade.リリースノートはhttps://www.debian.org/releases/stretch/amd64/release-notes/.以下でアップグレード.

リリースのノートには以下のように記載されているが,aptitude を使ってしまった.

以前のリリースの一部では、アップグレード作業に aptitude の利用を推奨していました。このツールは jessie から stretch へのアップグレードには推奨されません。

update 時点で以下のように怒られる場合は,

W: There is no public key available for the following key IDs:
EF0F382A1A7B6500

まず debian-archive-keyring を upgrade する.

aptitude install debian-archive-keyring

あとは aptitude で調整しつつ upgrade.個人的に気付いた点(リリースノートにも書いてある)等,メモは以下のとおり.

なお,MariaDB になったため mysqldump が途中でコケるようになった.

mysqldump -u root -p --all-databases --events
(略)
mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

以下でDBをアップグレードすれば良いらしい(適宜 --verbose --force オプションをつける).

mysql_upgrade -u root -p

追記(2017/6/24)

Postfix を upgrade (3.1.4-7)したら以下のように表示されるようになった.

Postfix is running with backwards-compatible default settings
See http://www.postfix.org/COMPATIBILITY_README.html for details
To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"

upgrade ではなく,イチから install した場合の/etc/postfix/main.cfは以下のとおり.

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

微妙に該当するchangelog.Debian.gzは以下.

[/usr/share/doc/postfix/changelog.Debian.gz]
postfix (3.1.4-1) unstable; urgency=medium
(snip)
  * Default to compatibility_level=2 on fresh installs.
 -- LaMont Jones (snip)  Wed, 04 Jan 2017 17:55:06 -0700

よく見てみたら sid 環境でも同じ Warning が出ていた.

ほぼ default の設定でつかっているので,受け入れることにして以下を実行.

% sudo postconf compatibility_level=2
% sudo postfix reload

/etc/postfix/main.cfcompatibility_level = 2が追加される.将来のdefaultの変更も受け入れる場合は(各自の責任のもと)9999に設定せよとのことだが,そこまでの度胸はなし.

追記(2017/6/29)

sdic も stretch に含まれていない.

2017/06/13 09:41 / background-image transition

以下のようなやる気のない感じで背景画像を20秒間隔でクロスフェード(3.5秒)で切り替えるようなページを作っていたのだが,Chrome で表示する分には問題ないのだが,Chrome 以外だとことごとく無視されるということに気付く.

$(function(){
    cnt=1; t=0;
    body=$('body');
    arr=['bg0.jpg','bg1.jpg','bg2.jpg','bg3.jpg','bg4.jpg'];
    setInterval(function() {
        bg='url("images/'+arr[cnt++]+'")';
        if(cnt==arr.length)cnt=0;
        if(t==0){body.css('transition','background 3s linear 0.5s');t=1;}
        setTimeout(function(){body.css('background-image',bg);},3500);
    },20000);
});

どうやら background-image は animatable ではないというのが標準ならしい.Chrome でクロスフェードできていたのは,Chrome の勝手な実装によるものならしい.

ということで,div を2枚重ねして交互に画像そ差し替えつつ fadeIn()/fadeOut() するようにとりあえずjQueryで実装.その後,div を複数重ねてCSSのみでの実装例を見付けたので,CSSのみで実装(CSSが若干見通し悪くなるので,CSSを生成するスクリプトを書いた).

参考にしたページ:

2017/06/10 23:51 / google-chrome Emacs key binding

google-chrome の key binding が gnome (GTK) の default に戻ってしまい悩む.環境は Debian GNU/Linux sid で,gdm および gnome-shell は利用せず,window manager は awesome window manager.以下のような状況.

Gnome の key binding を Emacs にするには,(時代によって)いろいろあって,手元の残骸を見てみた感じでは以下のとおり.

[~/.gtkrc-2.0]
gtk-key-theme-name = "Emacs"
[~/.gtkrc-2.0]
include "/usr/share/themes/Emacs/gtk-2.0-key/gtkrc"
[~/.config/gtk-3.0/settings.ini]
[Settings]
gtk-key-theme-name = Emacs
% dconf write /org/gnome/desktop/interface/gtk-key-theme  \'Emacs\'
or
% gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

~/.config/dconf/user に設定される

他に gnome-tweak-tool を使うというのもあるらしいが,gnome-tweak-tool はいろんな package に依存して面倒だったので試さず(おそらく dconf と同じ).

どの設定も効かなくて悩んだのだが,gnome-terminal を一旦 gnome-terminal-server とともに終了して,gnome-terminal-server と gnome-terminal を起動し直したら設定が有効になった.手元の環境では dconf の設定は効かず,~/.gtkrc-2.0も obsolete で,~/.config/gtk-3.0/settings.ini の設定が唯一効くらしい.

ちなみに gnome の設定まわりは dconf (GUI: dconf-editor)やら gsettings やら gconf (CUI: gconftool, GUI: gconf-editor)やらややこしいのだが,それらの関係はGconf, Dconf, Gsettings and the relationship between themのとおりで,最新環境では dconf のみを信じていればいいらしい.

Related articles

2017/05/18 17:40 / nfsroot で / に対して fscache (fsc) を有効にする,再び

以前の記事で nfsroot で / に対して fscache (fsc) を有効にする方法を記載していたのだが,これだと initramfs-tools が upgrade されると編集したファイルが上書きされて正常に起動しなくなる.

ということで,もう少しスマートな方法(アプローチは同じ).以下の2つのファイルを用意して,chmod 755 しておく.

[/usr/share/initramfs-tools/hooks/zz-nfsmount]
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/mount.nfs /bin/mount.nfs
cp -pnL /usr/share/initramfs-tools/extra/* ${DESTDIR}/bin

[/usr/share/initramfs-tools/extra/nfsmount]
#!/bin/sh

opt=""
while [ "$1" = "-o" ] ; do
    opt="$opt $1"; shift
    opt="$opt $1"; shift
done
mount.nfs $1 $2 $opt

あとはupdate-initramfs -u -k allとかで initrd 再生成.

/usr/share/initramfs-tools/hooks/zz-nfsmountは以前 /usr/share/initramfs-tools/hooks/klibcの末尾に書いていたもの./usr/share/initramfs-tools/extra/nfsmountは initrd に含める nfsmountの代用 script.やっていることは以下のとおり.

Related articles

2017/05/15 14:04 / Linux 4.11.0 -> 4.12-rc1

4.12-rc1が出ているので .config がどう変更されるのか見てみた.ターゲットは VMware on Windows 上の Guest で CPU は i7-3687U.以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/05/03 00:24 / Linux 4.10.13 -> 4.11.0

4.11 が出たので 2017/02/20 10:31 / Linux 4.9.X -> 4.10同様 .config がどう変更されるのか見てみた.2017/03/06 09:51 / Linux 4.10.1 -> 4.11-rc1 との差分のみ(ターゲットが異なって,こちらはより汎用指向の環境).以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/04/25 12:22 / Wanderlust+IMAP/SSL w/emacs24 24.5+1-10

Debian GNU/Linux unstable (sid) で emacs24 が 24.5+1-10 に上がった際に,以下のとおりopenssl s_clientが使えなくなった.

[/usr/share/doc/emacs24-common/changelog.Debian.gz]
* Don't offer/use openssl s_client by default: "s_client is a debug
  tool, it does not set up a secure connection, it ignores all
  errors and just continues.  It also doesn't do checks it should be
  doing.  This is all documented behaviour." -- Kurt Roeckx
  Add these patches to fix the problem:
    0028-IMAP-connections-no-longer-use-openssl-s_client.patch
    0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch
  Thanks to Kurt Roeckx for reporting the issue. (Closes: #766397)

おそらくその影響で,Wanderlust の IMAP/SSL が gnutls-cli を使うようになって,うまくサーバに接続できない状況となってしまった.

% gnutls-cli --port XXXXX localhost
Processed 173 CA certificate(s).
Resolving 'localhost:XXXXX'...
Connecting to '::1:XXXXX'...
- Certificate type: X.509
- Got a certificate list of 1 certificates.
- Certificate[0] info:
 - subject `EMAIL=postmaster@example.com,CN=localhost,OU=Automatically-generated IMAP SSL key,O=Courier Mail Server,L=New York,ST=NY,C=US', issuer `EMAIL=postmaster@example.com,CN=localhost,OU=Automatically-generated IMAP SSL key,O=Courier Mail Server,L=New York,ST=NY,C=US', serial 0x.................., RSA key 4096 bits, signed using RSA-SHA1, activated `2015-03-.. ..:..:.. UTC', expires `2016-03-.. ..:..:.. UTC', key-ID `sha256:........'
        Public Key ID:
                sha1:........
                sha256:........
        Public key's random art:
(snip)

- Status: The certificate is NOT trusted. The certificate issuer is unknown. The certificate chain uses expired certificate. 
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.
*** handshake has failed: Error in the certificate.

Wanderlust から /usr/share/emacs/24.5/lisp/net/tls.el.gz が呼ばれて,gnutls-cli の引数は以下のように定義されている.

(defcustom tls-program
  '("gnutls-cli --x509cafile %t -p %p %h"
    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3")
; snip

ということで ~/.wl に以下を書いて解決.自前サーバを port forward して使っているので--insecureでとりあえずは問題なし.

(setq tls-program '("gnutls-cli --insecure --x509cafile %t -p %p %h"))

2017/04/08 08:41 / Emacs の local variable を eval する

いろいろ互換性を考慮して code 毎に ruby-indent-level 等の Emacs local variable を設定することにしている.以下のような感じ.

#!/usr/bin/env ruby

if true
    puts "foo"
end

# Local Variables:
# ruby-indent-level: 4
# End:

Default の ruby-indent-level は 2 なので,Local Variables:を書いた後にそれをEmacsのBufferに反映させるためには,ファイルの再読込みをすればよいのだが,それをしなくても M-x normal-mode すれば反映されるらしい.See f1-f normal-mode or /usr/share/emacs/24.5/lisp/files.el.gz.

2017/03/26 00:54 / curl on お名前.com 共用サーバーSD CGI

お名前.com 共用サーバーSDにて,ちょっとした CGI で curl を利用していたのだが,急に使えなくなった.仕方なく wget を使うことにする.

原因は(64-bitの) libldap-2.4.so.2,liblber-2.4.so.2 が存在しないこと.ldap 対応の curl が install されているらしい.ちなみに curl は 64-bit で,OS は Solaris 10.ssh でログインした際には 32-bit 版の curl が普通に使える.

% ldd /usr/local/bin/curl (← ruby の CGI で `ldd /usr/local/bin/curl` とかを叩く)
    libcurl.so.4 =>  /usr/local/lib/64/libcurl.so.4
    libidn.so.11 =>  /usr/lib/64/libidn.so.11
    libiconv.so.2 =>     /usr/local/lib/64/libiconv.so.2
    libssl.so.1.0.0 =>   /usr/local/lib/64/libssl.so.1.0.0
    libcrypto.so.1.0.0 =>    /usr/local/lib/64/libcrypto.so.1.0.0
    libldap-2.4.so.2 =>  (file not found)
    liblber-2.4.so.2 =>  (file not found)
    libresolv.so.2 =>    /lib/64/libresolv.so.2
    libgen.so.1 =>   /lib/64/libgen.so.1
    libz.so.1 =>     /usr/lib/64/libz.so.1
    librt.so.1 =>    /lib/64/librt.so.1
    libsocket.so.1 =>    /lib/64/libsocket.so.1
    libnsl.so.1 =>   /lib/64/libnsl.so.1
    libc.so.1 =>     /lib/64/libc.so.1
    liblber-2.4.so.2 =>  (file not found)
    libldap-2.4.so.2 =>  (file not found)
    libgcc_s.so.1 =>     /usr/sfw/lib/64/libgcc_s.so.1
    libdl.so.1 =>    /lib/64/libdl.so.1
    libaio.so.1 =>   /lib/64/libaio.so.1
    libmd.so.1 =>    /lib/64/libmd.so.1
    libmp.so.2 =>    /lib/64/libmp.so.2
    libscf.so.1 =>   /lib/64/libscf.so.1
    libdoor.so.1 =>  /lib/64/libdoor.so.1
    libuutil.so.1 =>     /lib/64/libuutil.so.1
    libm.so.2 =>     /lib/64/libm.so.2

もちろん 64-bit libldap-2.4.so.2,liblber-2.4.so.2 をどこかから入手して,LD_RUN_PATH でパス指定するなども考えたが,まず Solaris 10 のバイナリがなかなか見つからず(sunsite.sut.ac.jpはいつのまにかなくなっていて,KDDI のミラーも404),http://mirror.opencsw.org/opencsw/ に OpenCSW Solaris package archive があるにはあったが,.pkg.gz の取り扱い(Linux 等での展開)を考えた時点で面倒になって断念.

Related articles

2017/03/22 16:51 / X-Forwarded-For: unknown (forwarded_for off) (Squid 3.4.8-6+deb8u4)

Squid (Debian GNU/Linux 3.4.8-6+deb8u4) 経由で www.ieee.org にアクセスすると,以下のようなエラーが表示されるようになった.

Bad Request
Bad Request
An error occurred. Please contact your System Administrator.
Copyright 2017 © IEEE . All rights reserved. Use of this Web site signifies your agreement to the IEEE Terms and Conditions.A not-for-profit organization, IEEE is the world's largest professional association for the advancement of technology.

squid.conf で forwarded_for off としているのだが,off だと X-Forwarded-For: unknown というヘッダ情報を送るらしい.X-Forwarded-For を付けない設定とするには delete とする必要があるらしい.以下 squid.conf より.

Related articles

2017/03/10 18:09 / Let's Note CF-AX2 キーボード掃除(キートップ取り外し)

ノートPC (Let's Note CF-AX2) の Enter キー付近にちょっと粘っこいジュースをこぼしてしまい,Enter キーの効きが相当悪くなった.というか,小指で Enter を押すのだが,かなり力を要する状態に.ということで,なんとかしてみた.

http://faq.askpc.panasonic.co.jp/faq/docs/003181を参照して爪とクランプの位置を確認しつつ,マイナスドライバーでクランプ側をまず外し,その後に爪側を外す.あとキートップやパンタグラフ部分の詳細はhttp://akiba-neo.com/letsnote/s9/210/が参考になった.

images/2704.jpg
ジュースをこぼした箇所のキートップを外したところ.Enter 以外も若干引っかかる状態だったので,取り外して綿棒で(少し水を付けたりして)掃除.

images/2707.jpg
パンタグラフ.

images/2708.jpg
Enter キーのキートップの裏は金具があったりなどで結構複雑な構造になっている.

images/2710.jpg
Enter キーのキートップの裏.金具を上げてみたところ.この金具の箇所で動きが悪くなっていた模様.

という感じで,外したキートップを全て水洗いして元に戻したら普通に使えるようになった.

2017/03/06 09:51 / Linux 4.10.1 -> 4.11-rc1

4.11-rc1が出ているので .config がどう変更されるのか見てみた.ターゲットは VMware on Windows 上の Guest で CPU は i7-3687U.以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2017/03/05 23:07 / 確定申告 w/e-Tax

マイナンバーカードとPaSoRi RC-S380があれば e-Taxでの申告が可能ということで,やってみたメモ.

申告書の提出まで

「e-Tax受付システム」での確認

「e-Tax受付システム」の「メッセージボックス」から提出内容を確認する.ただし Chrome on Linux でログインしようとすると「政府共通認証局(官職認証局)のルート証明書」等がなければ警告がでるので,以下で対応.

pay-easy (インターネットバンキング)で支払い

クレジットカードでの支払も可能だが,この場合手数料が生じる(https://kokuzei.noufu.jp/参照.1万円毎82円)ので pay-easy (ペイジー)を利用.http://www.e-tax.nta.go.jp/tetsuzuki/tetsuzuki4.htm#Link2を参照しつつ 「入力方式による納税手続」(つまり納付目的コードを利用)で納税する.

pay-easy で入力が要求されるのは金額の他に以下.

平成49年まで復興特別所得税額があるので,020(申告所得税)ではなく320(申告所得税及復興特別所得税)になるので注意 (いくつかの解説ページでは 020 を利用しているものもあるが).

「登録方式による納税手続」というのもあるらしく,この場合,e-Taxソフト等を使用して納付情報データを作成し,e-Taxに登録(納付情報登録依頼)し,e-Tax上で納付区分番号を確認するというもの.今回「e-Taxソフト」は使っていないので,この手続きはとらず.

Related articles

2017/03/04 22:45 / マイナンバーカードと PaSoRi RC-S380

PaSoRi RC-S380でマイナンバーカードが利用できるらしい.ということでやってみた.

基本的には http://www.nta.go.jp/tetsuzuki/shinkoku/shotoku/tokushu/jyunbi.htm に沿って「JPKI利用者ソフト」なるものをインストールするだけ.ただしこの「JPKI利用者ソフト」は「FeliCaランチャー」と干渉するらしく 「FeliCaランチャー」が起動していると「JPKI利用者ソフト」がPaSoRiにアクセスできなく(ポートをFeliCaランチャーが掴んでいる状態に)なるので,「JPKI利用者ソフト」を利用する場合は「FeliCaランチャー」を終了しておく(タスクトレイから終了可能).

なお,署名用電子証明書と利用者証明用電子証明書の2種類が収められていて,それらのパスワードは以下のようになっている.

市役所等でマイナンバーカード受け取りの際に設定したものだが,その際英字は大文字で入力していたと思われるが,大文字小文字の区別はないっぽい.

Related articles

2017/02/20 13:03 / nvidia-kernel-dkms 340.96-1 on Linux 4.10

以下の kernel の修正に対する対応が必要.NVIDIA 375.26 Kernel 4.10-rc1 (w/ CPU hotplug workaround) を参考に.

--- a/nv-linux.h
+++ b/nv-linux.h
@@ -277,11 +277,13 @@ RM_STATUS nvos_forward_error_to_cray(struct pci_dev *, NvU32,
 
 extern int nv_pat_mode;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
 #if !defined(NV_VMWARE) && defined(CONFIG_HOTPLUG_CPU)
 #define NV_ENABLE_HOTPLUG_CPU
 #include <linux/cpu.h>              /* CPU hotplug support              */
 #include <linux/notifier.h>         /* struct notifier_block, etc       */
 #endif
+#endif
 
 #if !defined(NV_VMWARE) && \
   (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE))
--- a/os-mlock.c
+++ b/os-mlock.c
@@ -50,8 +50,13 @@ RM_STATUS NV_API_CALL os_lock_user_pages(
        unsigned int flags = 0;
        if(write) flags |= FOLL_WRITE;
        if(force) flags |= FOLL_FORCE;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
+       ret = get_user_pages_remote(current, mm, (unsigned long)address,
+                       page_count, flags, user_pages, NULL, NULL);
+#else
        ret = get_user_pages_remote(current, mm, (unsigned long)address,
                        page_count, flags, user_pages, NULL);
+#endif
     }
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
     ret = get_user_pages_remote(current, mm, (unsigned long)address,
--- a/uvm/nvidia_uvm_lite.c
+++ b/uvm/nvidia_uvm_lite.c
@@ -815,7 +815,7 @@ done:
 #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
 int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
-    unsigned long vaddr = (unsigned long)vmf->virtual_address;
+    unsigned long vaddr = (unsigned long)vmf->address;
     struct page *page = NULL;
     int retval;
 

Related articles

2017/02/20 10:31 / Linux 4.9.X -> 4.10

4.10 が出たので 2016/12/14 23:00 / Linux 4.8 -> 4.9同様 .config がどう変更されるのか見てみた.2016/12/30 21:28 / Linux 4.9 -> 4.10-rc1 との差分のみ(ターゲットが異なる).

Related articles

2017/02/17 18:20 / ZSWAP と ZRAM メモ

ZSWAP と ZRAM のメモ.ZSWAP は SWAP のための compressed cache で,ZRAM は Compressed RAM block device.ともに圧縮を用いてメモリ/SWAPの効率化を図るもの,だと思う.

ZRAM

CONFIG_ZRAM で設定する.モジュール可.CONFIG_ZSMALLOCに依存し,CONFIG_ZSMALLOC_STAT=y としておくと debugfs 経由で stat が確認できる./sys/kernel/debug/zsmalloc/zram0/classes 等.

Debian の場合は特に package は提供されておらず,https://wiki.debian.org/ZRam のように /etc/init.d/zram を用意して利用する.

SWAP する際にこの圧縮された block device が利用されるイメージ.とはいえこの compressed block device 自体も RAM であるという,不思議な状況になる.

ZSWAP

SWAP する際にそれを圧縮して RAM 上に CACHE する,というアプローチ.こちらは 別途 SWAP 用の HDD/SDD などの存在が想定される.

CONFIG_ZSWAP で設定,モジュール化不可.CONFIG_ZPOOL に依存するとともに,Default の mm/zswap.c#define ZSWAP_ZPOOL_DEFAULT "zbud" となっている ので,CONFIG_ZBUD=y (Low (Up to 2x) density storage for compressed pages)も組み込む必要があるっぽい.

# echo 1 > /sys/module/zswap/parameters/enabled で enable する.max_pool_percent, zpool, compressor を設定可能./sys/kernel/debug/zswap/ 以下に stat がある.sudo grep -R . /sys/kernel/debug/zswap とかで参照.

参考にしたページ: http://gnu.hatenablog.com/entry/2016/01/12/072154

2017/02/09 11:03 / MediaWiki で SVG w/inkscape 0.92.0-4~bpo8+1 (jessie backports)

MediaWiki で inkscape を用いて SVG (scalable vector graphics) のサムネイルを作る設定をしていたのだが,inkscape の version を jessie の backports のもの (0.48.5-3 -> 0.92.0-4~bpo8+1)にしたらうまく動かなくなった.

Error creating thumbnail: 
(process:2380): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Failed to get connection
** (inkscape:2380): CRITICAL **: dbus_g_proxy_new_for_name: assertion 'connection != NULL' failed

** (inkscape:2380): CRITICAL **: dbus_g_proxy_call: assertion 'DBUS_IS_G_PROXY (proxy)' failed

** (inkscape:2380): CRITICAL **: dbus_g_connection_register_g_object: assertion 'connection != NULL' failed

** (inkscape:2380): WARNING **: GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL!

terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc

Emergency save activated!
Emergency save completed. Inkscape will close now.
If you can reproduce this crash, please file a bug at www.inkscape.org
with a detailed description of the steps leading to the crash, so we can fix it.
** Message: Error: Inkscape encountered an internal error and will close now.

/somewhere/mediawiki/includes/limit.sh: line 101: 2379 Aborted /usr/bin/timeout $MW_WALL_CLOCK_LIMIT /bin/bash -c "$1" 3>&-

どうやら shell を起動する際にメモリサイズを制限しているらしく,そこで引っかかっているらしい./etc/mediawiki/LocalSettings.php$wgMaxShellMemory という変数で設定するが,https://www.mediawiki.org/wiki/Manual:$wgMaxShellMemoryによると default は 307200 KB = 300 MB.inkscape がメモリを喰いすぎな気もする.以下のように500 MBに設定すれば動くようになった.

[/etc/mediawiki/LocalSettings.php]
$wgMaxShellMemory = 512000;

Related articles

2017/02/08 14:07 / MediaWiki 1.28.0 on Debian/GNU Linux jessie

いろいろ事情があって MediaWiki を 1.28.0 に上げた.実際には git の REL1_28.以下メモ.

Elasticsearchだが,今回色々混乱して色んなバージョンが混ざった状態に一瞬なってしまい,Elasticsearchが保持するデータ(/var/lib/elasticsearch/にある)を一旦まるごと削除した.以下のような感じ.

sudo /etc/init.d/elasticsearch stop
sudo rm -rf /var/lib/elasticsearch/*
sudo rm -rf /var/lib/elasticsearch/.* (dot で始まるものがあれば)
sudo /etc/init.d/elasticsearch start

LocalSettings.phpだが,

$wgCacheDirectory = "$IP/cache";

などと明示的に $wgCacheDirectory を指定しないと以下のようなエラーが出たような気がする(default の設定がなくなった?).

LCStoreCDB.php: Unable to move the new CDB file into place.

Related articles

2017/01/16 22:15 / Windows 10 Client が Samba (2:4.2.14+dfsg-0+deb8u2) で構築されているドメインに参加できない

既存ユーザ(一度ログインしたことのあるユーザ)は Windows 10 Client に(ドメインのアカウントで)ログインできるが,新規ユーザはログインできないという問題が発生.おそらくちょっと前にあった更新プログラムの影響かもしれない.

サーバ側は Samba (2:4.2.14+dfsg-0+deb8u2) で smbldap-tools で LDAP に繋いで,Linux とアカウントを共有しているような環境.サーバ側の問題,特に Samba と LDAP の連携まわりを疑ったが,Windows 8 Client ではこのような症状がでていないので,Windows 10 固有の問題らしい.

症状は以下のとおり.

一旦ドメインから抜けたり再度参加したりいろいろ試したが,今度は既存ユーザ(一度ログインしたことのあるユーザ)までログインできなくなると いう状況に.

日本語で調べていたためまったく検索に引っかからなかったのだが,samba.org の https://wiki.samba.org/index.php/Required_Settings_for_Samba_NT4_Domains によると smb.conf

server max protocol = NT1

を書く必要があるとのこと.これで解決した.なお「現在ログオン要求をサービスするログオン サーバーがありません」 に対応する英語メッセージは There are currently no logon servers available to service the logon request.

Related articles

2016/12/30 21:28 / Linux 4.9 -> 4.10-rc1

4.10-rc1 が出ているので .config がどう変更されるのか見てみた.ただし 2016/12/14 23:00 / Linux 4.8 -> 4.9 とはターゲットが異なる(ターゲットは VMware on Windows 上の Guest で CPU は i7-3687U).以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=9d85025b0418163fae079c9ba8f8445212de8568 で REPORTING-BUGS が Documentation/admin-guide/reporting-bugs.rst に rename されているので,make-kpkg で .deb が作れなくなっている./usr/share/kernel-package/ruleset/targets/headers.mk で REPORTING-BUGS を install している箇所を comment out して make-kpkg する.

あと arch/x86/kernel/cpu/vmware.c に幾つか修正が施されているようで dmesg の diff (抜粋)は以下のような感じ.

-Host bus clock speed read from hypervisor : 66000000 Hz
+vmware: TSC freq read from hypervisor : 2601.000 MHz
+vmware: Host bus clock speed read from hypervisor : 66000000 Hz
+vmware: using sched offset of 10831029224 ns
-Booting paravirtualized kernel on bare hardware
+Booting paravirtualized kernel on VMware hypervisor

追記(2017/2/27)

Linux 4.10 に REPORTING-BUGS が含まれない問題だが,kernel-package に https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=849357 のように bug report されている.

Related articles

2016/12/30 02:42 / 電子マネービューワー FLO:Q(フローク) サービス終了

PaSoRi RC-S380で nanaco の残高が確認できず,変だなと思っていたら http://www.floq.jp/kisekae/ のとおり FLO:Q(フローク)(電子マネービューワー含む)が12月20日でサービスを終了していた.

残高を確認するだけなので FeliCa Balance Viewerをとりあえず使うことにした(Linux版もあるらしい).スマートフォンのNFCをつかってアプリで読んでもよいのだけども.

Related articles

2016/12/29 02:03 / ZenFone 3 検討

スマートフォン(Android)の買い替えを検討中.現在使っているのは HTC One (M7) でスペックは以下.

不満はないが,若干もっさりしだしたのとディスプレイが割れているので,買い替えたい.ASUS の ZenFone シリーズで検討中.

ZS570KL の日本版は Snapdragon 821 になっていて,ストレージも 256G というとんでもないスペック(256Gをなにに使うんだろう...).ZS570KL は https://www.asus.com/jp/News/M3BOvqwUePdKjglj のとおり一旦受注停止していたが 12/22 に受注再開されている.買うのであれば ZS570KL なのだが10万円ぐらいなので逡巡してしまう.対して海外版は7万円強(その分スペックも落ちる).微妙.とりあえず ZE520KL が手頃感もありつつ,今のものと比べてサイズも若干だけ大きい程度なので,当面を凌ぐには良いかもと思いつつある.

2016/12/20 11:54 / nvidia-kernel-dkms 340.96-1 on Linux 4.9

nvidia-kernel-dkms 340.96-1 (Debian GNU/Linux stable) を Linux 4.9 で compile しようとすると以下のようにコケる.

/usr/src/nvidia-current-340.96/os-mlock.c:XX:XX: error: too many arguments to function ‘get_user_pages_remote’

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=9beae1ea89305a9667ceaab6d0bf46a045ad71e7 の影響の様なので os-mlock.c の

ret = get_user_pages_remote(current, mm, (unsigned long)address,
                            page_count, write, force, user_pages, NULL);

の箇所を以下のように変更.

{
    unsigned int flags = 0;
    if(write) flags |= FOLL_WRITE;
    if(force) flags |= FOLL_FORCE;
    ret = get_user_pages_remote(current, mm, (unsigned long)address,
                                page_count, flags, user_pages, NULL);
}

実際は write=1, force=0 なので,

ret = get_user_pages_remote(current, mm, (unsigned long)address,
                            page_count, FOLL_WRITE, user_pages, NULL);

でもOKなはず.ただし compile は通るが

NVRM: failed to register procfs!
NVRM: request_mem_region failed for 16M @ 0xfa000000. This can
NVRM: occur when a driver such as rivatv is loaded and claims
NVRM: ownership of the device's registers.
NVRM: DRM init failed
NVRM: NVIDIA init module failed!

という感じで modprobe に失敗する.かつ /proc/driver/nvidia/ だけが残されて,再度 modprobe する際は

proc_dir_entry 'driver/nvidia' already registered

とか怒られたり ls /proc/driver/nvidia/ とかすると固まったりする...Linux 4.9 を諦めるか,340.96-1 ではなく backports の 367.57-2~bpo8+1を使うか...

追記(2016/12/27)

/proc/driver/nvidia/ (procfs) の部分については単に nvidia-kernel-dkms 340.96-1 の bug らしい(error handling が抜けている).以下でなんとかなる.

--- a/nv.c
+++ b/nv.c
@@ -809,13 +809,17 @@ int __init nvidia_init_module(void)
     /* create /proc/driver/nvidia/... */
     rc = nv_register_procfs();
     if (rc < 0)
+    {
         nv_printf(NV_DBG_ERRORS, "NVRM: failed to register procfs!\n");
+        rc = -ENODEV;
+        goto failed5;
+    }
 
     if (pci_register_driver(&nv_pci_driver) < 0)
     {
         rc = -ENODEV;
         nv_printf(NV_DBG_ERRORS, "NVRM: No NVIDIA graphics adapter found!\n");
-        goto failed4;
+        goto failed35;
     }
 
     if (nv_drm_init(&nv_pci_driver) < 0)
@@ -1040,6 +1044,9 @@ failed3:
 
     pci_unregister_driver(&nv_pci_driver);
 
+failed35:
+    nv_unregister_procfs();
+
 failed5:
     rm_shutdown_rm(sp);
 
 

goto failed4 の箇所は普通に goto 先を間違っているような気がする.

追記(2016/12/27)

https://devtalk.nvidia.com/default/topic/981852/linux/resolution-patch-attached-for-nvidia-linux-driver-340-98-x86_64-using-linux-kernel-4-9/ から辿れる http://pastebin.com/raw/0XE0e8Wx にある以下のパッチをあてたらうまく動くようになった.

--- kernel/nv-drm.c
+++ kernel/nv-drm.c
@@ -115,7 +115,11 @@ static const struct file_operations nv_drm_fops = {
 };

 static struct drm_driver nv_drm_driver = {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+    .driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_LEGACY,
+#else
     .driver_features = DRIVER_GEM | DRIVER_PRIME,
+#endif
     .load = nv_drm_load,
     .unload = nv_drm_unload,
     .fops = &nv_drm_fops,

https://patchwork.freedesktop.org/patch/102820/https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=3cbf6a5deb2f4a469de7a90a3cc169e8fcba95e2 によると,drm について比較的新しい driver は DRIVER_MODESET というフラグが用いられているが,実際にこれは「DRIVER_MODERN」(新しい driver)の意味であって super confusing だから古いタイプの driver に DRIVER_LEGACY というフラグを付けることにしたらしい.

Related articles

2016/12/14 23:00 / Linux 4.8 -> 4.9

Linux 4.9リリースされたので,make menuconfigで何もせずに Exit したら手元の Linux 4.8 の .config がどう変更されるのか見てみた.以下 - は削除されたもの,+ は追加されたもの m->n 等は値の変化を示す.

Related articles

2016/12/13 21:46 / yasnippet メモ

yasnippet を使おうと思う機会がそこそこあるのだが,いちいち思い出すのに時間がかかるのでメモ.

ところで yas-insert-snippet を C-x i i に割り当てる設定が散見されるが,C-x i は通常 insert-file なので(see /usr/share/emacs/24.5/lisp/file.el.gz),ちょっとイマイチ.

参考にしたページ:

2016/12/10 04:50 / dmesg on Debian GNU/Linux sid (unstable)

いつの間にか以下のとおり sid で dmesg が user 権限で実行できないようになった.

% dmesg
dmesg: read kernel buffer failed: Operation not permitted

/usr/share/doc/linux-image-4.8.0-2-amd64/changelog.linux.gz によるとCONFIG_SECURITY_DMESG_RESTRICT=yが default になった模様.

* security,printk: Enable SECURITY_DMESG_RESTRICT, preventing non-root users
  reading the kernel log by default (sysctl: kernel.dmesg_restrict)

少なからず困惑した人がいるようで https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842226 では純粋に bug として報告されていたり (そういう仕様になった,ということで終わり),https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=847198 では adm group の user は dmesg できるようにして欲しいというのが wishlist として挙げられていたりする(これは難しそう).

以下のどちらかをすれば user 権限で dmesg できるようになる.

% sudo sysctl kernel.dmesg_restrict=0
% sudo sh -c 'echo 0 > /proc/sys/kernel/dmesg_restrict'

起動時に有効にするには/etc/rc.confにそれっぽい command を書いておくか /etc/sysctl.confもしくは /etc/sysctl.d/local.confに以下を書いておく.

kernel.dmesg_restrict = 0

追記(2017/1/20)

jessie の backports の最新版 kernel linux-image-4.8.0-0.bpo.2-amd64 (4.8.15-2~bpo8+2) でも上記と同じ症状が発生する模様.

2016/12/06 12:24 / xserver-xorg-video-nvidia 367.57-2 on Debian GNU/Linux sid (unstable)

何かの拍子に(というかCRON-APTで)再び xserver-xorg-video-nvidia (unstable は 367.57-2)が uninstall され,これが xorg-video-abi-20 以下 (および xserver-xorg-core (< 2:1.18.99) に依存しており,xserver-xorg-core は現在 2:1.19.0-2 で Provides: xorg-input-abi-24, xorg-video-abi-23 という状況なので,xserver-xorg-video-nvidia が install できない.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845638 にあるとおり xorg-server の 1.18 から 1.19 への transition に関する問題らしい.Debian experimental にある 375.20 を使えば問題ないらしいが,845638 ではまず 370.28 を unstable に push することを考えているらしい(375.20 は変更点が多いから,というのが理由になっている).

がしかし 370.28 が push される気配もないので,experimetal の 375.20 を install して使うことにした.問題なく動作している.

追記(2016/12/9)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845638 だが結局 375.20 が unstable に降りてくる形になった模様.

Related articles

2016/12/01 00:20 / xserver-xorg-input-vmmouse Removed 1:13.1.0-1 from unstable (Debian GNU/Linux)

xserver-xorg-input-vmmouse が古い xserver-xorg-core に依存したままで xserver-xorg-core を upgrade することが出来なかったのでちょっと調べた.どうやら xserver-xorg-input-vmmouse は https://tracker.debian.org/news/784550 によると July 16 時点で unstable から削除された模様 (July 20 には testing からも 削除された).理由は https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=831420 のとおり Linux kernel driver 側でサポートされたからとのこと.たしかに 4.1-rc1 で 取り込まれているCONFIG_MOUSE_PS2_VMMOUSE=yで有効になる (CONFIG_HYPERVISOR_GUEST=y等に依存).

Related articles

2016/11/25 10:44 / btrfs tuning

Intel 8 Series/C220 Series Chipset (具体的にはC226)の Onboard RAID (RAID5)上でLUKSの暗号化を入れて,その上でbtrfsを置いてNFSでファイルサーバにしているのだが,そのパフォーマンスについて.

ちなみにCPUは4コア4スレッド(stable 運用で,kernel は backports の linux-image-4.6.0-0.bpo.1-amd64 4.6.4-1~bpo8+1).暗号化しているのは廃棄の手間を考えて,btrfsはsnapshotによる daily backup のため.RAID5 が Onboard (ソフトウェアRAID)なのは予算の都合上.

だいたい2年半ぐらい運用していて,それなりにファイル数も増えて,snapshot数も増えた状態で,頻繁にiowaitで固まるようになった.

以下チューニングのポイント.

追記(2016/12/7)

ionice や renice で nfsd や btrfs-transacti の優先度を下げて(I/O については ionice -c 3 で idle class にして,プロセス優先度も nice -n 19 するとか)負荷が上がった時でも譲り合ってもらえるような設定を試してみたが,やはりうまく行かない.

結局 btrfs-transacti が間欠的に書き込みを行うのが問題らしい.通常は数十MBなのだが,たまに数百Mbyte級の read/write が発生する (なにに由来してサイズが変動するのか未調査).ちょっと微妙だが btrfs-transacti の kernel thread を起こすタイミングを手動で調整することにする.というか,mount -o remount すると btrfs-transacti が起きるので,あとはずっと sleep してもらうようにする.具体的には以下.

commit interval が長いと不具合発生時に未 commit のものが残ることになる(ように思われる)ので,その点要注意.手動で再起動する前にも一旦 remount したほうが良いのかもしれない.

ちなみに数時間分の commit すべきなにかを溜め込んだだろう状態で remount して一気に commit してみたが,それほど disk access は無かった.適切に merge されたりするのかもしれない.あと,メモリ使用量(もしくは disk 上のバッファ?)とかも気になるところ (際限なく溜め込めるわけでもないような気がする).

Related articles

2016/11/02 06:44 / タイ王国メモアゲイン

Related articles

2016/10/12 12:12 / samba segfault on Debian GNU/Linux sid (unstable)

samba 2:4.4.6+dfsg-1 が segfault で動いてくれない.

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f9713a4ae1a in __GI___waitpid (pid=8474, stat_loc=stat_loc@entry=0x7ffe7b34f310, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
#0  0x00007f9713a4ae1a in __GI___waitpid (pid=8474, stat_loc=stat_loc@entry=0x7ffe7b34f310, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
#1  0x00007f97139d208b in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:148
#2  0x00007f97150ee191 in smb_panic_s3 () from /usr/lib/x86_64-linux-gnu/libsmbconf.so.0
#3  0x00007f9717601b6f in smb_panic () from /usr/lib/x86_64-linux-gnu/libsamba-util.so.0
#4  0x00007f9717601d86 in ?? () from /usr/lib/x86_64-linux-gnu/libsamba-util.so.0
#5  <signal handler called>
#6  0x00007f9713f460f5 in talloc_get_size () from /usr/lib/x86_64-linux-gnu/libtalloc.so.2
#7  0x00007f97151092d6 in event_add_to_poll_args () from /usr/lib/x86_64-linux-gnu/libsmbconf.so.0
#8  0x00007f97151098b1 in ?? () from /usr/lib/x86_64-linux-gnu/libsmbconf.so.0
#9  0x00007f9713d3604d in _tevent_loop_once () from /usr/lib/x86_64-linux-gnu/libtevent.so.0
#10 0x00007f9713d3627b in tevent_common_loop_wait () from /usr/lib/x86_64-linux-gnu/libtevent.so.0
#11 0x000055dffc2e4221 in main ()
A debugging session is active.

以下が関連するのかも.

追記(2016/10/12)

とりあえず libtalloc2 と libtevent0 を以下のように downgrade したら直った.

追記(2016/10/13)

この BUG 対策でsamba 2:4.4.6+dfsg-2がリリースされ,問題点が修正された様子.patch は https://anonscm.debian.org/cgit/pkg-samba/samba.git/commit/?id=9a72dc156a10627edf301365c5110d5c13768f2c

2016/10/05 03:41 / タイ王国バンコク スワンナプーム空港メモ

Related articles

2016/09/06 10:28 / Xorg on sid, gdm3 が起動しない

しばらく再起動していなかったのだが,諸事情により再起動すると,Xが起動しないという Debian GNU/Linux sid (unstable) に良くあるいつものパタン.

以下のような環境で,まず Xorg が起動しない.

/var/log/messages によると以下のループ.

Sep  5 10:16:23 hoge gdm-launch-environment]: AccountsService: Could not get current seat: No data available
Sep  5 10:16:23 hoge /usr/lib/gdm3/gdm-wayland-session[5493]: Unable to register display with display manager
Sep  5 10:16:23 hoge gdm3: Child process -5493 was already dead.
Sep  5 10:16:23 hoge gdm3: Child process 5489 was already dead.
Sep  5 10:16:23 hoge gdm3: Unable to kill session worker process

/var/lib/gdm3/.local/share/xorg/Xorg.0.log によると nvidia の driver が見つからなくて EE で落ちている.最近 CRON-APT で横着して upgrade していたのだが何かの拍子に xserver-xorg-video-nvidia が抜けてしまったらしい.ということで入れる.

次は Xorg も /usr/lib/gdm3/gdm-x-session も起動しているが gnome-shell が起動しない(ログイン画面が出ず真っ黒のまま)./var/log/messages によると以下のようにまた nvidia まわりでコケている.

Sep  5 10:16:52 hoge gnome-session[9184]: modprobe: ERROR: could not insert 'nvidia_current_modeset': Operation not permitted
Sep  5 10:16:52 hoge gnome-session[9184]: modprobe: ERROR: ../libkmod/libkmod-module.c:977 command_do() Error running install command for nvidia_modeset
Sep  5 10:16:52 hoge gnome-session[9184]: modprobe: ERROR: could not insert 'nvidia_modeset': Operation not permitted
Sep  5 10:16:52 hoge gnome-session[9184]: gnome-session-binary[9184]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9210]: modprobe: ERROR: could not insert 'nvidia_current_modeset': Operation not permitted
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9210]: modprobe: ERROR: ../libkmod/libkmod-module.c:977 command_do() Error running install command for nvidia_modeset
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9210]: modprobe: ERROR: could not insert 'nvidia_modeset': Operation not permitted
Sep  5 10:16:52 hoge kernel: [ 1059.936725] gnome-shell[9210]: segfault at 14 ip 00007faf5bd4a817 sp 00007fff6e0c7a80 error 4 in libmutter.so.0.0.0[7faf5bcfb000+127000]
Sep  5 10:16:52 hoge gnome-session[9184]: gnome-session-binary[9184]: WARNING: Application 'org.gnome.Shell.desktop' killed by signal 11
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9221]: modprobe: ERROR: could not insert 'nvidia_current_modeset': Operation not permitted
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9221]: modprobe: ERROR: ../libkmod/libkmod-module.c:977 command_do() Error running install command for nvidia_modeset
Sep  5 10:16:52 hoge org.gnome.Shell.desktop[9221]: modprobe: ERROR: could not insert 'nvidia_modeset': Operation not permitted
Sep  5 10:16:52 hoge kernel: [ 1060.010282] gnome-shell[9221]: segfault at 14 ip 00007f08d9038817 sp 00007ffd8e2648a0 error 4 in libmutter.so.0.0.0[7f08d8fe9000+127000]
Sep  5 10:16:52 hoge gnome-session[9184]: gnome-session-binary[9184]: WARNING: Application 'org.gnome.Shell.desktop' killed by signal 11
Sep  5 10:16:52 hoge gnome-session[9184]: gnome-session-binary[9184]: WARNING: App 'org.gnome.Shell.desktop' respawning too quickly
Sep  5 10:16:52 hoge gnome-session[9184]: Unable to init server: Could not connect: Connection refused
Sep  5 10:16:52 hoge gnome-session-f[9231]: Cannot open display:
Sep  5 10:16:52 hoge gnome-session-binary[9184]: Entering running state
Sep  5 10:16:53 hoge gdm3: GdmDisplay: display lasted 2.595077 seconds

どうやら modprobe nvidia_modeset の権限がなくてコケている様子.ということで,/etc/modules に nvidia-current-modeset およびついでに nvidia-current-uvm を追加して解決.

Related articles

2016/08/08 09:55 / namazu2 2.0.21-15 @ Debian GNU/Linux sid (trying to overwrite '/usr/share/man/man1/mknmz.1.gz', which is also in package namazu2-index-tools 2.0.21-15)

以下のように mknmz (の man) が namazu2 と namazu2-index-tools の両方に含まれていて,upgrade できない.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833335に bug report もされている.

Unpacking namazu2 (2.0.21-15) over (2.0.21-12) ...
dpkg: error processing archive /var/cache/apt/archives/namazu2_2.0.21-15_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/mknmz.1.gz', which is also in package namazu2-index-tools 2.0.21-15
Processing triggers for man-db (2.7.5-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/namazu2_2.0.21-15_amd64.deb

たしかに apt-get source namazu2 して fakeroot -f debian/rules binary すると mknmz.1.gz が namazu2 にも namazu2-index-tools にも含まれる.詳細は見ていないが,以下で直るっぽい.

--- debian/rules        2016-08-02 16:03:17.000000000 +0900
+++ debian/rules.new    2016-08-08 10:35:16.237076456 +0900
@@ -83,7 +83,7 @@
        dh_installemacsen --priority=50

 override_dh_installman:
-       dh_installman man/mknmz.1 man/namazu.1
+       dh_installman man/namazu.1

 override_dh_link:
        -rm -rf $(CURDIR)/debian/namazu2-index-tools/usr/share/doc/namazu2-index-tools

追記(2016/08/22)

おそらく2.0.21-18 (その前に -16, -17 もあったが)で直っている気配.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833335はそのままfixedにならないまま残っているようですが.

2016/08/03 14:34 / iowait monitoring by MRTG

File server (RAID5 w/LUKS) の iowait がなんだかひどいので,MRTG で monitoringしようとして悩む.

OID (object identifier) は .1.3.6.1.4.1.2021.11 付近の以下を monitoring.

mrtg.cfg は http://net-snmp.sourceforge.net/tutorial/tutorial-5/mrtg/ にある通りに書けば良いらしい.なお,Debian GNU/Linux の場合の UCD-SNMP-MIB.txt の PATH は /usr/share/snmp/mibs/UCD-SNMP-MIB.txt で,これは libsnmp-base package に含まれている.ちなみに LoadMIBs に複数の MIB file を記載するには comma (,) 区切りで書く

ここで問題なのはMaxBytesで,上記URLの例ではMaxBytes[...]: 100のようになっているが,これだと ssCpuRawIdle がうまく測れない(もともと iowait を monitor しようという企画なのだが...).

ssCpuRawIdle の仕様をいろいろあたってみたのだが,/usr/share/snmp/mibs/UCD-SNMP-MIB.txt によると以下のとおり.

ssCpuRawIdle OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of 'ticks' (typically 1/100s) spent
         idle.

         On a multi-processor system, the 'ssCpuRaw*'
         counters are cumulative over all CPUs, so their
         sum will typically be N*100 (for N processors)."
    ::= { systemStats 53 }

つまり MaxBytes が 100 だと invalid な数値だとして .rrd file (←私の環境ではRRDを利用している)にそもそも値が保存されない様子.ということで,monitor 対象の計算機毎に個別に設定してやる必要がある.当然ここでの CPU の数は論理プロセッサの数(コア数ではなく).たぶん上記 DESCRIPTION のとおり他の ssCpuRaw* についても同様だが,Idle は常に最大値付近の値をとるので,この問題がより顕在化しやすい.

Related articles

2016/07/22 10:09 / MediaWiki on Debian/GNU Linux jessie

ふと aptitude を見てみると MediaWiki (1:1.19.20+dfsg-2.3) が Obsolete and Locally Created Packages に分類されていた.どうやら jessie から削除された模様

調べてみるとEarly termination of MediaWiki security supportとのことで,当初からjessieから削除予定だった模様(1.19 のセキュリティサポートがjessieの次のstretchのリリースの前,というか既に終了した模様).

ということで,MediaWiki 1.27 を自前でインストールする(sid の package を持ってくることも考えたが php5 ではなく php 依存するらしく,混乱しそうなので断念).

1.19 では日本語検索のためにBruteSearchを導入していたのであるが,同ページの情報によると1.23.xで動作しないとのことで,導入を見送る.

BruteSearch のかわりにElasticsearchを導入.Install は https://www.mediawiki.org/wiki/Extension:CirrusSearch参照.設定(index生成)等はhttps://phabricator.wikimedia.org/diffusion/ECIR/browse/master/README参照.

別途 elasticsearch (java で動く deamon)を導入する必要があるが,これは Debian package でインストールする.ただし jessie で提供される 1.0.3 だと,検索してみても

An error has occurred while searching: We could not complete your search due to a temporary problem. Please try again later.

などと表示されるだけで検索できない.backports から 1.6.2+dfsg-1~bpo8+1 を install すれば (jessie でも)ちゃんと動く.

Related articles

2016/07/21 16:08 / チャット・メッセンジャーアプリ

なんだかいろいろあってわけがわからない.

2016/07/15 12:01 / CacheFiles BUG (Linux 4.6.x)

Since 4.5.7 is the last release of 4.5 series, I tried to update my server to 4.6.4. However, the following disturbs my upgrading to 4.6.4.
BUG: unable to handle kernel NULL pointer dereference at 0000000000000098
IP: [<ffffffff8127343f>] cachefiles_mark_object_inactive+0x4f/0xa0
PGD 0
Oops: 0000 [#1] SMP
Modules linked in: dm_crypt dm_mod algif_skcipher af_alg rpcsec_gss_krb5 overlay squashfs ext4 crc16 jbd2 mbcache loop cpufreq_powersave cpufreq_userspace cpufreq_conservative cpufreq_ondemand cpufreq_stats binfmt_misc nfsd btrfs xor raid6_pq sg sr_mod cdrom sd_mod intel_rapl x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm irqbypass crct10dif_pclmul crct10dif_common crc32_pclmul ghash_clmulni_intel sha256_ssse3 sha256_generic snd_hda_codec_hdmi drbg ansi_cprng hid_generic uas usbhid snd_hda_codec_realtek usb_storage snd_hda_codec_generic hid snd_hda_intel aesni_intel snd_hda_codec aes_x86_64 iTCO_wdt snd_hda_core ablk_helper iTCO_vendor_support snd_pcm ahci cryptd snd_timer libahci lrw nvidiafb evdev snd gf128mul libata vgastate soundcore glue_helper lpc_ich mei_me scsi_mod pcspkr acpi_cpufreq serio_raw i2c_i801 mfd_core mei shpchp tpm_tis rtc_cmos tpm button processor md_mod fbcon bitblit fbcon_rotate fbcon_ccw fbcon_ud fbcon_cw softcursor tileblit lm78 hwmon_vid f71882fg i5k_amb coretemp msr nvidia(PO) drm agpgart fuse autofs4 crc32c_intel xhci_pci ehci_pci xhci_hcd ehci_hcd usbcore usb_common
CPU: 2 PID: 926 Comm: kworker/u16:4 Tainted: P           O    4.6.4-myn-01+ #95
Hardware name: OEM something
Workqueue: fscache_object fscache_object_work_func
task: ffff88042c02f2c0 ti: ffff880425fa4000 task.ti: ffff880425fa4000
RIP: 0010:[<ffffffff8127343f>]  [<ffffffff8127343f>] cachefiles_mark_object_inactive+0x4f/0xa0
RSP: 0018:ffff880425fa7d90  EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff88042ac14400 RCX: 0000000000000034
RDX: ffff88043f7ceb10 RSI: ffff8803c219f390 RDI: ffff88043f7ceb08
RBP: ffff8803c219f280 R08: 0000000000000000 R09: 00000000000000ec
R10: 0000000000000000 R11: 0000000000000000 R12: ffff88042ca2f000
R13: ffff88042ac14400 R14: 00000000ffffffff R15: 00000000ffffb96f
FS:  0000000000000000(0000) GS:ffff88043f480000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000098 CR3: 0000000001c06000 CR4: 00000000000406e0
Stack:
 ffff8803c219f280 ffff88042ac14400 ffffffff81271c75 ffff8803c219f280
 ffff880418c4c140 ffff8803bf985a50 ffffffff8120a74a ffff8803c219f310
 ffffffff81827580 ffff8803c219f280 000000000000006d ffffffff8120aae9
Call Trace:
 [<ffffffff81271c75>] ? cachefiles_drop_object+0xd5/0x180
 [<ffffffff8120a74a>] ? fscache_drop_object+0xda/0x260
 [<ffffffff8120aae9>] ? fscache_object_work_func+0xf9/0x460
 [<ffffffff8106e925>] ? process_one_work+0x135/0x3c0
 [<ffffffff8106ec0d>] ? worker_thread+0x5d/0x470
 [<ffffffff8106ebb0>] ? process_one_work+0x3c0/0x3c0
 [<ffffffff81073e2a>] ? kthread+0xca/0xe0
 [<ffffffff81603402>] ? ret_from_fork+0x22/0x40
 [<ffffffff81073d60>] ? kthread_create_on_node+0x170/0x170
Code: 11 09 00 48 8d bd 10 01 00 00 f0 80 a5 10 01 00 00 fe c6 83 20 01 00 00 00 31 f6 e8 7c b7 e1 ff 48 8b 85 f8 00 00 00 48 8b 40 30 <48> 8b 80 98 00 00 00 f0 48 01 83 30 01 00 00 b8 01 00 00 00 f0
RIP  [<ffffffff8127343f>] cachefiles_mark_object_inactive+0x4f/0xa0
 RSP <ffff880425fa7d90>
CR2: 0000000000000098
---[ end trace 0b204b8eafde5e55 ]---

Function cachefiles_mark_object_inactive is introduced at CacheFiles: Provide read-and-reset release counters for cachefilesd. So when I revert this commit, my linux 4.6.4 system works fine.

P.S.(2016/7/16)

My system is Debian GNU/Linux stable (jessie). The version of cachefilesd is 0.10.5-1. I may need to update this to the latest one, 0.10.9, which includes Suspend/resume culling based on recently released file/block counts.

P.S.(2016/8/23)

Altough it seems that this patch (4.7.2 version) might be related to this issue, I still got the following Oops.

BUG: unable to handle kernel NULL pointer dereference at 0000000000000098
IP: [<ffffffffa0bc386c>] cachefiles_mark_object_inactive+0x1c/0xa0 [cachefiles]
PGD 0
Oops: 0000 [#1] SMP
Modules linked in: rpcsec_gss_krb5 overlay squashfs ext4 crc16 jbd2 mbcache dm_crypt loop algif_skcipher af_alg dm_mod cpufreq_powersave cpufreq_userspace cpufreq_conservative cpufreq_ondemand cpufreq_stats binfmt_misc nfsd btrfs xor raid6_pq sg sr_mod cdrom sd_mod intel_rapl x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm irqbypass crct10dif_pclmul crct10dif_common crc32_pclmul ghash_clmulni_intel drbg snd_hda_codec_hdmi ansi_cprng hid_generic usbhid uas snd_hda_codec_realtek snd_hda_codec_generic hid usb_storage snd_hda_intel aesni_intel snd_hda_codec aes_x86_64 snd_hda_core ablk_helper cryptd snd_pcm iTCO_wdt lrw ahci iTCO_vendor_support snd_timer gf128mul nvidiafb libahci evdev snd glue_helper libata vgastate soundcore pcspkr serio_raw mei_me i2c_i801 scsi_mod acpi_cpufreq lpc_ich mei shpchp mfd_core rtc_cmos tpm_tis tpm button processor cachefiles fbcon bitblit fbcon_rotate fbcon_ccw fbcon_ud fbcon_cw softcursor tileblit md_mod lm78 hwmon_vid f71882fg i5k_amb coretemp msr nvidia(PO) drm agpgart fuse autofs4 crc32c_intel xhci_pci ehci_pci xhci_hcd ehci_hcd usbcore usb_common
CPU: 2 PID: 938 Comm: kworker/u16:6 Tainted: P           O    4.7.2-myn-01+ #101
Hardware name: OEM something
Workqueue: fscache_object fscache_object_work_func
task: ffff88042c6a0f00 ti: ffff880426668000 task.ti: ffff880426668000
RIP: 0010:[<ffffffffa0bc386c>]  [<ffffffffa0bc386c>] cachefiles_mark_object_inactive+0x1c/0xa0 [cachefiles]
RSP: 0018:ffff88042666bd88  EFLAGS: 00010202
RAX: 0000000000000000 RBX: ffff88042a9b2200 RCX: 0000000200000000
RDX: ffff88042c6a0f00 RSI: ffff8803e8d122c0 RDI: ffff88042a9b2320
RBP: ffff8803e8d122c0 R08: 0000000000000000 R09: 00000000000000ec
R10: 0000000000000000 R11: 0000000000000000 R12: ffff88042ca08f00
R13: ffff88042a9b2200 R14: 00000000ffffffff R15: 00000000ffff0e67
FS:  0000000000000000(0000) GS:ffff88043f480000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000098 CR3: 0000000001c06000 CR4: 00000000000406e0
Stack:
 ffff8803e8d122c0 ffff88042a9b2200 ffff88042ca08f00 ffffffffa0bc20d5
 ffff8803e8d122c0 ffff88041a336780 ffff8800ae5fb230 ffffffff81213e7a
 ffff8803e8d12350 ffffffff8182d900 ffff8803e8d122c0 000000000000006d
Call Trace:
 [<ffffffffa0bc20d5>] ? cachefiles_drop_object+0xd5/0x180 [cachefiles]
 [<ffffffff81213e7a>] ? fscache_drop_object+0xda/0x260
 [<ffffffff81214219>] ? fscache_object_work_func+0xf9/0x460
 [<ffffffff810738f5>] ? process_one_work+0x135/0x3c0
 [<ffffffff81073bdd>] ? worker_thread+0x5d/0x470
 [<ffffffff81073b80>] ? process_one_work+0x3c0/0x3c0
 [<ffffffff81078dda>] ? kthread+0xca/0xe0
 [<ffffffff8161063f>] ? ret_from_fork+0x1f/0x40
 [<ffffffff81078d10>] ? kthread_create_on_node+0x170/0x170
Code: 8d fe ff ff 66 66 2e 0f 1f 84 00 00 00 00 00 41 54 55 48 89 f5 53 48 8b 86 f8 00 00 00 48 89 fb 48 8d bf 20 01 00 00 48 8b 40 30 <4c> 8b a0 98 00 00 00 e8 88 ca a4 e0 48 8d bd 28 01 00 00 48 8d
RIP  [<ffffffffa0bc386c>] cachefiles_mark_object_inactive+0x1c/0xa0 [cachefiles]
 RSP <ffff88042666bd88>
CR2: 0000000000000098
---[ end trace b0980ebb0851d8ca ]---

P.S.(2016/11/2)

This bug is finally fixed by https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/fs/cachefiles?id=a818101d7b92e76db2f9a597e4830734767473b9. This patch is included in Linux 4.8.4 as 336f2e1ef8d52fac6420aff8d50191fc81c0c4ec .

2016/07/02 23:54 / RAID5 resync が起動時に始まってしまい,いつまでたっても起動しない

Root file system を RAID5 (software RAID w/Intel Rapid Storage Technology)にしていて,再起動時にうまく clean な状態で再起動できず verify flag が立ってしまうと,initramfs の時点で resync が開始されてしまい,いつまで経ってもまともに起動しないという話.ファイルサーバなのでさくっと起動してもらわないと困る.

なんとかする方法は以下.

これでひとまずは起動するはず.起動した後は

# echo 5000 > /sys/block/md126/md/sync_speed_max
# echo idle > /sys/block/md126/md/sync_action
# ionice -c 3 -p (md126_resync's pid)

とかをしてじっくり resync する.resync の状況は /proc/mdstat で

md126 : active raid5 sda[3] sdb[2] sdc[1] sdd[0]
      8351277056 blocks super external:/md127/0 level 5, 128k chunk, algorithm 0 [4/4] [UUUU]
      [============>........]  resync = 63.3% (1763918288/2783759232) finish=3019.9min speed=5627K/sec

の様に確認できる.以下,試行錯誤の経緯.

Root file system は RAID5 かつ btrfs なのだが,当初は fsck.btrfs の箇所でなかなか終わらない状況だった.fastboot で fsck を skip しても,起動のあらゆるステップで時間がかかってしまい

INFO: task something blocked for more than 120 seconds.

的な warning が連発する.ということで resync を止めざるを得ないということになった.幸い initrd の backup があったので,適当な directory を掘ってそこで,

zcat /somewhere/initrd.img-4.X.X-something-amd64 | cpio -i

して眺めた感じ,boot option break の存在と

[scripts/local-top/mdadm] の最後の箇所
maybe_break post-mdadm

exit 0

というように RAID の認識が終わったところで,break=post-mdadm で break point を設定できることがわかったので,それでなんとか対処することにした.

RAID の resync を中断する方法は man mdadm 等で調査.mdadm 自体 initrd に含まれているが,直接/sys/block/md126/md/sync_actionにアクセスする方が簡便.ちなみにfrozenだと中断され,idle だと中断されはするがすぐに再開される.

あとはbtrfsのfsckがskipされて気持ち悪いが,

% sudo btrfs scrub start -r -c3 /

で scrub をして,しばらくの後に

% sudo btrfs scrub status /
scrub status for XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        scrub started at XXXX and finished after 11487 seconds
        total bytes scrubbed: 2.96TiB with 0 errors

のように 0 errors を確認しておく.

Related articles

2016/06/15 11:10 / aptitude でインストールを指示した package をリストする

新たにクリーンインストールする時とかのために.

aptitude search '?and(~i !~M)'

追記(2017/06/19)

インストールを指示したもので Upgradable なものは以下でリスト.

aptitude search '?and(~U !~M)'

2016/06/13 23:22 / Let's Note CF-AX2 ACアダプタ故障

Let's Note CF-AX2を未だに使っているのであるが,付属の(専用)ACアダプタを使っているのに「指定以外のACアダプターが使用されています」というメッセージが表示され始めた.

エラー検出のお知らせ 指定以外のACアダプターが使用されています 指定のACアダプターをご使用ください。 指定以外のACアダプターを使用すると、正しく動作しない場合があります。 ※指定のACアダプターを使用時にこのお知らせが表示された場合は、ACアダプターがパソコン本体に正しく奥まで挿し込まれていない可能性があります。 一度パソコン本体よりACアダプターを抜いてから奥まで挿し直してください。
エラー検出のお知らせ
指定以外のACアダプターが使用されています
指定のACアダプターをご使用ください。
指定以外のACアダプターを使用すると、正しく動作しない場合があります。
※指定のACアダプターを使用時にこのお知らせが表示された場合は、ACアダプターがパソコン本体に正しく奥まで挿し込まれていない可能性があります。 一度パソコン本体よりACアダプターを抜いてから奥まで挿し直してください。
エラー検出のお知らせ

指定以外のACアダプターが使用されています

指定のACアダプターをご使用ください。

指定以外のACアダプターを使用すると、正しく動作しない場合があります。

※指定のACアダプターを使用時にこのお知らせが表示された場合は、ACアダプターがパソコン本体に正しく奥まで挿し込まれていない可能性があります。
一度パソコン本体よりACアダプターを抜いてから奥まで挿し直してください。

まあ普通に使えていたので放置していたのであるが,ついに充電できなくなってしまったので仕方なくACアダプタを購入することとした.

調べてみると専用アダプタでなければ上手く使えないような細工がされているらしく,互換アダプタは見つけられず,仕方なく純正を購入(CF-AA62J2CJS).

というか,そもそもACアダプタ側の故障か,本体電源端子部分の故障か,問題の切り分けができていない状態でかなり不安だったが,購入したACアダプタで無事動作.

この状態で故障したと思っていたACアダプタを接続してみると同じようなメッセージが表示されはするものの充電はできた.どちらにせよ壊れているのだろうけど,本体バッテリー残量が極端に不足していると(この壊れたっぽい)ACアダプタは動作しない模様.

ちなみにテスタで測ってみたところ,新しく購入したACアダプタは15V強(定格16V)の出力があるが,この故障したらしいACアダプタはほぼ0Vで,10mVまでのところで電圧が微妙に変動している(専用のものかどうかを識別するための信号が電源側に漏れて来ている?).

Related articles

2016/05/30 14:21 / Apache 2.4.10 Satisfy Any

IPアドレスが特定のものであれば,認証なしでコンテンツを見せて,そうでなければベーシック認証を行うという設定(BASIC認証とIPアドレス制限の併用?)について,以下のように Satisfy Any を用いる設定が各所で紹介されているが,

Satisfy Any

Order Deny,Allow
Deny from all
Allow from XXX.XXX.XXX.XXX
Allow from XXX.XXX.XXX.YYY

AuthType Basic
AuthName "Local Informatin for Hoge"
AuthUserFile "/var/www/hoge/.htpasswd"
require valid-user

これは Apache 2.2 までの書き方で,Apache 2.4 では上記とは異なる認証機構が導入されていて,古い書き方も一応動くが,新しい記述に改めたほうが良い.上記の場合は以下のようになる.

AuthType Basic
AuthName "Local Informatin for Hoge"
AuthUserFile "/var/www/hoge/.htpasswd"

<RequireAny>
Require ip XXX.XXX.XXX.XXX
Require ip XXX.XXX.XXX.YYY
Require valid-user
</RequireAny>

詳細は

などを参照.ちなみに当方の環境(apache2 2.4.10-10+deb8u4)ではSatisfy Anyの設定で一応は動作しているものの,BASIC認証時にPOSTメソッドがタイムアウトを起こすという現象が発生していた.

ちなみに2013/06/03 13:25 / apache 2.2 → 2.4の記事にも微妙に書いてあるが,すっかり失念していた.

追記(2016/06/13)

「BASIC認証時にPOSTメソッドがタイムアウトを起こす」はどうやら解決していなかった.具体的には Debian GNU/Linux jessie の MediaWiki なのだが,ファイルのアップロードはできるが記事の更新ができない(Show preview/changes も).

2016/05/21 17:00 / tex-common 6.05 on Debian GNU/Linux

aptitude upgrade で tex-common が以下で上がってくれないというか configure されない.

% sudo /var/lib/dpkg/info/tex-common.postinst configure
Running mktexlsr. This may take some time... done.
Running updmap-sys. This may take some time... done.
Running mktexlsr /var/lib/texmf ... done.
Building format(s) --all.
       This may take some time...
fmtutil failed. Output has been stored in
/tmp/fmtutil.R5YhUP3w
Please include this file if you report a bug.
[/tmp/fmtutil.R5YhUP3w]
fmtutil [INFO]: /var/lib/texmf/web2c/pdftex/latex.fmt installed.
fmtutil [ERROR]: running `pdftex -ini   -jobname=mptopdf -progname=context -translate-file=cp227.tcx mptopdf.tex </dev/null' return status 1
fmtutil [ERROR]: return error due to options --strict
fmtutil [INFO]: Disabled formats: 3
fmtutil [INFO]: Successfully rebuilt formats: 18
fmtutil [INFO]: Failed to build: 1 (pdftex/mptopdf)
fmtutil [INFO]: Total formats: 22
fmtutil [INFO]: exiting with status 1

fmtutil の箇所で止まっているらしく,とりあえずの解決策は https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824889 にあるように /var/lib/dpkg/info/tex-common.postinst で fmtutil の option から --string を消すというもの.

追記(2016/05/21)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824853 にあるように,mptopdf の箇所でコケているのはsyst-tex.mkiiがtexlive-latex-baseからcontext (ConTeXt) packageに移動した(?)のが原因で,そもそもmptopdf自体contextに移すべき,とう話ならしい.

ということで context package を install しても解決する.

追記(2016/05/24)

texlive-latex-base (2016.20160523-1)で修正された模様で,syst-tex.mkii が texlive-latex-base に含まれるように修正された模様.

Related articles

2016/05/21 16:30 / octave 4.0.2-1+b2 w/libgl2ps0 1.3.8-2 on Debian GNU/Linux

aptitude upgrade で octave が以下で上がってくれない.

/usr/lib/x86_64-linux-gnu/octave/4.0.2/exec/x86_64-pc-linux-gnu/octave-gui: error while loading shared libraries: libgl2ps.so.0: cannot open shared object file: No such file or directory

付近のバグレポートにあるとおりなぜか libgl2ps.so.0 が libgl2ps.so.1 になってしまった(libgl2ps0 1.3.8-2)のが原因.libgl2ps0 1.3.8-3 で直るらしいがまだ download できないようなので,とりあえずlibgl2ps0_1.3.8-1.3_amd64.debをdpkg -iして解決

2016/05/03 05:48 / WordPress Twenty Sixteen wp_nav_menu

Twenty Twelve とか Twenty Thirteen ぐらいだと,Menu を手動で作成していない状態だと,自動で Menu を生成してくれたような気がするのだが,Twenty Sixteen だと上手くいかない.結局うまく行かないという話なのだが,以下調べた内容.

Twenty Twelve だと wp_nav_menu() location が1箇所,Twenty Sixteenは2箇所.

[wp-content/themes/twentytwelve/functions.php]
register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) );

[wp-content/themes/twentysixteen/functions.php]
register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'twentysixteen' ),
    'social'  => __( 'Social Links Menu', 'twentysixteen' ),
) );

適当に以下をすれば(子テーマの function.php に書いておく) Twenty Sixteen の wp_nav_menu() location を1つ(primary)のみにできて,wp-admin/nav-menus.php を開いた時でメニューが存在しない場合に$one_theme_location_no_menus がアサートされて,自動でメニューのテンプレートが作成される(保存はされない).でもこれは比較的どうでもいい.

function remove_social() {
    unregister_nav_menu( 'social' );
}
add_action( 'after_setup_theme', 'remove_social' , 20);

header.phpから呼ばれるwp_nav_menu() (nav-menu-template.php) でメニューを表示するのだが,メニューを作っていない状態だとfallback_cbのwp_page_menu() (post-template.php)が呼び出される.これがメニューを自動で作る部分で,以下のファイルを開いてみたりすると確認できる(wp_nav_menu を wp_page_menu に置き換えたりしてみる).

[test.php]
<?php
require_once( dirname(__FILE__) . '/wp-load.php' );
wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) );

メニューを作っていない状態だとやはり Twenty Sixteen ではメニューが表示されない.これは header.php で if ( has_nav_menu( 'primary' ) ) という条件付で wp_nav_menu() が呼び出されるから.ということで,header.php を修正して無理やり wp_nav_menu() を呼び出してみると,メニューは自動で生成されるが,手動で作成したメニューと体裁が異なる(右側に縦積みになってしまう).

手動で作ったメニュー(通常のメニュー)の場合<div class="menu-menu-1-container"> として生成されるが,wp_page_menu() が生成するのは<div class="nav-menu"> で,これで見た目が違ってくるらしい.あまりthemeをいじりたくないので,仕方なく手動でメニューを生成することにして,項目が多くなってきたらなにがしかpluginを導入するしかなさげ.

2016/05/02 11:01 / WordPress Link Manager

いつも Link Manager を Enable するやりかたを忘れるので備忘メモ.

WordPress (現在 Version 4.5.1) だが,以前は Link Manager なるものが存在してこれでリンク一覧を管理できたのだが,Version 3.5 以降はこの機能が Off になっている.

で,これを Enable する(だけの)Plug-in が Link Manager.中身は以下のみ.

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

ちなみに link list を sort するには「評価 (rating)」を使うと比較的自由に並び替えができる(なにで sort するかは Widgets の設定の箇所で行う).ただし rating の値は 0 から 10 まで.

2016/04/01 11:44 / lftp 4.7.0

lftpだが,4.6.4から4.7.0でいろいろ変わったらしくmirrorに躓く.

まず以下のようにEPSVコマンド(RFC 2428)を発行してしまい,私が使っているサーバでは以下のような感じでコケる.

---> EPSV
<--- 501 EPSV: Not owner
---- Switching passive mode off
---> LIST -a
---> ABOR
---- Closing aborted data socket
---- Closing control socket

ftp:prefer-epsv trueがdefaultになったらしく,EPSVではなくPASVを使うようにするには,以下の設定が必要.

set ftp:prefer-epsv false

あと,どうもmirrorコマンドを実行した際に一部ファイルでタイムスタンプが「適切に」取れない気配があって,最新版になっているのに無駄にファイルを転送してしまう.サーバとの相性もあるのかもしれないが.これはMLSDコマンドをdefaultで使うようになったかららしい.これを元の挙動,つまり4.6.4のdefaultに戻すには以下の設定をする.

set ftp:use-mlsd false

これでMLSDのかわりに,LIST -aして各ファイル/ディレクトリに対してMDTMでタイムスタンプを取得するようになる.もちろんmirror速度は落ちる.MLSDもMDTMもRFC 3659のコマンドなのだが,なにやら実装がいろいろあるらしい.

以上,該当するchangelogは以下のような感じになっている.

[/usr/share/doc/lftp/changelog.gz]
Version 4.7.0 - 2016-03-28
(snip)
* ftp: prefer EPSV by default.
* ftp: enable MLSD by default (when supported).
(snip)

Related articles

2016/04/01 09:21 / Android Studio (Java) on Debian GNU/Linux sid

Android Studioの Install メモ.基本的には android-studio-ide-141.2456560-linux.zip を拾ってきて,bin/studio.sh を起動するだけなのだが,JDKがopenjdk-8-jdkだと Oracle の JDK にした方が Performance が出る云々言われる.ということで,Oracle JDK の install からスタート.

https://wiki.debian.org/JavaPackageを参照しつつ Oracle JDK の .deb file を作成,dpkg -i する.jdk-8u77-linux-x64.tar.gz を事前にダウンロードしておいて,以下をする.

% sudo aptitude install java-package
% make-jpkg jdk-8u77-linux-x64.tar.gz
% sudo dpkg -i oracle-java8-jdk_8u77_amd64.deb

このままだと Android Studio が Oracle JDK を見付けてくれないので,.zshrc 等に以下を書いておく.

export JAVA_HOME=/usr/lib/jvm/oracle-java8-jdk-amd64

2016/03/31 10:24 / snmpd (5.7.3+dfsg-1.1), adduser: Please enter a username matching the regular expression configured (Debian-snmp user)

snmpdのupgradeで以下のように失敗する.

Setting up snmpd (5.7.3+dfsg-1.1) ...
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
dpkg: error processing package snmpd (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 snmpd
E: Sub-process /usr/bin/dpkg returned an error code (1)
Setting up snmpd (5.7.3+dfsg-1.1) ...
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
dpkg: error processing package snmpd (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 snmpd

sudo /var/lib/dpkg/info/snmpd.postinst configure で追ってみると,実際のadduser commandは以下のようなもので,これ自体には一見問題なさげなのだが,

adduser --quiet --system --group --home /var/lib/snmp --disabled-password --disabled-login --shell /bin/false Debian-snmp

/etc/adduser.conf にある NAME_REGEX という変数で username に対して制限をかけているらしく Default では NAME_REGEX="^[a-z][-a-z0-9_]*\$" となっている模様.ということで Debian-snmp はこれにマッチしないのでコケている様子.同様に Debian- が prefix になっている username としては,手元の計算機では既に Debian-gdm というのがあって,/var/lib/dpkg/info/gdm3.postinst ではadduserを--force-badname option 付きで呼んでいる.ということで/var/lib/dpkg/info/snmpd.postinstのadduserの箇所に--force-badname optionを追加して解決.

ちなみに,これより前のバージョンでは snmp の pseudo user は snmp.

なおこの問題は既にhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819531のように解決されているらしく,5.7.3+dfsg-1.2 で直る見込み(使っているミラーサイトにはまだ来ていない).

2016/03/19 11:26 / JPEG Exif 変更操作

写真はすべてGoogle Photosに集約しているのであるが,デジカメで撮った写真をDrag and DropでGoogle Photosに突っ込んだら,思っていた日付の箇所に写真が現れず悩む.アップロード直後その写真をAlbumに追加して,様子を見てみたら,(デジカメの)日付が1年ずれていたことが判明.ということでGoogle Photos上の該当ファイルを削除して,JPEGのExifを操作して再アップロード.

以前は知り合いからもらったPerl ScriptでExifをいじったりしていたのだが,発掘が面倒だったので jhead というコマンドを使うことにした(Debian package も存在する).

いろいろ試行錯誤をしたが,1年のずれを修正するのは至って簡単で,以下のとおり修正後の年を指定すれば良いだけ(他の情報はそのまま保持される).man によると「Date is specified as: yyyy:mm:dd, yyyy:mm, or yyyy」とのことなので,日付を修正するだけならこれが一番シンプル.

[Single file]
% jhead -ds 2016 DSC01448.JPG
[Bulk mode]
% jhead -ds 2016 DSC*.JPG

以下は -ts という Exif に保持されている『時刻』を変更するオプションを使おうとして試行錯誤した際の情報.以下のようにダンプした Exif 情報を sed で修正して -ts で突っ込む,というようなことも可能,というぐらい.

% jhead DSC01448.JPG
File name    : DSC01448.JPG
File size    : 3427630 bytes
File date    : 2015:03:18 13:07:24
Camera make  : SONY
Camera model : DSLR-A200
Date/Time    : 2015:03:18 13:07:24
Resolution   : 3872 x 2592
Flash used   : Yes (auto)
Focal length : 18.0mm  (35mm equivalent: 27mm)
Exposure time: 0.013 s  (1/80)
Aperture     : f/5.6
ISO equiv.   : 250
Whitebalance : Auto
Metering Mode: pattern
Exposure     : program (auto)
JPEG Quality : 95
% jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/'
2015:03:18-13:07:24
% jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'
2016:03:18-13:07:24
% jhead -ts`jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'` DSC01448.JPG
Modified: DSC01448.JPG
% jhead DSC01448.JPG | grep ^Date
Date/Time    : 2016:03:18 13:07:24
% for i in *.JPG ; do
  j=`jhead $i | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'`
  jhead -ts$j $i
done

2016/03/13 01:15 / Samba+LDAP 設定メモ

いつも忘れるのでメモ.LDAP は動いていて,Samba の認証を LDAP で行う,というだけの話.ただし Samba は LDAP サーバとは別のホストで動かしていて,Windows 認証のための設定(smbldap-tools)は LDAP と同じホストで適切に動いているという前提.手順ザックリ以下.

Related articles

2016/03/03 00:06 / お名前.com 共用サーバーSD で SSH 接続

いつのまにかお名前.comレンタルサーバー共用サーバーSDでSSH接続が可能になっていた.https://www.onamae-server.com/news/150616.htmlによると2015/06/16から提供していたらしい.コントロールパネルで有効化できるのだが,公開鍵認証(authorized_keys)が使えずちょっと辛い.気づいた点は以下のとおり.

公開鍵認証が使えない.そもそも mkdir ~/.ssh/ できない.これ深刻.

ログインに失敗すると接続元IP Addressに対して一定時間接続制限がかけられる模様(公開鍵認証が使えないため ssh-agent も使えず,かなりつらい)

ssh -x しないと接続時に以下のように timeout 待ちが発生する

/usr/openwin/bin/xauth:  timeout in locking authority file /export/(snip)/.Xauthority

追記(2016/05/24)

password を毎回打たなくて良いように,以下のように sshpass を利用すれば,かなり幸せ.Makefile や mirror 用 script に password を含めることになるが.

sshpass -pPASSWORD ssh -x YYYY@gmoserver.jp@XXXX.gmoserver.jp

ちなみに上記,XXXX.gmoserver.jp というホスト名で,YYYY@gmoserver.jp というユーザー名を想定.

Related articles

2016/03/02 23:23 / phpMyAdmin から Adminer に乗り換え

phpMyAdmin 4.5.5 を頑張って ftp しか繋がらない共用サーバにインストールしたのだが,インストールした翌日に 4.5.5.1 がリリースされた.癪だったので Adminer に乗り換えることにした.

というか,実際のところは ftp しか繋がらないサーバに,大量のファイルからなる phpMyAdmin を転送するのが面倒で (lftp で mirror するので,バッチ処理ではあるが),1つのファイルだけの Adminer に惹かれて乗り換えた.

Mysql のみ対応,英語インターフェースのみ,でよければ https://www.adminer.org/latest-mysql-en.php を Download して適当な directory に index.php として配置するだけでいい(ただし念の為 Basic 認証をかけておいた).

Related articles

2016/02/25 11:14 / php 7.0.3-9 (cli), Cannot load Zend OPcache - it was already loaded

Debian GNU/Linux sid でタイミング的には私の環境では php7.0-cli 7.0.3-3 -> 7.0.3-5 の upgrade 付近なのだが,それ以降

% php -v
Cannot load Zend OPcache - it was already loaded
PHP 7.0.3-9 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

みたいな感じで Cannot load Zend OPcache - it was already loaded という Warning が出るようになった.かつ cron から起動される /usr/lib/php/sessionclean でも同じ Warning を吐くので,いちいち root 宛にメールが届く.

原因は何らかの拍子に以下のように /etc/php/7.0/cli/conf.d/に 2つの opcache.ini が存在するようになってしまったため.

% ls -l /etc/php/7.0/cli/conf.d/*opcache*
lrwxrwxrwx 1 root root 35 Feb 18 13:13 /etc/php/7.0/cli/conf.d/10-opcache.ini -> /etc/php/mods-available/opcache.ini
lrwxrwxrwx 1 root root 35 Feb  9 10:12 /etc/php/7.0/cli/conf.d/20-opcache.ini -> /etc/php/mods-available/opcache.ini

/var/lib/dpkg/info/php7.0-cli.postinst は以下のように 20-opcache.ini を削除するように細工されているようだが,うまく削除できなかった模様.20-opcache.ini を削除すれば解決する.

[/var/lib/dpkg/info/php7.0-cli.postinst]
    if [ -n "$2" ] && dpkg --compare-versions "$2" lt "7.0.3-2~"; then
        rm -f /etc/php/7.0/cli/conf.d/20-opcache.ini;
    fi

もしくは以下で /etc/php/7.0/cli/conf.d/ を作りなおす.

# rm -rf /etc/php/7.0/cli/conf.d/
# mkdir /etc/php/7.0/cli/conf.d/
# /var/lib/dpkg/info/php7.0-cli.postinst configure

2016/02/20 22:59 / overlayfs over btrfs (rm -r; Invalid argument)

As follows, I've tested directory removal in overlayfs over several filesystems, such as ext4, btrfs, and xfs. It seems that it is better not to use btrfs as an upper (and work; *1) directory of overlayfs.

*1: overlayfs: workdir and upperdir must reside under the same mount

% cat <<EOF > /tmp/test.sh
cd /tmp/test/
rm -rf *
mkdir -p lower/dir
mkdir -p upper/
mkdir -p work/
mkdir -p overlay/
touch lower/dir/a
touch lower/dir/b
touch lower/dir/c
EOF

% cat <<EOF > /tmp/test2.sh
rm -f /tmp/test.img
fallocate -l 100M /tmp/test.img
if ! \$1 /tmp/test.img > /dev/null 2>&1 ; then
  echo failed
  exit
fi
mkdir -p /tmp/test
sudo mount /tmp/test.img /tmp/test
sudo chmod 777 /tmp/test
sh /tmp/test.sh
sudo mount overlayfs -t overlay -o lowerdir=/tmp/test/lower,upperdir=/tmp/test/upper,workdir=/tmp/test/work  /tmp/test/overlay
rm -r /tmp/test/overlay/dir
ls -Rla /tmp/test/upper
sudo umount /tmp/test/overlay
sudo umount /tmp/test
EOF
% sh /tmp/test2.sh /sbin/mkfs.ext4
/tmp/test/upper:
total 2
drwxr-xr-x 2 myn     users 1024 Feb 20 23:25 .
drwxrwxrwx 6 root    root  1024 Feb 20 23:25 ..
c--------- 1 myn     users 0, 0 Feb 20 23:25 dir
% sh /tmp/test2.sh /sbin/mkfs.xfs
/tmp/test/upper:
total 0
drwxr-xr-x 2 myn     users   17 Feb 20 23:25 .
drwxrwxrwx 6 root    root    59 Feb 20 23:25 ..
c--------- 1 myn     users 0, 0 Feb 20 23:25 dir
% sh /tmp/test2.sh /bin/mkfs.btrfs
rm: cannot remove '/tmp/test/overlay/dir': Invalid argument
/tmp/test/upper:
total 16
drwxr-xr-x 1 myn     users  6 Feb 20 23:25 .
drwxrwxrwx 1 root    root  42 Feb 20 23:25 ..
drwxr-xr-x 1 myn     users  6 Feb 20 23:25 dir

/tmp/test/upper/dir:
total 0
drwxr-xr-x 1 myn     users    6 Feb 20 23:25 .
drwxr-xr-x 1 myn     users    6 Feb 20 23:25 ..
c--------- 1 myn     users 0, 0 Feb 20 23:25 a
c--------- 1 myn     users 0, 0 Feb 20 23:25 b
c--------- 1 myn     users 0, 0 Feb 20 23:25 c

In the cases of ext4 and xfs, the whiteout directory can be successfully generated. But btrfs fails.

I traced the overlayfs's behavior using debugfs (Documentation/dynamic-debug-howto.txt) as follows.

% sudo sh -c 'echo -n "module overlay +p" > /sys/kernel/debug/dynamic_debug/control'
% sh /tmp/test2.sh /sbin/mkfs.ext4 > /dev/null
% dmesg
[208788.770416] mkdir(work/work, 040000) = 0
[208788.773640] mkdir(work/#ffff8800bb3c5618, 040000) = 0
[208788.773648] rename2(work/#ffff8800bb3c5618, upper/dir, 0x0)
[208788.773664] whiteout(work/#ffff88007579a9d8) = 0
[208788.773666] rename2(work/#ffff88007579a9d8, dir/b, 0x0)
[208788.773693] whiteout(work/#ffff8800bb3b3798) = 0
[208788.773695] rename2(work/#ffff8800bb3b3798, dir/a, 0x0)
[208788.773712] whiteout(work/#ffff880094ef2cd8) = 0
[208788.773713] rename2(work/#ffff880094ef2cd8, dir/c, 0x0)
[208788.773753] mkdir(work/#ffff8800bb3c5618, 040755) = 0
[208788.773765] setxattr(work/#ffff8800bb3c5618, "trusted.overlay.opaque", "y", 0x0) = 0
[208788.773770] rename2(work/#ffff8800bb3c5618, upper/dir, 0x2)
[208788.773780] unlink(#ffff8800bb3c5618/b) = 0
[208788.773789] unlink(#ffff8800bb3c5618/a) = 0
[208788.773794] unlink(#ffff8800bb3c5618/c) = 0
[208788.773821] rmdir(work/#ffff8800bb3c5618) = 0
[208788.773828] whiteout(work/#ffff8800bb3c5618) = 0
[208788.773829] rename2(work/#ffff8800bb3c5618, upper/dir, 0x2)
[208788.773837] rmdir(work/#ffff8800bb3c5618) = 0
% sh /tmp/test2.sh /bin/mkfs.btrfs > /dev/null 2>&1
% dmesg
[208822.019517] mkdir(work/work, 040000) = 0
[208822.022430] mkdir(work/#ffff88009d74b858, 040000) = 0
[208822.022439] rename2(work/#ffff88009d74b858, upper/dir, 0x0)
[208822.022520] whiteout(work/#ffff88009d68e558) = 0
[208822.022523] rename2(work/#ffff88009d68e558, dir/a, 0x0)
[208822.022564] whiteout(work/#ffff8800aea6e9d8) = 0
[208822.022565] rename2(work/#ffff8800aea6e9d8, dir/b, 0x0)
[208822.022592] whiteout(work/#ffff8800877e83d8) = 0
[208822.022593] rename2(work/#ffff8800877e83d8, dir/c, 0x0)
[208822.022634] mkdir(work/#ffff88009d74b858, 040755) = 0
[208822.022640] setxattr(work/#ffff88009d74b858, "trusted.overlay.opaque", "y", 0x0) = 0
[208822.022643] rename2(work/#ffff88009d74b858, upper/dir, 0x2)
[208822.022657] ...rename2(work/#ffff88009d74b858, upper/dir, ...) = -22
[208822.022669] rmdir(work/#ffff88009d74b858) = 0

rename2's 0x2 means RENAME_EXCHANGE (1 << 1) (see include/uapi/linux/fs.h) and its return value -22 means EINVAL (see include/uapi/asm-generic/errno-base.h). According to Documentation/filesystems/vfs.txt, it seems that btrfs does not support RENAME_EXCHANGE.

  rename2: this has an additional flags argument compared to rename.
        If no flags are supported by the filesystem then this method
        need not be implemented.  If some flags are supported then the
        filesystem must return -EINVAL for any unsupported or unknown
        flags.  Currently the following flags are implemented:
        (1) RENAME_NOREPLACE: this flag indicates that if the target
        of the rename exists the rename should fail with -EEXIST
        instead of replacing the target.  The VFS already checks for
        existence, so for local filesystems the RENAME_NOREPLACE
        implementation is equivalent to plain rename.
        (2) RENAME_EXCHANGE: exchange source and target.  Both must
        exist; this is checked by the VFS.  Unlike plain rename,
        source and target may be of different type.

Note that I tested the above on linux-image-4.3.0-1-amd64 4.3.5-1 Debian package and my Linux 4.4.2 build.

According to Btrfs Wiki, this issue is not claimed yet.

Implement new RENAME_* modes

Not claimed — no patches yet — Not in kernel yet

There are new modes of rename syscall.

  * RENAME_EXCHANGE
  * RENAME_WHITEOUT

P.S.(2016/2/24)

This issue seems to be already reported to LKML and CentOS/RedHat BTS as follows.

P.S.(2016/4/1)

It seems that a patch for RENAME_EXCHANGE implementation is available as follows. It might be merged into Linux 4.7 according to http://www.spinics.net/lists/linux-btrfs/msg53206.html.

2016/02/05 13:55 / WordPress RSS Aggregator がうまく Feed を受け取ってくれない (Not well-formed (invalid token) at line 1, column 1)

Feedを受け取る側で以下のようなエラーが出てFeedできないという話(受け取る側は業者で,こちらはFeedする側).

Failed to fetch the RSS feed. Error: This XML document is invalid,
likely due to invalid characters. XML error: Not well-formed
(invalid token) at line 1, column 1

Feed XML は Validator をとおっていて,かつ手元の simplepie で XML をパースしてみても問題がない.

そもそも line 1, column 1 でコケているので,受け取る側の問題なのだが,対応してくれないので,こちらで対応することにした.

原因はサーバ側が deflate (gzip) されたデータを正しくハンドリングできないこと.つまり,

[S->C]
GET /?feed=rss2 HTTP/1.1
Host: client.example.org
User-Agent: SimplePie/1.3.1 (Feed Parser; http://simplepie.org; Allow like Gecko) Build/2015XXXXXXXXXX
Accept-Encoding: x-gzip,gzip,deflate
Accept: application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1
Connection: Close

のリクエストに対して

[C->S]
HTTP/1.1 200 OK
Date: Fri, 05 Feb 2016 XX:XX:XX GMT
Server: Apache
Set-Cookie: qtrans_front_language=ja; expires=Sat, 04-Feb-2017 XX:XX:XX GMT; Max-Age=31536000; path=/
Last-Modified: Mon, 01 Feb 2016 XX:XX:XX GMT
ETag: (snip)
Link: <http://client.example.org/?rest_route=/>; rel="https://api.w.org/"
Content-Length: 8000
Connection: close
Content-Type: application/rss+xml; charset=UTF-8

XMLデータ

のように Accept-Encoding: x-gzip,gzip,deflate を無視して RAW データ(といってもテキスト)を返す場合は OK だが,

[C->S]
HTTP/1.1 200 OK
Date: Fri, 05 Feb 2016 XX:XX:XX GMT
Server: Apache
Set-Cookie: qtrans_front_language=ja; expires=Sat, 04-Feb-2017 XX:XX:XX GMT; Max-Age=31536000; path=/
Last-Modified: Mon, 01 Feb 2016 XX:XX:XX GMT
ETag: (snip)
Link: <http://client.example.org/?rest_route=/>; rel="https://api.w.org/"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 2000
Connection: close
Content-Type: application/rss+xml; charset=UTF-8

圧縮されたXMLデータ

のように律儀に(というか apache のデフォルト) Content-Encoding: gzip で返すとコケる.クライアントというか Feed する側にて,この特定のサーバに対して,以下のように圧縮しないように設定すれば解決./?feed=rss2 が Feed URL なので,以下のように RewriteCond/RewriteRule で対処(RewriteEngine Onとかはこの上付近にあることを想定).

RewriteCond %{QUERY_STRING} feed=rss2
RewriteCond %{REMOTE_HOST} XXX.XXX.XXX.XXX
RewriteRule ^ - [E=no-gzip]

先方のサーバの設定が不明だが,Google で検索してもこの問題(の上記のような解決策)は出てこないようなので,かなりのコーナーケースな模様.

追記(2016/04/19)

WordPress の SimplePie の(サーバ側)該当箇所は wp-includes/SimplePie/File.php の以下の付近,だろうと思われる.

if (extension_loaded('zlib'))
{
         $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
}
// snip
case 'gzip':
case 'x-gzip':
        $decoder = new SimplePie_gzdecode($this->body);
        if (!$decoder->parse())
        {
                $this->error = 'Unable to decode HTTP "gzip" stream';
                $this->success = false;
        }
        else
        {
                $this->body = $decoder->data;
        }
        break;
// snip

$decoder->parse()前後でコケているのだと思われるが (上流のエラーハンドリングまでは今回追わず),上のような問題が発生するような状況では if (extension_loaded('zlib')) の if 文まるごと削除してしまってもよいのかもしれない.

2016/01/31 01:31 / NotePC CPU Fan 交換 (Let's Note CF-AX2)

先日のCPU Fanが壊れた件,だましだまし使っていたが,なかなかつらいものがあるので,CPU Fanを交換した.Note PC 自体は Let's Note CF-AX2 で,その CPU Fan は台湾AVC社のMODEL BAAA0505R5UPC01.適当に入手して交換.以下備忘.

入手した CF-AX2 用 CPU Fan (AVC BAAA0505R5UPC01)

images/0061.jpg images/0062.jpg images/0063.jpg

CF-AX2 を開ける

images/0064.jpg
まず通風孔(通風口)のカバーを外す.

images/0065.jpg images/0068.jpg
バッテリー(取り外し可能な方)を外す.ここにSIMのスロットがある(使ってない).

CF-AX2 をさらに開ける

images/0069.jpg images/0114.jpg
PC底部のネジを外して,蓋を取る(ヒンジ近くの2箇所だけ異なるサイズのネジ).取り外したバッテリー部分にシールがあって,この時点で VOID になってしまう(分解したことの印が付く).

images/0070.jpg images/0081.jpg
CPU Fan 付近.ネジは裏側からのようなので,メインボードを剥がす必要がある.メインボード左手はネジ2つ.

images/0071.jpg images/0072.jpg
内蔵バッテリー.まず取り出したい.

images/0073.jpg images/0084.jpg images/0085.jpg
機内モードスイッチとバッテリーを引っ掛けるもの.取れるので注意.

images/0086.jpg
電源スイッチは取れてなくなったりしなさげ.

images/0074.jpg images/0075.jpg images/0076.jpg
謎の黒いテープ.仕方がないので剥がす.

images/0077.jpg images/0078.jpg
この辺もややこしい.

images/0079.jpg
下の方,バッテリーコネクタとそこそこ幅のあるリボンケーブル.

images/0080.jpg
mSSD.簡単に交換出来そう.

images/0082.jpg images/0083.jpg
冷却部分.

CF-AX2 メインボードを取り出す

images/0087.jpg
メインボード左側2箇所のネジ外した.

images/0088.jpg images/0089.jpg images/0113.jpg
メインボード,バッテリーコネクタの部分のネジ外した.ここだけネジが長い.

images/0090.jpg
その少し右にもメインボードを固定しているネジがある.

images/0091.jpg images/0092.jpg
内蔵バッテリー付近.

images/0093.jpg images/0094.jpg images/0098.jpg
CPU Fan の左側.無線モジュールがある.

images/0095.jpg images/0097.jpg
右手側.こちらにも無線モジュールがある.

images/0096.jpg
その部分をよく見ると,画像ヒンジの左付近にメインボードを固定しているネジがある.ケーブルに隠れていて見えにくい.

CF-AX2 メインボードから CPU Fan を取り出す

images/0099.jpg
メインボードをとりはずしたところ.

images/0102.jpg
その裏側.

images/0103.jpg
images/0104.jpg
メインボードが収まっていた部分.太いリボンケーブルの右付近に少し粘着質の部分があってメインボードをとりはずす時かなりビクビクしながら取り外す...

images/0106.jpg
CPU Fan.メインボードとの接続ネジ(裏側)をとったところ.FANのうえのところにあるシールは剥がす必要がない(一度剥がしてしまった).

images/0107.jpg
ひっくり返してFANをとったところ.FANは2つのネジとちょっとした突起でFAN枠に固定されている.この枠だが(とうか熱を伝える導体も...),簡単に曲げたりできるので,突起の部分は簡単に取れる.

元に戻す

逆の手順で新しいCPU Fanを装着して,元に戻すだけ.なお,小さめのドライバー(写真に写り込んでいるもの)と指だけで基本なんとかなった.あとエアダスターで適宜ほこりを飛ばす.

Related articles

2016/01/18 10:22 / google-chrome の表示言語設定

ブラウザの言語に応じてページが切り替わる(英語・日本語)場合があって,普段ブラウザを英語で使っているつもりなのだが,たとえば Google Forms 等は別の言語設定を見て言語を切り替えているらしい.

というのは,設定(Settings)→詳細設定を表示(Show advanced settings...)→言語(Languages)の箇所は英語を一番上に設定しているのだが(かつ Google のアカウントの設定も英語),なぜか日本語で表示される.表示言語が「日本語」になっているのが問題らしい.Windows の場合は同じ設定の箇所に「Google Chrome をこの言語で表示(Display Google Chrome in this language)」という設定があるのだが(https://support.google.com/chrome/answer/173424),Linux の場合は存在しない.

いろいろ調べた結果,LANG=en_US.UTF-8 もしくは LANGUAGE=en で google-chrome を起動しないとダメならしい.

Related articles

2015/12/27 00:15 / NotePC CPU Fan 故障

数日前にCPU Fanが異音を発していたような気がしたが,それが収まって,どうやら本格的にFanが壊れたらしい.微妙に回転はしているものの,冷却性能は殆どなさげ.ちなみに Let's Note.

OS は Win10Pro (Win8Pro からアップグレード)なのだが,「電源オプション」で高パフォーマンス(最小のプロセッサの状態: 100%; つまり周波数を最大値で固定)にしても,頑張らせると 800MHz ぐらいまで落ちてしまい,仕事にならない(あれこれ4時間ぐらい格闘したがどうにもならないと悟った).

ということで,Core i7 の CPU が手元にある状態で,軽い作業は VMWare 上の端末+Emacs,重い作業は ssh で入った先,Chrome (←こいつが重い) は RDP で接続した先(もしくは Android 携帯)で,という謎の環境に...

なんというか,やはり持ち歩くということもあっていつかは壊れるということを想定すると,安めのものにするか(頻繁に買い換える),高いやつを選ぶ場合でもできるだけ駆動部が少ないものにしたほうが良いような気がしてきた.そもそも VMWare (Linux) 上の Emacs と LaTeX,Host (Windows) 上の MS Office と Chrome,を使うぐらいなので,8G メモリ搭載を最低条件にして安いものを選択しても良いようなきがしつつある.

Related articles

2015/12/25 23:34 / 香港メモ

Related articles

2015/12/14 23:06 / ruby-gsl w/GSL-2.1 問題

Debian GNU/Linux unstable (sid) 環境では GSL が 2.1 になっており,軒並みに GSL に依存する package (inkscape や bogofilter-bdb)がこれに移行している.

がしかし,ruby-gsl が GSL 1.16 に依存したままでなかなか移行できない.かつ上流も動く気配なし.https://github.com/SciRuby/rb-gsl/issues/25.testing も GSL 2.1 に移行しているようなので,これはまずいような.

追記(2016/11/18)

Mar 2016 付近で GSL 2.1 対応になっている模様

2015/12/05 10:34 / WARNING: EDNS query returned status FORMERR - retry with '+noedns'

VMWare で運用している Debian/GNU Linux sid で dig が正常な応答を返さなくなった.

% dig

; <<>> DiG 9.9.5-12+b1-Debian <<>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 46970
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; WARNING: EDNS query returned status FORMERR - retry with '+noedns'

;; QUESTION SECTION:
;.                              IN      NS

;; Query time: 1 msec
;; SERVER: 192.168.40.2#53(192.168.40.2)
;; WHEN: Sat Dec 05 10:34:16 JST 2015
;; MSG SIZE  rcvd: 17

どうやら dig +noedns で query しないとだめならしい.もしくは ~/.digrc+noedns を書いておけば良いらしい.

EDNS RFC6891 Extension Mechanisms for DNS (EDNS(0)) なわけで,どうやら VMWare (の NAT モードのネットワーク)が独自に持っている DNS サーバ(基本的には上流に転送するのみ)は EDNS0 をサポートしていないのか?...と思ったが,上流の DNS (ホテルの DNS サーバ)に問い合わせても同じだったので,上流のブロードバンドルータかなにかがEDNS0をサポートしていないということらしい.

参考:

2015/12/04 21:00 / Skipping ssh-dss key /home/myn/.ssh/id_dsa for not in PubkeyAcceptedKeyTypes

sid で ~/.ssh/id_dsa を用いた passphrase での login ができなくなった.ssh -v で調べてみると

debug1: Skipping ssh-dss key /home/myn/.ssh/id_dsa for not in PubkeyAcceptedKeyTypes

とのこと.とのことで,~/.ssh/config に

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

とかを書いておけば id_dsa による共通鍵認証が利用できるようになる./usr/share/doc/openssh-client/changelog.Debian.gz によれば

openssh (1:7.1p1-1) unstable; urgency=medium

  * New upstream release (http://www.openssh.com/txt/release-7.0, closes:
    #785190):
    - Support for the legacy SSH version 1 protocol is disabled by default
      at compile time.
    - Support for the 1024-bit diffie-hellman-group1-sha1 key exchange is
      disabled by default at run-time.  It may be re-enabled using the
      instructions at http://www.openssh.com/legacy.html
    - Support for ssh-dss, ssh-dss-cert-* host and user keys is disabled by
      default at run-time.  These may be re-enabled using the instructions
      at http://www.openssh.com/legacy.html
(snip)
<pre>

<p><a href="http://www.openssh.com/legacy.html">http://www.openssh.com/legacy.html</a>によると

<pre>
OpenSSH 7.0 and greater similarly disables the ssh-dss (DSA) public key algorithm. It too is weak and we recommend against its use. It can be re-enabled using the HostkeyAlgorithms configuration option:

とのこと.どうやら鍵ペアを作りなおす時期になったらしい.確かに10年以上同じ鍵を使っている.

2015/12/01 12:45 / MediaWiki で SVG

MediaWiki で SVG (scalable vector graphics) を利用するには https://www.mediawiki.org/wiki/Manual:Image_administration#SVG を参照しつつ設定すれば良いわけだが,Preview 作成に ImageMagick (convert) を利用するらしくその部分で少しはまる.

具体的には inkscape が install されていると convert コマンドは svg から png の生成に inkscape を利用するのだが,svg のファイル名に ! (exclamation mark)が含まれているとうまく変換できない.strace で追った感じだと,以下のように !_ だと解釈して inkscape を起動するのだが,そのファイルが見つからなくてタイムアウトまで何度も inkscape を起動する.

% strace -f convert 't!s.svg' t.png
[pid 20817] execve("/bin/sh", ["sh", "-c", "\"inkscape\" \"t_s.svg\" --export-ep"...], [/* 48 vars */]) = 0

これの何が問題かというと,svg を MediaWiki に upload した後にそのファイルの差替を行うと,古いファイルが images/thumb/archive/f/fa/201512010XXXXX!hoge.svg のようなファイル名で保存され,ファイル名に!が含まれてしまいうまく変換できない.

解決策は$wgSVGConverterにinkscapeを直接指定してしまえば良いらしい.DefaultだとImageMagick (convert).

[/etc/mediawiki/LocalSettings.php]
$wgFileExtensions[] = 'svg';
$wgAllowTitlesInSVG = true;
$wgSVGConverter = 'inkscape';

ちなみにImageMagickをpurgeしてしまうという手もあるが,これだと日本語がうまく変換できない.なお,手元の imagemagick の version は8:6.8.9.9-5.

Related articles

2015/11/01 22:21 / gitk Error in startup script: bad menu entry index "ビュー編集..."

Debian GNU/Linux sid で最近 gitk が以下のような感じで起動してくれない.一瞬ウィンドウが表示されるが,すぐにコケる.

% gitk .
Error in startup script: bad menu entry index "ビュー編集..."
    while executing
".bar.view entryconf [mca "Edit view..."] -state normal"
    invoked from within
"if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
    # create a view for the files/dirs specified on the command line
    se..."
    (file "/usr/bin/gitk" line 12442)

「ビュー編集」ということなので,メニューのLANG関連なような気がするのだが,詳細は追えず.ちなみに

% gitk

であれば正常に起動する(とはいえ特定のファイルに関する履歴のみ追いたい場合もある).

Workaround は

% LANG=en_US.UTF-8 gitk .

で起動するか,UTF-8 以外の文字コードを取り扱っている場合は

% LC_MESSAGES=C gitk .

でメニューの部分のLANGのみを(英語に)設定する.

2015/10/29 12:44 / nfsroot で / に対して fscache (fsc) を有効にする

FS-Cache や cachefilesd 等に関しては他のページを参照のこと.ここでは / 自体が NFS な環境でそれを有効にすることを考える.

http://askubuntu.com/questions/23767/using-the-fsc-mount-option-with-nfsroot-kernel-parameter-to-allow-fs-cache に情報があるが,これだとうまく動かない.というのは /sbin/mount.nfs/usr/lib/klibc/bin/ に copy するだけだと /sbin/mount.nfs が依存するライブラリが initrd に含まれない.

私の環境(Debian GNU/Linux)では以下のようにした.

% sudo vi /usr/share/initramfs-tools/scripts/nfs
(nfs_mount_root_impl()の箇所)
-       nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
+       mount.nfs ${NFSROOT} ${rootmnt} -o nolock ${roflag} ${NFSOPTS}

nfsmount は klibc に含まれるものだが,これが fsc option を解釈してくれない.ということで mount.nfs を使うように書き換える.引数の順も変更になるので注意.これは askubuntu.comと同じ.

% sudo vi /usr/share/initramfs-tools/hooks/klibc
(以下をファイル末に追加)
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/mount.nfs /bin/mount.nfs

実際は /usr/share/initramfs-tools/hooks/klibc ではなく,新しいファイルを用意したほうが良いような気もするが,面倒だったので copy_exec で依存するライブラリも含めて initrd に含まれるようになる.

あとは,update-initramfs -u -k 3.XX.XX-2015XXXX+ で initrd 再生成,tftp に配置,pxelinux.cfg/default 等 PXE での起動 option の nfsroot=10.0.0.XX:/export/diskless,rw みたいな箇所を nfsroot=10.0.0.XX:/export/diskless,rw,fsc として fsc option を追加,という感じ.で,再起動.

% cat /proc/fs/nfsfs/volumes
NV SERVER   PORT DEV     FSID              FSC
v4 0a08000a  801 0:16    0:0               yes
v4 0a08000a  801 0:48    0:0               yes
v4 0a080002  801 0:49    0:0               yes

とかで全ての NFS mount point で cache が有効になっていることが確認できる.

nfsroot なので,kernel の option に注意が必要.多分以下ぐらいが必要.

CONFIG_FSCACHE=y
CONFIG_CACHEFILES=y
CONFIG_NFS_FSCACHE=y

追記(2017/5/18)

http://askubuntu.com/questions/23767/using-the-fsc-mount-option-with-nfsroot-kernel-parameter-to-allow-fs-cachecopy_execを利用して/sbin/mount.nfsをinitrdに含める手法が(追加)紹介されている.

Related articles

2015/10/28 13:34 / slapd[XXXX]: <= bdb_equality_candidates: (uid) not indexed

slapd が以下のように syslog になにやら大量に吐くので,対処する.http://d.hatena.ne.jp/labunix/20130421にある手法で対処.

slapd[6000]: <= bdb_equality_candidates: (cn) not indexed
slapd[6000]: <= bdb_equality_candidates: (gidNumber) not indexed
slapd[6000]: <= bdb_equality_candidates: (member) not indexed
slapd[6000]: <= bdb_equality_candidates: (memberUid) not indexed
slapd[6000]: <= bdb_equality_candidates: (ou) not indexed
slapd[6000]: <= bdb_equality_candidates: (sambaGroupType) not indexed
slapd[6000]: <= bdb_equality_candidates: (sambaSIDList) not indexed
slapd[6000]: <= bdb_equality_candidates: (sambaSID) not indexed
slapd[6000]: <= bdb_equality_candidates: (uid) not indexed
slapd[6000]: <= bdb_equality_candidates: (uidNumber) not indexed

具体的には ldapmodify で ldif を読ませる.

http://blog.remibergsma.com/2012/03/05/howto-solve-openldap-bdb_equality_candidates-errors/ にあるように /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif を直接修正する手もあるが,Debian GNU/Linux の場合 /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif の冒頭に以下のように書かれていて,ldapmodify を使うことになっている.

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

Related articles

2015/10/14 14:06 / Xorg on sid, gdm3 が起動しない

しばらく再起動していなかったのだが,なんだか挙動がおかしくなってきたので再起動すると,Xが起動しないという Debian GNU/Linux sid (unstable) に良くあるいつものパタン.

以下のような環境で,まず gdm3 が起動しない.

/var/log/messages によると /usr/lib/gdm3/gdm-x-session がこけて gnome-shell の起動に失敗している.これがひたすら繰り返されて画面とログが結構大変なことになっていた.

以下死ぬところの様子.

Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE) Please also check the log file at "/var/lib/gdm3/.local/share/xorg/Xorg.0.log" for additional information.
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE)
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE) Server terminated with error (1). Closing log file.
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: Unable to run X server
Oct 14 13:47:34 hoge gdm3: Child process -22290 was already dead.
Oct 14 13:47:34 hoge gdm3: Child process 22287 was already dead.
Oct 14 13:47:34 hoge gdm3: Unable to kill session worker process
Oct 14 13:47:34 hoge gnome-session[22300]: gnome-session[22300]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
Oct 14 13:47:34 hoge gnome-session[22300]: (gnome-shell:22306): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to initialize the Clutter backend
Oct 14 13:47:34 hoge gnome-session[22300]: (gnome-shell:22306): mutter-ERROR **: Unable to initialize Clutter.
Oct 14 13:47:34 hoge kernel: [ 1110.944017] traps: gnome-shell[22306] trap int3 ip:7f8679b9388b sp:7ffec7c23a50 error:0
Oct 14 13:47:34 hoge gnome-session[22300]: gnome-session[22300]: WARNING: Application 'gnome-shell-wayland.desktop' killed by signal 5
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-wayland-session[22297]: Activating service name='ca.desrt.dconf'
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-wayland-session[22297]: Successfully activated service 'ca.desrt.dconf'
Oct 14 13:47:34 hoge gdm3: GdmDisplay: display lasted 0.105362 seconds
Oct 14 13:47:34 hoge gdm3: Child process -22297 was already dead.
Oct 14 13:47:34 hoge gdm3: Child process 22294 was already dead.
Oct 14 13:47:34 hoge gdm3: Unable to kill session worker process

最近は /var/log/Xorg.0.log ではなく(ユーザ毎に) /var/lib/gdm3/.local/share/xorg/Xorg.0.log にログが保存されるらしい.一般ユーザが startx したら ~/.local/share/xorg/Xorg.0.log にログが保存される.

% startx -- -verbose n -logverbose n
(n は適当に大きめの数)

上とかで verbose にログを吐かせて調べてみると /dev/dri/card0 が開けなくて死んでいるらしい.ちなみに GPU は NVIDIA.

% ls -arlt /dev/dri/card0
crw-rw----+ 1 root video 226, 0 Oct 14 14:02 /dev/dri/card0

chmod 666 等してもなぜかうまく行かなかったので sudo vigr で video group に Debian-gdm (gdm3を起動する pseudo user)を追加.これで gdm3 を restart したら,gdm3 が起動してくれた.

がしかし,ログインができない.ということでログインユーザも video group に追加.

あと,Windows 機上の VMWare で飼っている Debian GNU/Linux sid (unstable) は vmmouse (xserver-xorg-input-vmmouse)が動いてくれない.Xorg は起動するが,マウスが反応しない.

こちらもいろいろ試したがダメだったので,以下をして,通常の mouse driver で使うことにした.ただしこれだと Guest と Host をマウスで行ったり来たりする際に,マウスがかなりの頻度であらぬところに飛ぶ.

% sudo aptitude purge xserver-xorg-input-vmmouse

追記(2015/10/15)

xserver-xorg-input-vmmouse の件,sudo startx だと mouse が動くので,user で起動した場合と root で起動した場合との差分をとってみた.

- xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
- (EE) PreInit returned 2 for "ImPS/2 Generic Wheel Mouse"
- (II) VMWARE(0): VMMouseUnInit
- (II) UnloadModule: "vmmouse"
+ (II) VMWARE(0): vmmouse is available
+ (**) Option "Device" "/dev/input/event5"
+ (**) ImPS/2 Generic Wheel Mouse: ZAxisMapping: buttons 4 and 5
+ (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input10/event5"
+ (II) XINPUT: Adding extended input device "ImPS/2 Generic Wheel Mouse" (type: MOUSE, id 10)
+ (II) VMWARE(0): VMMOUSE DEVICE_INIT
+ (**) ImPS/2 Generic Wheel Mouse: (accel) keeping acceleration scheme 1
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration profile 0
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration factor: 2.000
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration threshold: 4
+ (II) VMWARE(0): VMMOUSE DEVICE_ON
+ (**) Option "Device" "/dev/input/event5"
+ (II) VMWARE(0): vmmouse enabled

xf86EnableIOPorts がこけて(IOPL)いるようなのだが,Google に聞いてもあまり情報がなく(ソースコードを見なければわからない?),この付近で断念.

追記(2015/10/15)

ソースコードを追ってみた.

% apt-get source xserver-xorg-input-vmmouse
% cd xserver-xorg-input-vmmouse-13.0.99
% vi src/vmmouse.c
(下にあるパッチ参照)
% fakeroot make -f debian/rules clean binary

上でつくった deb を dpkg -i すれば動いた.

--- a/src/vmmouse.c
+++ b/src/vmmouse.c
@@ -420,7 +420,7 @@ VMMousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
           xorgHWAccess = TRUE;
       else {
           rc = BadValue;
-          goto error;
+//        goto error;
       }
    }

この箇所

   if (!xorgHWAccess) {
      if (xf86EnableIO())
          xorgHWAccess = TRUE;
      else {
          rc = BadValue;
          goto error;
      }
   }

となっていて,xf86EnableIO() を叩くのだが,これがコケる模様.このxf86EnableIO()は http://lists.x.org/archives/xorg-devel/2012-May/030838.html で導入されたっぽいが,なくても大丈夫らしい.

この付近に関連するような気もするが,動いたのでとりあえず良しとする.

追記(2015/11/24)

xserver-xorg-input-vmmouse の件,xserver-xorg-input-vmmouse 1:13.1.0-1 でも同様.上記 patch で解決可能.

Related articles

2015/08/27 18:11 / Wanderlust SMTP Auth Fail

何かの拍子に Wanderlust でメールが送れなくなった.*Message* には

Invalid response: AUTH PLAIN <文字列>

とあって,送信している情報を受信情報と勘違いしているらしい.SMTP なので,Wanderlust というか FLIM でコケているわけだが,ということで該当箇所は smtp.el の中.

いろいろ試していると,たまに送れる場合もあって,どうやらサーバのレスポンスが若干悪いか,その付近の同期処理(そもそも実装されてる?)に問題があるらしい (それ以上は調べられず).

追記(2015/8/28)

これ,どうやら AUTH PLAIN を送る前にコケているような気がしてきた.サーバー側の問題なような気がするが,icedove 等を使うと送信できるので良くわからない.

Process SMTP connection broken by remote peer
EHLO smtp.example.org
250-mail1.example.org
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
421 4.7.0 mail1.example.org Error: too many errors
AUTH PLAIN <文字列>

追記(2015/8/28)

たまに送れるのは,smtp 側で load balancer が動いているらしく,smtp.example.org から mail1.example.org に送られる場合は OK で mail2.example.org の場合は NG という,なんとも感じ悪い状況.

追記(2015/8/28)

この手の STARTTLS を使った SMTP を手動で送るやり方を見つけたのでメモ.

% gnutls-cli --crlf --x509cafile /etc/ssl/certs/ca-certificates.crt --port 587 --starttls-proto=smtp smtp.example.org
Processed 180 CA certificate(s).
Resolving 'smtp.example.org'...
Connecting to 'XXX.XX.X.XXX:587'...
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
略
- Certificate[1] info:
略
- Status: The certificate is trusted.
- Description: (TLS1.2)-(RSA)-(AES-128-GCM)
- Session ID: 略
- Version: TLS1.2
- Key Exchange: RSA
- Cipher: AES-128-GCM
- MAC: AEAD
- Compression: NULL
- Options: safe renegotiation,
- Handshake was completed

- Simple Client Mode:

EHLO smtp.example.org
250-mail1.example.org
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN 略
235 2.7.0 Authentication successful
MAIL FROM:<myn@example.org>
250 2.1.0 Ok
RCPT TO:<myn@example.org>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
To: myn@example.org
From: myn@example.org
Subject: test

test

--myn

.
250 2.0.0 Ok: queued as 略
quit
221 2.0.0 Bye
- Peer has closed the GnuTLS connection

追記(2015/8/28)

ちなみに AUTH PLAIN の後の文字列は以下のようにユーザ名とパスワードから作る.

echo -n '\0username\0password' | base64
AHVzZXJuYW1lAHBhc3N3b3Jk

デコードするには base64 -d に pipe で送ればいい.

2015/08/20 09:48 / screen.xterm-256color

gnome-terminal 上で screen を使っているのだが,TERM が sid では screen.xterm-256color になる.jessie だと TERM は screen (たぶん).

sid には /usr/share/terminfo/s/screen.xterm-256color が存在するが,jessie には存在せず,ssh 等で jessie の計算機に入った際に困る.shell で C-p とか C-b すると表示が崩れる.C-r で incremental search しようとすると表示が酷く崩れる.

ということで,思い出しながら terminfo をいじることにする.

infocmpの出力は例えば以下.

sid% infocmp
#   Reconstructed via infocmp from file: /usr/share/terminfo/s/screen.xterm-256color
screen.xterm-256color|GNU Screen with xterm using 256 colors,
    am, bw, km, mc5i, mir, msgr, npc, xenl,
    colors#256, cols#80, it#8, lines#24, pairs#32767,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
    clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
    cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
    dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
    el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
    hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
    il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
    is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~, kEND=\E[1;2F,
    kHOM=\E[1;2H, kLFT=\E[1;2D, kRIT=\E[1;2C, kb2=\EOE,
    kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
    kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kent=\EOM, kf1=\EOP,
    kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
    kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
    kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
    kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
    kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
    kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
    kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
    kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
    kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS,
    kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
    kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
    kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
    kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
    kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
    kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
    kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
    kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, op=\E[39;49m,
    rc=\E8, rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmacs=\E(B,
    rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>,
    rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
    rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
    setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
    setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
    sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;m,
    sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
    smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
    smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
    u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd,

これをファイルか何かに出力して tic で compile すると ~/.terminfo/s/screen.xterm-256color に compile 済み terminfo が保存され,これは /usr/share/terminfo/ よりも優先的に読まれる.

ということで,sid にて以下で ~/.terminfo/s/screen.xterm-256color を生成 (手元の環境だと jessie でも ~ は同じ NFS なのでこれでOK).

sid% infocmp screen.xterm-256color | tic -

もしくは全ユーザ向けに対応する場合は,/usr/share/terminfo/s/screen.xterm-256color に置いてしまうか,以下で compile する.

sid% infocmp screen.xterm-256color > screen.xterm-256color.ti
jessie% sudo TERMINFO=/usr/share/terminfo tic screen.xterm-256color.ti

ちなみに screen.xterm-256color の大元の定義は ncurses source package の ncurses-6.0+20150810/misc/terminfo.src にあって,以下のような感じ.

screen.xterm-256color|GNU Screen with xterm using 256 colors,
        use=xterm+256setaf, use=screen.xterm-new,

Related articles

2015/08/11 17:09 / Wanderlust iso-2022-jp 半角カタカナ問題

半角カタカナは ISO-2022-JP (7bit) に含まれないので,半角カタカナを含むメールを

Content-Type: text/plain;charset=iso-2022-jp

で送られても困るという話.最近の大抵の環境では文字化けを起こさないが,手元の Wanderlust では化けてしまう.

http://qiita.com/kkimura/items/4cc94dff1c4df24fbdc8によると CP50220 (JISに対するMicrosoftによる拡張を含んだCP)だと思い込めばいいらしい.

cp5022x.el (cp50220, cp50221, cp50222, cp51932 が定義されている) を適当なところに置いて,

(require 'cp5022x)
(add-to-list 'mime-charset-coding-system-alist '(iso-2022-jp . cp50220))

を ~/.wl に記述しておけば文字化けが解消される.手元の環境では他の設定無しで,返信の際は自動的に UTF-8 になってくれる.

ちなみに今回遭遇した半角カタカナを iso-2022-jp で送るメールソフトは以下.

User-Agent: SquirrelMail/1.4.21

2015/08/08 16:24 / libstdc++6: Breaks: libboost-date-time1.55.0

Debian GNU/Linux sid で依存関係が混乱していて upgrade できない.どうやら libstdc++6 Breaks (破壊) libboost-date-time1.55.0 になっていて,libboost-date-time1.55.0 に依存するものに関して削除を提案される.手元では blender, libreoffice.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794774によると,iceweasel,gnome-shell, gnome-core, gdm も,とのこと.

そして,今回 libstdc++6 は 5.1.1-14 → 5.2.1-14 なのだが,5.2.1-14 に依存する upgradable package が upgrade できない.GCC 5 が Default になる,というのとも関連しているらしい.

追記(2015/8/11)

手元の aptitude では blenderinkscape がネックになっていて,libstdc++6 と新しい libstdc++6 に依存するものが upgrade できない.

libreoffice の libboost-date-time1.55.0 依存は 解消済.blender (2.74+dfsg0-4+b1) は upgrade の気配なし(boost 1.55 に依存のまま).inkscape は,

に依存しており,これらが GCC 5 版の

と conflict しており upgrade できない.

追記(2015/8/19)

inkscapeに関しては 0.91-5+b1 (+b1 というのは binary non-maintainer upload)で解決した模様.

追記(2015/8/19)

blender は消すことにした.

追記(2015/10/6)

現在私の環境では blendergimpがネックになっていてもろもろ依存で躓く状況.

追記(2015/10/23)

どうやら一旦 gimp,blender を抜いてしまって,再度 install すれば大丈夫らしい.あと手元の他の環境では,自前 package を含んだ依存関係で躓いていた模様.

2015/07/27 18:18 / Java Plugin (32bit, 64bit)

Web会議等でJavaがまだ必要な場合があって,JavaのPluginで混乱する.ポイントは以下.

2015/07/26 00:57 / シンガポールメモ

Related articles

2015/07/17 12:51 / nanaco クレジットチャージ

nanaco クレジットチャージを利用.登録や申込みに少し時間がかかるが,なんとか手続きをしてチャージ(Web から行う).

クレジットチャージすると,「センターお預り分」扱いになって,「残高確認」(or 現金チャージ)をすることによって(nanacoに)受け取る.nanaco の Web ページに書かれている文面どおりで,単に nanaco で支払いをするだけでは受け取りが行われない(実際に確認してみた).

ちなみこのログイン画面 だが,カード情報だけで(拾ったカードででも)ログインできてしまうので,ちょっと怖い...

あと,個人的にはパソリ(PaSoRi)を利用してクレジットチャージが (かなりお手軽に)できる Edy の方が好きかも.

Related articles

2015/07/16 10:17 / WordPress w/ Google Search Console (Webmaster Tools)

WordPress で運用しているサイトに Google Analytics および Google Search Consoleを導入した.なお,Google Search Consoleは以前はWebmaster Toolsという名称で知られていて,2015/5/21 にSearch Consoleへと名称変更をしたらしい

WordPress なので,もとからだいたいStructured Dataになっているわけだが,WordPress および Search Console の問題で,いくつか対応が必要.ちなみに使っているテーマは twentytwelve ベース.

追記(2015/7/20)

どうやらこの記事を書いたのと同じぐらいのタイミングで,Structured Data Testing Toolが上記に関して Error を出力しないようになった模様.

2015/07/15 15:59 / /etc/papersize

dvipdfmx の default の papersize が letter になってしまっていたので a4 に変更したい,という話.

以前は

% sudo dpkg-reconfigure libpaper1

で letter を選んで,それによって /etc/papersize に a4 が書き込まれて,かつ /etc/libpaper.d/texlive-base が起動され,tex 関連の paper size も a4 になったりしたのだが,/etc/libpaper.d/texlive-base の以下の部分だが,

[/etc/libpaper.d/texlive-base]
# If texlive-base is removed, just  do nothing.
test -x /usr/share/texlive/texmf-dist/texconfig/tcfmgr || exit 0

現状(sid, version 2015.20150703-1)では texlive-base に /usr/share/texlive/texmf-dist/texconfig/tcfmgr が含まれないので,設定してくれない.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=726107 の付近の話なような気もするがよくわからない.https://www.tug.org/texlive/debian.html で packaging の履歴を見てみたらなにかわかるかも,わからないかも.ちなみに /usr/share/texlive/texmf-dist/texconfig/tcfmgr は jessie (version 2014.20141024-2)には存在する.

仕方がないので /var/lib/dpkg/info/texlive-base.postinst を参照しつつ,以下で手動で設定.

% tl-paper status
Current dvipdfmx paper size (from /var/lib/texmf/dvipdfmx/dvipdfmx-paper.cfg): letter
Current dvips paper size (from /var/lib/texmf/dvips/config/config-paper.ps): letter
Current pdftex paper size (from /var/lib/texmf/tex/generic/config/pdftexconfig-paper.tex): letter
Current xdvi paper size (from /var/lib/texmf/xdvi/XDvi-paper): letter
% tl-paper list
letter
a4
% sudo tl-paper set all a4
/usr/bin/tl-paper: setting paper size for dvipdfmx to a4.
/usr/bin/tl-paper: setting paper size for dvips to a4.
/usr/bin/tl-paper: setting paper size for pdftex to a4.
/usr/bin/tl-paper: setting paper size for xdvi to a4.

Related articles

2015/07/12 22:33 / Debian GNU/Linux unstable (sid) で sdic が動かない

急に sdic が動かなくなって,大変困る.sdicとはEmacs上で辞書をひく軽量な実装.

調べたところ Debian の grep package の version が 2.21-2 に上がったことが原因ならしい.この version の grep は LANG=ja_JP.UTF-8 環境で EUC-JP なファイルをバイナリだと認識してしまうらしい(ある意味正しい挙動?).

% echo $LANG
ja_JP.UTF-8
% dpkg -l grep | grep ^ii
ii  grep           2.21-2       amd64        GNU grep, egrep and fgrep
% /bin/fgrep -e "<K>air" /usr/share/dict/gene.sdic
バイナリファイル /usr/share/dict/gene.sdic に一致しました
% sudo dpkg -i grep_2.20-4.1_amd64.deb
% dpkg -l grep | grep ^ii
ii  grep           2.20-4.1     amd64        GNU grep, egrep and fgrep
% /bin/fgrep -e "<K>air" /usr/share/dict/gene.sdic | head  -1 | nkf -u
<K>air</K>1.〜を放送する(〜が放送される),公表する,発表する,2.(衣類などを)風に当てる,干す,乾かす,部屋に風を通す,3.意見を吹聴する,不平を並べる,4.様子, 空気,態度,大気,空間,外見,5.空気の,空気を用いる,6.空の,空中の,飛行機の,7.曲,旋律

とりあえず grep を 2.20-4.1 に downgrade すれば動く.もしくは自前の fgrep (script かなにか)を用意して,LANG=ja_JP.UTF-8 環境でも EUC-JP のファイル (gene.sdic) をバイナリだと認識しないように細工してあげれば (-a option を付けて実体を起動する)動きそう.

というか,fgrep は script になっていて,その内容は exec grep -F "$@" のみなので,ここに -a option を付けてしまえばとりあえず良いような気がする.

以下デバッグメモ.

2015/07/06 12:06 / mrtg-rrd.cgi

MRTG の監視状況を見るのに mrtg-rrd.cgi を使っているのだが,なんだか PNG の生成が遅い(/ が nfs のためか1枚につき5秒程度).

以下のようにユーザー権限でローカルで PNG を生成してみると,結構早いので,strace で様子を見てみたら,CGIから起動される場合は毎回全ての font をスキャンしている模様.

% PATH_INFO=/hostname_2-day.png ./mrtg-rrd.cgi | less

解決策は以下で font の cache を生成することらしい.root で以下を実行すると /var/cache/fontconfig に cache が生成される.

% sudo fc-cache -f -v

2015/07/01 13:41 / うるう秒

本日 9:00 付近のうるう秒に関して,手元の Linux 機の dmesg によると自動で1秒挿入されたらしい.

Clock: inserting leap second 23:59:60 UTC

2015/06/24 15:26 / A&I services

仕事関連の文献データベース (abstracting and indexing (A&I) services)に関して(身近なものから)メモ.

IEEE Xplore Digital Library

IEEE 主催会議,Journal 等が含まれる.Technically sponsored by IEEE の場合でも含まれる(会議側が IEEE に LoA を送っていれば).また,著作権は基本的に IEEE に譲渡.正確な意味では A&I services ではないような気がするが,ここに掲載されれば他のA&I services にも載る(可能性がある).

参考:

Ei Compendex (EI: Engineering Index)

EIとして知られる Index.現在は Elsevierが運営.http://www.elsevier.com/solutions/engineering-village/content でCompendex Source List公開されている.

参考:

Web of Science (*1)(WoS)

トムソン・ロイターが運営している.

上記,ともにWeb of Science Core Collectionに含まれる.

2015/06/18 12:00 / imapd-ssl: couriertls: accept: error:14094417:SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter

久しぶりに icedove を起動してみたら,courier-imap-ssl で運用しているIMAPサーバに繋がらなくなってた.サーバ側では以下のように couriertls の部分でコケている.

imapd-ssl: couriertls: accept: error:14094417:SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter

どうやらこれは courier-ssl: mkdhparams default bit size is insufficient for libnss3 >= 3.19.1 というバグの影響らしい.実際 client (sid)側の libnss3 は 2:3.19.1-2 だった.

bug report のページにあるとおり,workaround は以下で/etc/courier/dhparams.pem を再生成するというもの.

# rm /etc/courier/dhparams.pem
# DH_BITS=2048 mkdhparams

もしくは /usr/sbin/mkdhparams を修正してしまって (BITS=768 を BITS=2048 に変更),以下をする.

# rm /etc/courier/dhparams.pem
# dpkg-reconfigure courier-ssl

追記(2015/6/18)

libnss3 3.19.1 以降で DH (Diffie-Hellman) 鍵のビット数は1023bit以上,ということになっていて,これは logjam attack対策らしい

2015/06/17 09:21 / dig gmail とか dig google とかで 127.0.53.53 が返ってくる

Google Chrome のアドレスバーに gmail と入力すると,「もしかして: http://gmail/」とか聞かれて,試しにその URL にアクセスしてみると,なぜか localhost で運用しているWeb Serverに繋がって焦る.

調べてみると,名前衝突(Name Collision)問題に対応するための「ICANN理事会による名前衝突問題への対応フレームワーク(2014/8/1)」の影響ならしい.

具体的にはhttp://stats.research.icann.org/dns/wildcard/index.htmlにリストされているTLDに関しては,名前衝突が発生しているので,それで名前解決しようとすると 127.0.53.53 が返ってくることになっているらしい.

リストされているのは,ローカルで使用されがちなTLDのみならず,ブラウザのアドレスバーに直接入れて検索に使用しがちなキーワードも含まれているような気がする(ブラウザが名前解決を試みるから?).

上記は単に 127.0.53.53 が返ってくるなぁというだけだが,hostname として利用してたりすると【調べた】LAN内のコンピュータにアクセスできず、DNSを引くと「127.0.53.53」が返ってくる問題という状況になる可能性があるらしい.

2015/06/11 12:31 / 名刺ファイリングOCR

Windows 8.1 Pro 64bit を英語化したら,名刺ファイリングOCRが起動しなくなった.具体的には「BCGCBProRes000.dll が見つからない」と怒られる.

BCGCBProResJPN.dll は存在するので,それを BCGCBProRes000.dll に Copy して起動を試みると,起動はするが名刺データベースを見つけてくれず,かつ,メニューが ???? だらけになる.

仕方がなく Windows を日本語に戻す.名刺ファイリングOCRのバージョンは V3.1L52 (V3.1L51 から L52 に上げてみたが状況は変わらなかった).

2015/05/23 22:39 / Windows 8 を LDAP+Samba で構築したドメインに参加させる

Linux (LDAP+Samba) 側は正しく sambaldap-tools 等で設定ができている状態を想定.

アプリケーションのインストールの際に管理者権限が必要になるが,その際はローカルの管理者ユーザ権限を用いる.

Related articles

2015/05/22 23:29 / Windows 8 で Local User Password を Reset する

職場から異動していった人のPCを他の人が使うということで,その設定をしようとしたが,ドメイン参加無しのスタンドアロン状態の Windows 8 で,前の使用者のみのアカウントがある状態で,ログインできず悩む.リカバリしようとリカバリDVDを探したが見つからない.

ということで,いろいろ調べた結果,その前使用者には悪いがパスワードをリセット(クリア)させてもらうことにした.

具体的には HDD の中を直接操作して,パスワードの保存されているファイル Windows/System32/config/SAMを修正するという作業になる.

今回対象としている計算機は1G HDD + 60G SSDで,Intel Rapid Storage Technology で RAID0 (Cache) という構成になっていて,はまる.起動時の設定画面で見えるのは http://www.pcper.com/reviews/Storage/Intel-Smart-Response-Technology-SSD-Caching-Z68-Tested/Boot-Option-ROM-Boot-Performaにあるような感じ.

Debian Installer でこの Disk を認識させようとすると,/dev/md127, /dev/md126 として見える (コンソールで mdadm 等を使ってもイマイチ正しく扱えない).

普通に起動させた Linux から認識させようとすると,今度は /dev/sda4 などとして Windows 領域が見えるが,この状態で mount してファイルを修正すると,どうもファイルの内容が壊れるらしい (詳細未確認,ファイルシステムが壊れるまではいかない).

ということで,起動時の Intel RST Option ROM からの設定で,RAID0(Cache)を解除(Reset Disks to Non-RAID)し,Cache 設定が無くなった素のHDDの状態で作業すると上手く行くことがわかった.

具体的には SAM ファイルのバックアップをとった状態で作業.アカウントのリスト表示は以下のようにする.

% cd /somewhere/Windows/System32/config/
% /usr/sbin/chntpw -l SAM

chntpw コマンドは Debian GNU/Linux の場合 chntpw というパッケージに入っている.ユーザーのパスワードをリセット(正確には Clear (blank))するには,

% /usr/sbin/chntpw -i SAM
で対話モードに入って,対話的に行う.

あとはこれで再起動してしまえば,パスワード入力無しで,その唯一のユーザーとして自動的にログインしてしまう.ちょっとこの状態で設定を続けるのは問題があるような気もするので,

を手早く行い,新たに作成したアカウントでもって,ドメイン参加等の設定を行った.

ちなみに Intel RST Option ROM からはRAID0(Cache)の (つまりSSDをキャッシュとして使う)設定は出来ず (出来るのは通常のRAID0とRAID1のみ),再度有効にするためには Windows から設定を行う.

chntpw 以外のアプローチ

パスワードリセット用 CD-R or USB を利用する

一般的には,こういった小細工をするための CD-R や USB を作成して,そこから作業をするらしい.利用してみたのは以下の2種類.この時はRAID0(Cache)設定に気付かず,ともに Windows 領域が見えず断念.

Utilman.exe に細工する

にあるように, Utilman.exe を cmd.exe で置き換えてしまう,という技もあるらしい.

Utilman.exe は Ease of Access (コンピュータの簡単操作) を提供する実行ファイル.Ease Of Access Replacer はこれを置き換えて,ログイン画面のスクリーンショットが取れるようにするツールならしい.

まとめ

このようにパスワードがリセットされると,リセットされたユーザーとしてその Windows にログインできることになって,たとえばブラウザに保持されている個人情報が悪用される可能性がある (というかパスワードが保存されている Chrome が起動されてしまえば,やりたい放題?).結局 HDD まるごと暗号化するか,もしくは手放す前に HDD をきっちり消去するのが賢明.

2015/05/19 10:21 / nvidia-kernel-dkms 343.36 on Linux 4.0.0

Debian GNU/Linux unstable (sid) を再起動したら,X が表示されなくなった.以下の組み合わせ.

sid の nvidia-kernel-dkms はちょっと古く(340.46-1),最新デバイスに対応していないので,experimeltal のもの(343.36-1)を導入している.

問題は343.36-1がLinuxに追いついていないということならしい.

まず f_dentry 関連で compile に失敗するので,https://github.com/archlinuxcn/repo/blob/master/nvidia-340xx-mainline/nvidia-3.19.patch の patch をあてる.nv.cnv-frontend.cfile->f_dentryfile->f_path.dentryに変更.

次にraed_cr4, write_cr4関連で compile に失敗するので,https://devtalk.nvidia.com/default/topic/813458/linux-4-0-rc1-346-47-build-error-_cr4-functions-fix/ の patch をあてる.nv-pat.cに関して,raed_cr4, write_cr4__raed_cr4, __write_cr4に変更.

これで,compile が上手く行く.ちなみにより具体的には nvidia-kernel-dkms_343.36-1 に含まれている /usr/src/nvidia-current-343.36/ 以下の source code に上記 patch をあてて,あとは以下で dkms を実行する.

% sudo dkms install -m nvidia -v current-343.36 -k 4.0.0-1-amd64

Related articles

2015/05/14 13:55 / Sun Grid Engine

複数の Linux 機を運用している場合に,計算を分散してくれる gridengine であるが,Debian GNU/Linux jessie から削除されている.

もともとは Sun Grid Engine という名称で,それが Oracle による Sun の買収にともない Oracle Grid Engine になって,その影響でオープンソースでの開発は Sun Grid Engine 6.2u5 で停止している (その後2013年にGrid EngineはOracleからUnivaに引き継がれる).

オープンソース版をベースに

が開発されている.という状況だが Debian package は依然 6.2u5 ベースのまま.upstream を Son of Grid Engine にする方向で話は進んでいるらしく (2年前に?),WNPP に RFH (Request For Help)が出ている状態(のまま).

GridenginePackaging GitGuideを参考にすれば自前 package を作れるらしい.

参考にしたページ:

2015/05/13 00:32 / 2015/6/6(Sat) の札幌のホテル

どうやら 6月6日(土),7(日) にサザンオールスターズのライブが札幌ドームであるらしく,通常のホテルがほぼ満室になっている様子.こういう大物やジャニーズが来る日程および雪まつりシーズンは要注意.

2015/04/23 13:07 / Email clients on Linux

普段はEmacs+Wanderlustでメールを見ているのだが,添付ファイルの扱いが面倒になりつつあるので,GUIベースのクライアントを検討中.候補は以下の3つ.

Mozilla Thunderbird (Icedove)

昔ながらの(いわゆるNetscapeに由来する)クライアント.IMAP の I/F が NNTPによる newsgroup の購読と同様になっていて,いちいち Subscribe するのがちょっと面倒.

IMAP の INBOX (Subscribe した Folder 全て?)は,まるごと fetch して,~/.icedove/ 以下に保存される (Account Setting -> Synchronization & Storage で設定を変更可能).その他のキャッシュは ~/.cache/icedove/ 以下に保存.検索は賢そう.

引用部分は引用部分として表示されるが,ぱっと見た感じ引用の表示を省略するなどの機能はなさげ.

スレッドは,スレッドモードにして,collapse した状態で選択すると,Preview (Summary) が表示され,これはいい感じ.複数メールを選択するとこのモードになるらしい.

SPAM フィルタが付いているが,私の場合 procmail + spampassassin でフィルタするので不要.

Evolution

現在は GNOME の一部になっている.

IMAPのフォルダは自動展開.一度フォルダを選択するとサマリ(メールのヘッダ情報)がキャッシュされ,一度メールを選択するとメールがキャッシュされる模様.添付ファイルもまた別途キャッシュ.非常に IMAP フレンドリ.

~/.local/share/evolution/ に各種設定が,~/.cache/evolution/ にキャッシュが保存される.

引用部分は引用部分として表示されるが,ぱっと見た感じ引用の表示を省略するなどの機能はなさげ.スレッドモードでは,単にメールをまとめてリストするだけ.

検索はたぶんキャッシュから.

Geary

比較的新しい.Vila で記述されたメールクライアント.

~/.local/share/geary/MAIL_ACCOUNT/ にキャッシュが保存される.というか,添付ファイルを積極的にキャッシュする模様なのだが (Folder View のみで Fetch してしまう?),あまり賢くなくて,同じファイルが別のメールに添付されていても,別物とみなしてキャッシュする (それが普通?).

スレッドのまとめ方や引用の表示等,Gmail と同様のスタイルになっていて,見た目は非常に良い.ただし,なんだか全体的にもっさりしていて残念 (フォルダ選択時の同期に時間がかかっている?はじめだけ?).

あと,古いメールを効率よく参照する仕方がわからない...

検索は https://wiki.gnome.org/Apps/Geary/FullTextSearchStrategyのようなストラテジならしい.

2015/03/27 13:50 / Intel Rapid Storage Technology and Linux mdadm

H97 Expressチップセットの計算機を RAID1 構成にて購入.さて Debian GNU/Linux (今回は jessie)を入れようとしたが,Disk が見えない.

インストーラの shell とかで見ると /dev/md127 (container)は存在していて,dmesg や mdadm --detail /dev/md127 によると,/dev/md127 に/dev/sda と /dev/sdb は bind されている.

どうやら

# mdadm --run /dev/md127

を実行すれば,/dev/md126 が作成されるらしく,無事 /dev/md126 を partition することができた.

ちなみに Intel® Rapid Storage Technology (Intel® RST) in Linux*, August 2011を参考にすると,

# mdadm -C /dev/md126 /dev/md127 -n 2 -l 1

を実行するのが本来らしいが,

mdadm: Not enough devices to start the array.

とか怒られる.

あとは grub (RAID1から起動)だが,/dev/md126 に install すればいいらしい.

2015/03/19 11:51 / USB disconnecting log

dmesg (or /var/log/kernel や /var/log/messages) で以下のようなログが繰り返し表示される問題.

usb 1-9.3: USB disconnect, device number 51
usb 1-9.3: new low-speed USB device number 52 using xhci_hcd
usb 1-9.3: New USB device found, idVendor=046d, idProduct=c05a
usb 1-9.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-9.3: Product: USB Optical Mouse
usb 1-9.3: Manufacturer: Logitech
usb 1-9.3: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9.3/1-9.3:1.0/0003:046D:C05A.0033/input/input59
hid-generic 0003:046D:C05A.0033: input,hidraw2: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:14.0-9.3/input0

ログによるとだいたい1分毎に USB Mouse を抜き差ししていることになるが,もちろんそんなことはしていない(刺したまま).

一旦 USB を抜いて挿し直せば大抵静かになってくれるが,リモートで面倒なので,

% sudo modprobe -r xhci_hcd

で黙らせる.

2015/03/19 11:11 / systemd-localed が起動に失敗する

Debian GNU/Linux jessie にて,何かの拍子で systemd-localed.service が FAIL するようになった.

% sudo systemctl reload systemd-localed.service
Failed to reload systemd-localed.service: Job type reload is not applicable for unit systemd-localed.service.
% sudo journalctl -xn50 | grep systemd
Mar 19 11:XX:00 hoge systemd[1]: Starting Locale Service...
Mar 19 11:XX:00 hoge systemd[1]: Couldn't stat device /dev/pts/ptmx
Mar 19 11:XX:00 hoge systemd[1]: systemd-localed.service: main process exited, code=killed, status=7/BUS
Mar 19 11:XX:00 hoge systemd[1]: Failed to start Locale Service.
Mar 19 11:XX:00 hoge systemd[1]: Unit systemd-localed.service entered failed state.

調べた結果,以下のバグのためだということがわかった.Debian Bug report logs - #773932 check for CONFIG_DEVPTS_MULTIPLE_INSTANCES=y in preinst

実際,運用している計算機の kernel は自前 compile のものなので,

% grep CONFIG_DEVPTS_MULTIPLE_INSTANCES /boot/config-3.18.*
/boot/config-3.18.9-XXX-01:# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set

となっていた.Debian GNU/Linux の Default の kernel では CONFIG_DEVPTS_MULTIPLE_INSTANCES=y となっている.次に compile する際には y にする.

2015/02/27 17:28 / gnome-shell が 3D acceleration 無し環境では動かない件

どうやら最新の gnome-shell というか gdm3 は 3D acceleration が無い環境では動作しないらしい.つまり XDMCP 経由でのリモートログインができない模様.

% Xnest -geometry 1920x1080 :1 -query remote

で remote に繋いでも

Oh no! Something has gone wrong.
A problem has occurred and the system can't recover.
Please log out and try again

という画面が表示され,どうにもならない.remote 側のログは以下のような感じ.

Feb 27 17:37:45 remote gnome-session[3622]: gnome-session[3622]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
Feb 27 17:37:45 remote gnome-session[3622]: gnome-session[3622]: WARNING: Could not parse desktop file caribou-autostart.desktop or it references a not found TryExec binary

ということで仕方なく Xvfb + VNC で GUI 環境を飛ばしてくる.

local% ssh -L5900:localhost:5900 remote
remote% Xvfb :1 -screen 0 1920x1080x16 &
(解像度はlocalに合わせておく)
remote% DISPLAY=:1 xterm &
remote% x11vnc -storepasswd
(~/.vnc/passwd にパスワードが保存される; 1回だけ実行)
remote% x11vnc -display :1 -rfbauth ~/.vnc/passwd &
local% vncviewer -FullScreen localhost

あとはつながった先にある xterm からお好みの window manager を立ち上げる.個人的には以下のどれか.

% fluxbox &
% xfwm4 &
% xfce-panel &
% metacity &
% gnome-panel &

metacity だと gnome-shell っぽい雰囲気になる.あと,vncviewer で fullscreen を抜けるには F8 の VNC のメニューから.ちなみに Alt-Tab の Task Swich は local に送られてしまうので注意.

追記(2016/04/05)

orca-autostart.desktop や caribou-autostart.desktop は screen reader や screen keyboard なので,通常は(screen reader等をinstallしていない状態では) parse errorが出ても(というかTryExecで設定したbinaryが存在しなくても)問題ない.

追記(2017/2/12)

この件,

https://www.debian.org/releases/jessie/amd64/release-notes/ch-information.en.html#gnome-3d のとおり jessie (以降の?)問題らしい.

The GNOME 3.14 desktop in Jessie no longer has fallback support for machines without basic 3D graphics.

Related articles

2015/02/09 18:43 / Emacs html-mode 自動インデントを切る

このページは Emacs でほぼ HTML 直書きなのだが,html-mode が自動インデントしてくれて,ちょっと困る (改行の入れ方とか他にもいろいろ考えたいところだが).

ということで,以下で offset を 0 にして indent を off にする.

(add-hook 'html-mode-hook
          (lambda ()
            (set (make-local-variable 'sgml-basic-offset) 0)))

2015/02/09 18:39 / logrotate gzip: stdin: file size changed while zipping

Debian GNU/Linux jessie にて cron で起動する logrotate から以下のメールが朝届く.

Subject: Anacron job 'cron.daily' on XXX
From: Anacron <XXX@mail.example.org>
Date: Mon,  9 Feb 2015 07:XX:XX +0900 (JST)

/etc/cron.daily/logrotate:
gzip: stdin: file size changed while zipping

gzip で固めている最中に log が追記された,とかそういうことなのだが,
Debian Bug report logs - #772448
logrotate: non-helpful cron mail: gzip: stdin: file size changed while zipping
のように bug report されている.どういう風にfixされるんだろうか.

2015/02/08 19:42 / gnome-terminal (Error constructing proxy for...)

gnome-shell は VMWare 上で使うのは重いので,未だに startx で X を起動しているのだが,~/.xinitrc から起動した xterm から gnome-terminal が 以下のエラーで起動しない(再起動したら直る場合も).

% gnome-terminal
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: org.gnome.Terminal を StartServiceByName で呼び出そうとしてエラー: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8

/var/log/message によると,

org.gnome.Terminal[XXXX]: Non UTF-8 locale (ANSI_X3.4-1968) is not supported!

とのことなので,LANG まわりなのであるが(xterm は LANG=ja_JP.UTF-8 で起動していて,/etc/locale.gen を見ても特に問題なさげ),

% /usr/lib/gnome-terminal/gnome-terminal-server &
% gnome-terminal &

とすれば起動してくれる.なお gnome-terminal が終了すると gnome-terminal-server も落ちる.

Related articles

2015/02/07 23:18 / Bluetooth HOGP (HID over GATT profile)

いままでNotePC用に ELECOM Bluetooth BlueLED マウス M-BL3BBを使っていたのだが,電池の箇所の蓋が閉まりづらくなったり,ペアリングの際の状態表示LEDが内部に入ってしまったりしていたので,新たに同社の Bluetooth 4.0 レーザーマウス M-BT13BLを購入.値段はアップグレードされるが,ボタン3つから5つに増えるし,低消費電力化されてて電池の持ちも良さそう,ということで.

早速利用しようとペアリングしてみるも HID (human interface device) として認識されない.試しに Android 携帯とマウスをペアリングしてみると,正常に認識される(携帯の画面にマウスカーソルが現れる...).

どうやら NotePC 側は HOGP (HID over GATT profile) (GATT: generic attribute profile) 対応でなければならないらしい.使っている NotePC は Let's note CF-AX2 で,これの Bluetooth は OS (Windows 8)標準のものではなく,Bluetooth Stack for Windows by Toshiba v9.10.04 というもの.Bluetooth 4.0 対応ではあるものの,HOGP 対応ではないらしい.

2015/02/07 23:05 / gnome-shell のパネルに日付を表示する

デフォルトの状態では jessie (sid も) の gnome-shell では,画面上部のバーの箇所(パネル)に日付が表示されない(曜日は出ている).

日付を表示するには以下をする.

% gsettings set org.gnome.desktop.interface clock-show-date true

Related articles

2015/01/26 19:21 / a2ps で日本語

たまに a2ps で日本語を使いたくなるのだが,大抵どうしようもならない.

EUC-JP ならなんとかなるという話もあるが,Debian GNU/Linux sid の a2ps (4.14-1.3) では,以下のような感じだった.

% LANG=ja_JP.eucjp date | nkf
2015年  1月 26日 月曜日 19:35:03 JST
% LANG=ja_JP.eucjp date | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\257  1\356 26\374 \356\313\374 19:35:03 JST) p n

どうも2バイト文字の1バイト目が無くなってしまうらしい.ということで,2バイト文字の各バイトに無駄なバイトを付けてみる (やるきなしワンライナー).

% LANG=ja_JP.eucjp date | ruby -e 'print STDIN.read.unpack("C*").map{|i| i>128 ? [-1,i] : i}.flatten.pack("C*")' | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\307\257  1\267\356 26\306\374 \267\356\315\313\306\374 19:36:36 JST) p n

これで生成される postscript (.ps) は gs (evince とか)で表示可能.この手の postscript は,あとは ps2pdf にさえ通ってしまえばなんとかなるのだが,今回はここで挫折.以前は (2015\307\257) p n(2015) p (\307\257) p n とかみたいに分解すれば ps2pdf に通ったような気がするのだが,手元の gs (9.06~dfsg-2) ではダメっぽい.

ということで e2ps を導入.入力は EUC (UTF-8 未サポート) で,landscape/portrate や 2-in 等にも対応.ただし a2ps (や enscript; こちらも日本語NG) にあるような style sheet サポートは無し.

というか,style sheet を諦めるのであれば,ブラウザ (google-chrome) でテキストファイルを開いて CUPS で PDF に印刷するか,Save to Google Drive で Google Drive に PDF を送る,というのでいいような気がしてきた.

2015/01/21 18:02 / service autofs stop 時に mount point が削除される

autofs (automount) を停止すると,mount point が削除されてしまうという問題.NFS root (/ 自体を NFS でマウントしている状態)だったりすると,他の client が非常に困ることになる.

これに関しては autofs 4 時代に removes the toplevel mountpoint directories and fails to start the next time (Severity: grave) という bug report が出ていて,現在の autofs では mount 時に mount point がなくても

umount_autofs_indirect: mount point /home does not exist

という syslog を吐きつつ mkdir して mount してくれる仕様になっている.がしかし,umount 時に mount point を unlink する仕様はそのまま.

解決法は上記 bug report の中にあるように,予め mount point を mkdir しておき,chmod u-w (or chmod 555) しておくというもの.

とはいえ,NFS root で client 多数という状況では,各 client が mount point を open したまま保持しているので,一旦全 client で autofs stop して,mkdir, chmod した後に autofs start という対処が必要だった.

ちなみに上記 bug report は,autofs5 という package ができて,autofs (version 4) の package が削除される,というタイミングで,うやむやのうちに close された模様.その後 autofs5 は autofs (version 5) という package 名になる(この bug report は close されたまま).ということで,仕様として理解するしかなさげ.

追記(2015/5/8)

どうやら mount point (/home 等) の mode を 444 にしていても削除される(?) ようで,ほかの計算機の autofs が死んでしまう.

mount point の directory に何らかのファイルがもともとあれば削除されない(?) ようなので,ダミーのファイル(.dummy 等)を mount point に置いておくことにする.

2015/01/15 18:24 / Debian GNU/Linux jessie (testing) autofs w/-hosts

jessie だと automount の -hosts (cd /net/hostname/ とすると自動で NFS mount してくれるあれ)の挙動がおかしい.バグレポートは https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741064のとおり(Severity: important).

[/etc/auto.master]
/net	-hosts
としておけば通常は動作してくれるところが,
automount[XXX]: get_exports: lookup(hosts): exports lookup failed for HOSTNAME
automount[XXX]: key "HOSTNAME" not found in map source(s).
という感じの syslog を吐いて,うまく動かない.というもとで, とりあえず上記バグレポートにある workaround である
[/etc/auto.master]
/net	/etc/auto.net
を使うことにする(/etc/auto.net は autofs インストール時に配置される). 実際はこういった情報(/net -hosts)は LDAP で +auto.master で配っていて,LDAP 側を修正したくないので,
[/etc/auto.master]
/net	/etc/auto.net
+auto.master
という感じで LDAP の前に /net のエントリを書いておくとこちらが優先されるらしい.

Related articles

2015/01/15 18:04 / Debian GNU/Linux wheezy (stable) の mesa が古すぎて最近の Intel HD Graphics がまとに動かない

wheezy の mesa が古すぎて(8.0.5)最近の Intel HD Graphics で GLX がまともに動作しない,という問題があって jessie (testing) に移行試行中(mesa は 10.3.2).

ちなみに wheezy であっても /usr/lib/xorg/modules/drivers/intel_drv.sohttps://01.org/linuxgraphics/downloadsの最新の xf86-video-intel を compile して配置すれば,Xorg 自体は最新の Intel HD Graphics を認識してくれる.がしかし mesa が古すぎて,これの自前 compile は大変なので...という話.

以下Xorg.0.logの情報(wheezyとjessie).ともにXorgからは認識できている.

で,wheezy の場合は mesa が古いので,glxinfo で

Unrecognized deviceID 0x412

と怒られてしまう.ということで仕方なしにjessie (testing)にあげる.

2015/01/12 19:52 / apply: Setting current directory: そのようなファイルやディレクトリはありません

何かの拍子で,Wanderlust で k s (SPAM登録),k c (SPAMチェック)が以下の Error でこけるようになってしまった.

apply: Setting current directory: そのようなファイルやディレクトリはありません, /home/someone/somewhere/

どうやら消してしまった directory /home/someone/somewhere/ が current directory に(なにかの拍子に)なってしまったらしい.

M-x cd で current buffer's default directory を変更して復帰.

2015/01/07 20:29 / rhsbl.ahbl.org 停止

http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st にあるとおり,メールサーバにて DNSBL として rhsbl.ahbl.org, dnsbl.ahbl.org, ircbl.ahbl.org を使っている場合は早急に設定が必要な模様.というか,先程あるサーバからメールが

  said: 554 5.7.1 Service unavailable; Client host
  [mail.example.org] blocked using rhsbl.ahbl.org; List shut down.
  See: http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st
  (in reply to RCPT TO command)
で返ってきてます.1/1 に止めると言っておきながら,1週間猶予した感じ?

なお,以下のような postfix の設定例を書いているページが多いので,かなりの数のサーバが影響を受けるような気がする.

 smtpd_client_restrictions = permit_mynetworks,
                             reject_rhsbl_client rhsbl.ahbl.org,
                             reject_rbl_client spamcop.net,
                             reject_rbl_client dynablock.wirehub.net,
                             reject_rbl_client sbl.spamhaus.org,
                             reject_unknown_client,
                             permit

2014/08/25 19:11 / ニコニコ動画 over squid3 3.3.8-1.1+b1

なぜか squid proxy を通すとニコニコ動画が見れないので調べてみた.Debian GNU/Linux で squid は squid3 3.3.8-1.1+b1.

どうやらアクセスログによると

1408960XXX.XXX     31 ::1 TCP_MISS/400 231 GET http://smile-fnl00.nicovideo.jp/smile? - HIER_DIRECT/119.110.89.1 -
1408960XXX.XXX     31 ::1 TCP_MISS/400 231 GET http://smile-fnl00.nicovideo.jp/crossdomain.xml - HIER_DIRECT/119.110.89.1 -

みたいな感じになっており,通常は最後の - の箇所が content-type になるのだがそうなっていない.tcpdump や telnet 等で調べてみると smile-fnl00.nicovideo.jp が問答無用で Bad Request,つまり,

HTTP/1.1 400 Bad Request
Date: Mon, 25 Aug 2014 10:XX:XX GMT
Server: lighttpd
Connection: close

を返すらしい.これは squid proxy が

X-Forwarded-For: ::1
という怪しげな Header をつけていたのが原因. 127.0.0.1 ならOKだったので ::1 を 127.0.0.1 にすれば良いのだが, やり方がわからないので(どこのIPv6をdisableしたらいいか不明), squid.conf で以下で X-Forwarded-For を付けない設定とする.
-# forwarded_for on
+forwarded_for off

Related articles

2014/08/21 11:49 / Debian GNU/Linux でビルマ(ミャンマー)語

% sudo aptitude install fonts-sil-padauk

これで Chrome でビルマ語(မြန်မာဘာသာ)が文字化けせず表示される.

あとはGoogle翻訳に流しこめば...と思ってたら,Google翻訳がミャンマー語に対応していない模様.東南アジアの主要言語でGoogle翻訳が未対応なのは,カンボジア語とビルマ(ミャンマー)語,とのこと.

参考にしたページ: http://www.asiahonyaku.com/essey/2013journal/201303journal/20130314cambodia.html

追記(2015/1/12)

カンボジア(クメール)語もビルマ(ミャンマー)語も現在Google翻訳は対応している模様.ビルマ語対応は昨年の12月だった模様.クメール語対応はもっと前で2013年4月.

参考にしたページ:

2014/08/15 16:20 / ACM renew

ACMのMembershipをrenewした.ACM Professional Membership: 99 USD.ACM Digital Library をつけるとその倍の 198 USD になる.

Sister Society との相互割引の制度があり,

となっている.なんか惰性で会費を払っている感があるが79 USDをVISAで決済.

オンライン決済で選べるのは paypal, VISA/Master, AMEX.JCBもAMEX扱いだったような気がするが (海外でJCBを見せると「なにそれ?ホントにクレジットカード?」みたいなことを言われるが,カードリーダーがAMEX対応だったら,JCBでも支払える,ような気がする),安全にVISAで支払い.

追記(2017/6/14)

今年は Paypal で払ってみた.

2014/08/14 23:58 / google-chrome-stable on Debian GNU/Linux sid

Chrome でアドレスバーが激しく文字化けするという症状に見まわれる.文字化けというか www からしてなにか適当な平仮名になっている.調べてみたら fonts-droid が問題ならしい.fonts-droid を purge して解決 (私の場合これに依存する package は無かった.というかなんで入れてたんだろうか...).

同時に gnome-terminal が起動しない問題,つまり手動で /usr/lib/gnome-terminal/gnome-terminal-server を実行してから gnome-terminal を起動しなければならない問題,も解決したような気がする (詳細不明).

参考にしたページ: http://www.kaoriya.net/blog/2014/04/18/

追記(2014/8/15)

blenderがfonts-droidに依存する模様.

Related articles

2014/07/17 12:41 / Emacs kill ring

Emacs での copy & paste は M-w (copy) と C-y (paste)で行うわけだが,普段 Windows の C-c と C-v と同じ使い方していなかったのだが,実はいろいろ出来たはず,ということで,思い出してみた.

M-x describe-key (F1-k)によると以下のような感じ.

C-w, M-w は Cut, Copy として使うとして,C-y (paste) の後 M-y すると順に前に Copy (or Cut) したものが paste (instert) されていく.

C-2 C-u C-y などで最新より1つ前に copy (or cut) したものが Paste される (kill-ring の位置が変わるのでちょっと混乱する).

emacs-goodies-el package が install されていれば,M-x browse-kill-ring で kill-ring の様子を見ることができる(かつ選択的に Yank 可能).

2014/07/03 13:28 / ruby2.1 の YAML

YAML.dump(object)で日本語文字列がダブルクォートされる.ruby 2.0 ではダブルクォートされなかったような...

YAMLでお手軽にシリアライズして,それをgitに突っ込んでいたりするので,処理系によって差分が出てしまう(個人で使っているだけなので問題ないのだが).

ということで,調べてみた.

該当処理箇所は /usr/lib/ruby/2.1.0/psych/visitors/yaml_tree.rbclass Psych::Visitors::YAMLTree < Psych::Visitors::VisitorPsych::Visitors::YAMLTree#visit_String(o) の箇所.の以下.

        elsif o =~ /^\W[^"]*$/
          style = Nodes::Scalar::DOUBLE_QUOTED

/usr/lib/ruby/2.0.0/psych/visitors/yaml_tree.rb にはこの行がない.ということでもしダブルクォートを回避するにはこの辺を何とかすれば良いらしい.

2014/07/03 12:33 / dvipdfmx で図が消える

先月ぐらいの texlive の upgrade で,dvipdfmx により生成したPDFにて図が消える(真っ白)という症状が発生.

% sudo vi /etc/texmf/dvipdfmx/dvipdfmx.cfg
-sPAPERSIZE=a0 を -dEPSCrop に変更

で解決する.

Related articles

2014/05/11 17:00 / texlive 2012.20120611 (Debian GNU/Linux) でフォント埋め込み

dvipdfmx で .dvi から .pdf を生成する際に PDF ファイルにフォントを埋め込む設定.Default の状態では /etc/texmf/dvipdfmx/dvipdfmx.cfg が存在しないので - jessie: /usr/share/texlive/texmf/dvipdfmx/dvipdfmx.cfg - stretch以降: /usr/share/texlive/texmf-dist/dvipdfmx/dvipdfmx.cfg が参照される.ということで /etc/texmf/dvipdfmx/dvipdfmx.cfg を配置して設定する.

% sudo cp /usr/share/texlive/texmf-dist/dvipdfmx/dvipdfmx.cfg /etc/texmf/dvipdfmx/dvipdfmx.cfg
% sudo vi /etc/texmf/dvipdfmx/dvipdfmx.cfg
-D  "gs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='%o' '%i' -c quit"
+D  "gs -q -dNOPAUSE -dBATCH -dPDFX -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='%o' '%i' -c quit"
+f jis-cjk.map
% sudo vi /etc/texmf/dvipdfmx/jis-cjk.map
rml     H fonts-japanese-mincho.ttf
gbm     H fonts-japanese-gothic.ttf
rmlv    V fonts-japanese-mincho.ttf
gbmv    V fonts-japanese-gothic.ttf
rml-jis H fonts-japanese-mincho.ttf
gbm-jis H fonts-japanese-gothic.ttf

つまり以下を行っている.

PDFファイルに全てのfontが埋め込まれているかどうかは以下のコマンドで embが全てyesになっているかどうかで確認する.

% pdffonts make.pdf

追記(2017/6/22)

stretch がリリースされたので若干更新した.

/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/updmap/kanjix.mapに以下のように記述されているが,これではフォントが埋め込まれない.

% ptex-ipaex.map
gbm H ipaexg.ttf %!PS IPAexGothic
gbmv V ipaexg.ttf %!PS IPAexGothic
rml H ipaexm.ttf %!PS IPAexMincho
rmlv V ipaexm.ttf %!PS IPAexMincho

Related articles

2014/05/02 23:44 / RPM メモ

普段 aptitude (apt) と dpkg を使っているので,yum と rpm を使う際は混乱する.

あと redhat 系で update-rc.d に相当するのは /sbin/chkconfig ならしい.

参考にしたページ: http://matsu.teraren.com/blog/2008/12/08/rpm-dpkg-%E5%A4%89%E6%8F%9B%E8%A1%A8/

Related articles

2014/05/02 17:23 / RPM パケージからの差分を見る

なぜか CentOS 5 を触ることになった.

rpm -V [package_name]

でインストールした時点からのファイルに加えられた変更を確認できるが,その差分まで見たい時の話.

まず rpm を拾ってくる.これは http://www.cyberciti.biz/faq/yum-downloadonly-plugin/ のMethod #2を参考にしつつ,yum-utils に入っている yumdownloader を使う.

yumdownloader [package_name]

でカレントディレクトリにrpmを取得できる.

あとは http://superuser.com/questions/194928/view-configuration-file-changes-with-rpm-or-yum を参考に rpmpeek を使う.

rpmpeek は rpmdevtools に含まれていて,rpmdevtools は EPEL (extra packages for enterprise Linux)に入っている (参考: Available Repositories for CentOS).ということで,yumで rpmdevtools を installするために epel-release-5-4.noarch.rpm (とか)を拾ってきてrpmで突っ込んであとは yum install rpmdevtools する.

あとはrpmpeakを叩くだけ.

RPM=package_name
for FILE in `rpm -V $RPM | sed -e 's+^[^/]*++' | grep '^/etc/'` ; do
  rpmpeek $RPM*.rpm diff -uw .$FILE $FILE
done

Related articles

2014/04/28 13:15 / VMware-Player-6.0.2 w/Debian GNU/Linux sid

% sudo vmware-modconfig --console --install-all

すると

make[1]: Entering directory `/usr/src/linux-headers-3.13-1-amd64'
Makefile:10: *** mixed implicit and normal rules.  Stop.

みたいに怒られてしまう.どうも

[/usr/src/linux-headers-3.13-1-amd64/Makefile]
$(cmd) %/: all
        @:

の箇所が問題ならしい.mix するな,ということらしいので,

[/usr/src/linux-headers-3.13-1-amd64/Makefile]
$(cmd): all
        @:
%/: all
        @:
として解決.

2014/04/29 00:31 / File system crash

aptitude で upgrade かけているうちに反応がなくなり VMWare の reset も効かなくなり VMWare の poweroff も効かなくなり VMWare が起動したまま Windows を強制再起動したら VMWare 上の Linux の file system がぐちゃぐちゃになった.

grub で適切な kernel を選んでで起動すると一応は起動.しかし,いろんな .so が行方不明.なんとかしようとしているうちに aptitude が libc の remove を提案する始末.仕方なく再インストールすることにする.

以下簡単な手順メモ.Install したのは Debian GNU/Linux の sid.

  1. mini.iso で起動して rescue mode に入る
  2. crypt 領域の PW が判らず焦るが,幾つか入れているうちになんとかなる
  3. 古い / を /old に移動して、base system install + grub install
  4. shell から passwd で root password 設定
  5. fstab, crypttab を調整のうえ update-initramfs -u -k all して reboot
  6. aptitude で各種 package を突っ込む
  7. /old/etc を参照しつつ /etc を調整
  8. i386 アーキテクチャの追加
    % sudo dpkg --add-architecture i386

再起動後なぜか Wanderlust の挙動が少し変化する.具体的には/usr/share/emacs/*/lisp/net/tls.elc が存在するためか elmo-vars.el の

(defvar elmo-network-stream-type-alist
  `(("!" ssl ,@(cond
		((and (fboundp 'gnutls-available-p)
		      (gnutls-available-p))
		 '(gnutls open-gnutls-stream))
		((module-installed-p 'tls)
		 '(tls    open-tls-stream))
		(t
		 '(ssl    open-ssl-stream))))

の箇所で tls.el の open-tls-stream が選択されてしまい,connection を張る際に

(defcustom tls-program '("gnutls-cli -p %p %h"
			 "gnutls-cli -p %p %h --protocols ssl3"
			 "openssl s_client -connect %h:%p -no_ssl2 -ign_eof")

を順番に試すようになってしまった.gnutls-cli でも --insecure option を付ければ繋がるが今まで openssl を使っていたので,

(setq tls-program '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof"))

とする.

あと気になったのは rdtool-elisp の install の際にちょっと文句を言われる.そろそろ使わないようにしたほうが良いのかも.

Preparing to unpack .../rdtool-elisp_0.6.38-2_all.deb ...
ERROR: rdtool-elisp is broken - called emacs-package-install as a new-style add-on, but has no compat file.
Unpacking rdtool-elisp (0.6.38-2) ...
Setting up rdtool-elisp (0.6.38-2) ...
ERROR: rdtool-elisp is broken - called emacs-package-install as a new-style add-on, but has no compat file.
Install rdtool-elisp for emacs
Install rdtool-elisp for emacs23
install/rdtool-elisp: Handling install for emacsen flavor emacs23
Wrote /usr/share/emacs23/site-lisp/rdtool-elisp/rd-mode.elc

2014/04/25 20:50 / qmail の設定

自分管理のドメインに関してレンタルサーバに移行することにしたので,qmail とお別れする.といっても,/etc/qmail/rcpthosts /etc/qmail/virtualdomains を変更(自分のドメインの情報を削除する)した後に qmail-send に HUP を送ればOKとのこと.

HUP を送るにも daemontools で管理されていたような気がするので,その流儀に従うことにする.以下 qmail-src から作った qmail package を入れていた場合の話.

sudo svc -h /etc/qmail/qmail-send

今は qmail-src は無くなって netqmail になっているらしい (package 名は qmail)が,その場合も上記でOKかは不明.

2014/04/24 00:25 / Wanderlust elmo-passwd-alist-save w/IMAP

なぜか Wanderlust でパスワードを記憶させておくことができない場合が発生していたので,調べてみた.

%:username/plain@imap.example.org:993!/%:username/clear@imap.example.org:993!/ は基本的には同じはずなのだが,plain だと PLAIN passpharase for usename: でパスワードが聞かれ,clear だと Password for IMAP:username/clear@imap.example.org:991: でパスワードが聞かれる.

info によると

認証法には `login' (エンコードしてパスワードを送信)か
           `cram-md5' (CRAM-MD5 による認証)か
           `digest-md5' (DIGEST-MD5 による認証)か
           `clear' (または `nil'。生パスワードを送信) のいずれかを指定。

となっているので,clear を使うのが流儀っぽい.

plain の場合は /usr/share/emacs/site-lisp/flim/sasl.elsasl-plain-response が呼ばれて,clear の場合は /usr/share/emacs/site-lisp/wl/elmo/elmo-util.elelmo-get-passwd が呼ばれる.前者はパスワードは変数にも保存されず,後者の場合は(エンコードされた)パスワードが elmo-passwd-alist に保存され,これが elmo-passwd-alist-save~/.elmo/ 以下に保存される.

2014/04/23 19:03 / nvidia-kernel-dkms 319.82-1~bpo70+1 on Linux 3.12.17

最近個人的に module-assistant (m-a) ではなく DKMS を使うようになりつつある (勝手にDKMSが入ったから?).

具体的に使うのは nvidia の kernel module のコンパイルぐらい.stable backports (stable-bpo) の nvidia の version が 319.82-1~bpo70+1.これは Linux の 3.12.xx であればコンパイルが通る(3.12.17で確認).3.14.1 だと不可.ということでもうしばらく 3.12 を利用.

ちょっとややっこしい環境なので,自前で dkms を実行する必要があるのだが,その場合は以下のようにする.

% sudo dkms install -m nvidia -v current-319.82 -k 3.12.17-20140423-hoge-01+

オプションは -v module-version-k kernel-versionという感じ.

Related articles

2014/04/23 18:50 / csv2wp (CSV to WikiMedia table converber)

CSV から WikiMedia のテーブルへの変換スクリプト.Ruby で書いてある.やるきなしなし.

require "csv"
list=CSV.open(ARGV[0]).to_a
size=list.map{|i| i.size}.max
t=["!"]
a=list.map{|j| p=t.shift; (0...size).to_a.map{|i| "#{p}|#{j[i]}\n"}*""}
print %Q!{| class="wikitable"\n#{a*"|-\n"}|}!,"\n"

CSV Converter にオンラインで変換するものがあるようですが.

2014/04/23 15:53 / LDAP 作業メモ

すぐに忘れるのでよく使うものだけ以下にメモ.

/etc/hosts の LDIF (LDAP Data Interchange Format) への変換

% perl -I/etc/migrationtools /usr/share/migrationtools/migrate_hosts.pl /etc/hosts > hosts.ldif

設定を記述している/etc/migrationtools/migrate_common.ph をincludeするために上記のようにする.

LDIF の LDAP への追加

% ldapadd -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw) -f hosts.ldif

-w (pw) を -W にすると,パスワードを入力するモードになる.

LDAP から /etc/hosts 情報に相当する部分を検索

% ldapsearch -x objectClass=ipHost

Related articles

2014/04/20 23:08 / WordPress 3.9 with qTranslate 2.5.39 → mqTranslate 2.6

前の記事で qTranslate が WordPress 3.9 に対応していない旨書いて,なんとか応急措置的に使えるようにしたが,この状態だと Visual Editor が起動しない (私自身は HTML 直書きなのでほぼ問題がないのだが).かつ未だに qTranslate が更新される気配無し.

ということで,http://wordpress.org/support/topic/dont-upgrade-to-wordpress-90-for-now-couldnt-plugin-author-help-us を参考に qtranslate から fork した mqtranslate に乗り換え.この URL のページ,[resolved] になっているわりにその解決法が別の plugin を使うといもので,なかなか qtranslate の作者をバカにしているような.

Related articles

2014/04/17 14:45 / WordPress 3.9 with qTranslate 2.5.39

WordPress 3.9 がリリースされたのでヴァージョンアップを行う (当然こことは別のサイト).

qTranslate で多言語化を行っているのであるが(一般的に重いと言われているが気にしない),qTranslate がまだ WordPress 3.9 に対応していないので,なんとかしてみる.

$before. があると以下のようなメッセージが apache の error.log に現れて,うまく表示が行われない(1つのpostの最後のところまでしか表示されなくなる).

PHP Catchable fatal error:  Object of class WP_Post could not be converted to string in /document_root/wp-content/plugins/qtranslate/qtranslate_core.php on line 455

追記(2014/4/20)

2014/4/20 23:08 / WordPress 3.9 with qTranslate 2.5.39 → mqTranslate 2.6も参照のこと.

Related articles

2014/04/14 19:34 / gnome-shell 3.8.4-8 + ibus 1.5.5-1

gnome-shell + uim (mozc) 環境だったのだが,libreoffice に uim で日本語入力できないので,uim の代わりに ibus (ibus-daemon -dx)を使うことにした.

と,同時かどうかは不明だが,gnome-shell + ibus の場合の input source (method) switch の設定は Gnome の keyboard の設定側 (Keyboard - Shortcuts - Typing - Switch to next source) にあって,これを Shift+space にしようとすると

The shortcut "Shift+Space" cannot be used because it will become impossible
to type using this key.

みたいな酷いことを言われて設定できない,という問題に遭遇.Default の Ctrl+Space は Emacs の Mark set と conflict するので,とんでもない.

http://yutarine.blogspot.jp/2013/10/ubuntu1310ibus15de.html を参考に dconf-editor で ['<Shift>space'] に設定してみてもうまく効いてくれない(Ctrl+Space で switch しなくなるが,Shift+Space で switch しない).

ということで,いろいろ悩んだ挙句,window manager を xfwm4 にすることにした.xfwm4 の場合は ibus-setup で ibus 側の設定として next input method の shortcut を設定できる.

最近 metacity (←大人のための退屈なあれ; Boring window manager for the adult in you) と xfwm4 と gnome-shell を行ったり来たりしている...

Related articles

2014/02/01 14:34 / Credit Card 限度額一時的増額

2月,3月に海外に数回行く見込みで,航空券代だけで限度額が厳しくなってきたので,クレジットカード会社のオーソリセンターに電話.以前増額したときはなんか事細かに聞かれたような気がするのだが,今回は日常月○○円,大きな買い物○○円,海外利用分○○円,をざっくり聞かれるだけだった.

国内・海外は別枠で Amazon.co.jp や Google の決済は海外利用扱いになる旨注意を受けたのと,鉄道回数券,金券,パソコン,カメラ,時計,の購入予定に関しても聞かれた.

電話口で審査され,電話を切った5分後から利用可能.枠増額は4月10日まで有効(だから結構金額多めに申告する必要がある) で,繰り上げ返済しても枠は回復しない,と言われたような気がする.期間中MyJCBや音声応答での利用限度額は正しく表示されない旨注意を受ける.

2014/01/08 16:25 / Invalid command 'Alias' @ Debian GNU/Linux apache2 2.4.7-1

apache が止まっていたので調べてみた.

% sudo service apache2 start
Starting web server: apache2 failed!
The apache2 configtest failed. ... (warning).
Output of config test was:
AH00526: Syntax error on line 1 of /etc/apache2/conf-enabled/javascript-common.conf:
Invalid command 'Alias', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.

とのことで,http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=711925 の症状らしい.

そもそも jQuery とかも使っていないので javascript-common 自体が不要な気がするが,

% sudo a2enmod alias
% sudo service apache2 start

で復帰.

2013/12/30 17:30 / Monster Energy

Monster Energy だが,いつも開けるときに少し中身がはねて手に付いてしまう.Stay-on-tab の出来が悪いような気がする.

2013/12/11 01:30 / Amazon.co.jp 返品

カートに以前に入れていたのを忘れてて, 間違えて「数量2」のまま発注してしまった. ということで,1つ返品. Amazon.co.jp で手続きをして(手順に従って同封するバーコードとラベルを印刷), 「Amazon.co.jp返品専用 日本郵便株式会社集荷サービス」にWebから集荷依頼.

2013/12/06 18:07 / BTO スリム計算機

年度末に向けて計算機購入を検討中.いくつかBTOで組んでみた(スリム,Core i7-4770,MEM: 32G,HDD: 2T).

ちなみに,Windows 8.1 と Windows 8.1 Pro の違いは http://windows.microsoft.com/ja-jp/windows/compareによると

とのこと.BitLocker (HDD暗号化)の代替としては LUKS でもなんとかなるかも(Windows でも FreeOTFE で利用できるらしい).

2013/11/07 13:25 / ゴールドブレンド

インスタントコーヒーといえばゴールドブレンドしか飲まない方針なのだが,飲んだ後カップに残る残留物の雰囲気が異なっていて,どうやら新しくなったらしい.味はそんなに変わってないように感じた.

調べてみたら9月1日から「挽き豆包みフリーズドライ製法」になって,「インスタントコーヒー」の範疇を出てしまいソリュブルコーヒーになったらしい.

2013/11/06 14:22 / Cacoo

Cacoo使ってみた.Free Plan だと Export Format が PNG only.有料版は1年49USD.

2013/10/29 23:58 / Windows 8.1 Pro

Windows 8.1 に上げた.スタートボタンが復活した(もういらないけど).あと余波で VMPlayer のネットワークインタフェースがなくなってしまったようなので(VMの設定で色々してみたけど直らなかった),VMPlayer を再(修復)インストール.

あと,caps に ctrl を割り当ててたレジストリ設定が消えたので,色々調べつつ再度レジストリにて設定.

2013/10/24 22:11 / sid の aptitude が動かなくなった

aptitude: symbol lookup error: aptitude: undefined symbol: _ZNK7tagcoll4coll4FastISsSsE13getTagsOfItemERKSs

libept1.4.12 を 1.0.10 に上げたのがだめだったらしい(#727540.libept1.4.12 を1.0.9 に downgrade して解決.

2013/10/19 21:50 / Zip file の中身の画像 Viewer

複数の画像を含む Zip file を直接画像としてみる Viewer として gimvを長年使っていたが,Debian GNU/Linux の package として提供されなくなって久しいので,代替のものを使うことにした.有名どころでは pornview というのがあったような気もするが,これももう package が無いようなので,mcomix というのを使うことにする.

Android では Perfect Viewerを使っている.スクショを見て気づいたのだが,これ,スクリーントーンに合わせて色をつける機能があるっぽい.試してみたら donated users only だった...

2013/10/18 22:12 / Samba で EUC-JP なファイル名を見れるようにする

今どき Linux で EUC-JP なファイル名を使っている方が問題な気がするが, /etc/samba/smb.conf でとりあえず設定.
[global]
  unix charset = EUCJP-MS
  dos charset = CP932
いつも忘れてググるのでメモ.

2013/10/11 19:16 / 那覇空港のウェブページには英語版がない

那覇空港のウェブページには English version が無い.そして,そこからのアクセス手段であるゆいレールのページに関しても English version が無い.

追記(2014/4/23)

今日見てみたら那覇空港のウェブページが多言語化されてました.英語以外にも簡体字・繁体字・ハングルもAvailable.

追記(2016/4/1)

今日見てみたらゆいレールのページが多言語化されてました.外国語のページの方がシンプルで見やすいような気がする.

2013/10/11 18:30 / Makehuman

Makehuman. Debian GNU/Linux の package だと(Ubuntu でも?)一部うまく動かない部分が あるような気配.でも面白い.

2013/09/24 20:46 / Mozc Dictionary Tool

uim で mozc をつかっているのだが,なぜか(LANGの設定の問題?) uim-toolbar-gtk-systray から Mozc Dictionary Tool を起動できないので,コマンドラインから起動する.いつも忘れるのでメモ.

% LANG=C /usr/lib/mozc/mozc_tool --mode=dictionary_tool

LANGの箇所はお好みで.

参考にしたページ: https://wiki.archlinux.org/index.php/Mozc

Related articles

2013/08/08 17:44 / ks_c_5601-1987 の MIME decode

From等にある=?ks_c_5601-1987?B?...?=をWanderlustで文字化け無しで見れるようにするには

(eval-after-load "mcs-20"
  '(add-to-list 'mime-charset-coding-system-alist
		'(ks_c_5601-1987 . euc-kr)))
とすればいいらしい.

参考にした記事: http://nijino.homelinux.net/diary/200108.shtml#200108090

2013/07/18 10:41 / 灯油タンク内の灯油処分

引越しをするのだが,室内灯油タンク(サンダイヤ オイルタンク) 内に残っている灯油を処分するようにと管理会社から言われた.どういう管理になっているのか良く判らないが,灯油ストーブと灯油タンクは入居時から部屋にあったのだが,この管理はこの管理会社が行なっているものではなく,単に前の住人が置いていったもの,という位置付けならしい.

ということで,適当に調べて灯油業者に聞いてみると,残量が少ない場合(つまり買取にならない場合)は自分で抜き取った方が安いとのこと.ポンプ(ちょっと長めのものが必要)はホーマック等で入手可能.ちなみに業者に依頼すると5,000円(税別).

追記(2013/7/21)

いわゆる一般的なシュポシュポ (手動の灯油ポンプ,正式名称: 石油燃焼機器用注油ポンプ) では長さが足りなかったので,とはいえ長めのものもホーマックに置いてなかったので,適当なホース(ホーマックで切り売りしてもらった) でシュポシュポを若干延長して灯油を抜き出した.

この抜き出した灯油の処分だが,適当にガソリンスタンド(セルフのスタンドで灯油も買えるようなところ) に持ち込んだところ,処分の費用(サービス料)として525円必要だった.これで灯油生活と決別.

2013/06/25 13:33 / Wanderlust で To: が長い場合に MIME decode が省略されてしまう

Wanderlust で To: が長い(宛先が多数指定されているメール)場合に MIME decode が省略されてしまうという問題. FLIM の eword-decode.el を眺めてみると mime-field-decoding-max-size というので制限がかかっている模様 (default: 1000 (bytes), see mime-def.el). ということで ~/.wl にて1桁ほど増やす.
(setq mime-field-decoding-max-size 10000)
あと Wanderlust 側で行数が多い場合に表示を省略する機能もあって, その行数は wl-message-header-narrowing-lines で指定する. が,そもそも省略不要なような気がし始めたので以下で省略機能自体を切る.
(setq wl-message-use-header-narrowing nil)

2013/06/24 18:50 / LDAP server + autofs

LDAP と autofs を利用して home directory や共通設定(というかアカウント)を共有するためのメモ.

% sudo aptitude install slapd

で OpenLDAP (slapd) をインストールする.この際 admin のパスワードを設定させられる.

% sudo slapcat

で保持されている情報(暗号化されたパスワードも含めて)を確認.初期状態では,以下の DN (distinguished name: 識別名)のみ.これも Debian の場合ドメイン名から適当に決まる (おそらく dpkg-reconfigure slapd でもう少し詳細に設定可能).

dn: dc=meganecco,dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: meganecco.example.org
dc: meganecco
(snip)

dn: cn=admin,dc=meganecco,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: (snip)
(snip)

/etc/ldap/ldap.conf には

BASE    dc=meganecco,dc=example,dc=org
URI     ldapi:///

を書いておく.ldapi:/// は UNIX ドメインソケットでのアクセス.別計算機で LDAP server が動いている場合は ldap://192.168.xx.xx/ とかでサーバ指定.これで

% ldapsearch -x
% ldapsearch -x objectClass=account

などで情報が参照できるようになる (-x: use simple authentication instead of SASL).

クライアント設定

/etc/nsswitch.conf に

passwd:         compat ldap
shadow:         compat ldap
hosts:          files dns ldap
automount:      ldap

とか,LDAP を使いたい箇所に ldap と書いておく.ここでは user 認証と host 名と autofs (automount) のための map を想定.automount: ldap としておけば /etc/auto.master も不要.

これだけだと client にはなれず,他に,

% sudo aptitude install nslcd

で nslcd (local LDAP name service daemon) を入れておく.localhost が LDAP server になっている場合は,

[/etc/nslcd.conf]
uri ldapi:///
base dc=meganecco,dc=example,dc=org

ぐらいの設定をする(別計算機の場合は ldap://192.168.xx.xx/).

LDAPの情報操作

% ldapadd -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw)
% ldapdelete -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw)
% ldapmodify -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw)

でLDAPの保持している情報を操作する.(pw)は設定したパスワード.-w (pw) ではなく -W とすれば,毎回パスワード入力を求められる(そのほうが安全?).ちなみに sudo せずにユーザー権限でOK.

ldapadd の場合は DN の内容をそのまま書く.空行で DN の区切れ目だと認識され,add の処理が行われる.失敗すると exit する.-f (filename) で手書き(or C&P)の 代わりにファイルから入力も可能.

% ldapadd -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw)
dn: ou=People,dc=meganecco,dc=example,dc=org
objectClass: organizationalUnit
ou: People

dn: ou=Hosts,dc=meganecco,dc=example,dc=org
objectClass: organizationalUnit
objectClass: top
ou: Hosts
^D

とか.ldapdelete の場合は削除したい DN を書く.-f (filename) も可能.

% ldapdelete -x -D "cn=admin,dc=meganecco,dc=example,dc=org" -w (pw)
dn: ou=Hosts,dc=meganecco,dc=example,dc=org
^D

ldapmodify はほんのちょっとだけややこしいので省略.

上の例で示した People に /etc/passwd の内容を,Hosts に /etc/hosts の内容を追加していく.ちなみに OU は organizational unit (組織単位).イチから書くとあれなので,変換 script を使う.

% cd /usr/share/migrationtools/
% sudo vi migrate_common.ph (/etc/migrationtools/migrate_common.ph への symlink)
$DEFAULT_MAIL_DOMAIN = "meganecco.example.org";
$DEFAULT_BASE = "dc=meganecco,dc=example,dc=org";
% sudo ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
% sudo ./migrate_hosts.pl /etc/hosts > /tmp/hosts.ldif

これで生成した LDIF (LDAP data interchange format) を適当に編集 (共有したい部分のみ残す)して ldapadd に -f で喰わせる.簡単.たぶんこれぐらいで多分ユーザ認証はできるはず.

うまく行かない場合は /var/log/daemon を参照したり nslcd を再起動したりする.

autofs 向け LDAP 設定

http://wiki.debian.org/LDAP/AutoFSSetupにある極めて不親切な情報を参考にする.まずLDAPにautomount用のschemaを追加する.つまりautomountのマップ情報を扱えるように設定を行う.ちなみにNISによるautofsはDefaultで使える.そういった機能を追加するイメージ.

LDAPの設定は

sudo ldapsearch -Y EXTERNAL -b "cn=config"

で確認する(sudo).People とかと同様にDNで設定(schema等)が保持されている.つまりldapaddやldapdeleteで設定を変更する感じになる.

ということで/etc/ldap/schema/autofs.schemaから ldapadd するものを作成し,ldapadd する.以下の通り.

% vi hoge.conf
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/autofs.schema
% mkdir hoge
% /usr/sbin/slaptest -f hoge.conf -F hoge
% vi hoge/cn=config/cn=schema/cn={1}autofs.ldif
(適当に整形...というか以下のようにする)
dn: cn=autofs,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: autofs
olcAttributeTypes: {0}( 1.3.6.1.1.1.1.25 NAME 'automountInformation' DESC 'Inf
 ormation used by the autofs automounter' EQUALITY caseExactIA5Match SYNTAX 1.
 3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.1.1.1.13 NAME 'automount' DESC 'An entry in an
 automounter map' SUP top STRUCTURAL MUST ( cn $ automountInformation $ object
 class ) MAY description )
olcObjectClasses: {1}( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' DESC 'An gro
 up of related automount objects' SUP top STRUCTURAL MUST ou )
% sudo cp hoge/cn=config/cn=schema/cn={1}autofs.ldif /etc/ldap/schema/autofs.ldif
(今後使うことがあるかもしれないから保存しとく)
% sudo ldapadd -Y EXTERNAL -f /etc/ldap/schema/autofs.ldif

autofs からLDAPを参照(するための設定他)

先の nsswitch.conf に automount: ldap とあれば ldap の ou=auto.master,dc=meganecco,dc=example,dc=orgがまず参照される.そこから順に情報をたどっていくっぽい.ということで以下を ldapadd.

## /etc/auto.master の代わりの入れ物
dn: ou=auto.master,dc=meganecco,dc=example,dc=org
ou: auto.master
objectClass: top
objectClass: automountMap

## /etc/auto.master の書いていただろう内容
dn: cn=/home,ou=auto.master,dc=meganecco,dc=example,dc=org
objectClass: automount
cn: /home
automountInformation: ldap://192.168.xx.xx/ou=auto.home,dc=meganecco,dc=example,dc=org

dn: cn=/-,ou=auto.master,dc=meganecco,dc=example,dc=org
objectClass: automount
cn: /-
automountInformation: ldap://192.168.xx.xx/ou=auto.direct,dc=meganecco,dc=example,dc=org

dn: cn=/net,ou=auto.master,dc=meganecco,dc=example,dc=org
objectClass: automount
cn: /net
automountInformation: -hosts

## 上から辿られる MAP (auto.home)
dn: ou=auto.home,dc=meganecco,dc=example,dc=org
ou: auto.home
objectClass: top
objectClass: automountMap

dn: cn=/,ou=auto.home,dc=meganecco,dc=example,dc=org
cn: /
objectClass: automount
automountInformation: -rw,intr,soft 192.168.xx.xx:/export/home/&

## 上から辿られる MAP (auto.direct)
dn: ou=auto.direct,dc=meganecco,dc=example,dc=org
objectClass: top
objectClass: automountMap
ou: auto.direct

dn: cn=/opt,ou=auto.direct,dc=meganecco,dc=example,dc=org
objectClass: automount
cn: /opt
automountInformation: 192.168.xx.xx:/export/opt

あとは client 側で service autofs restart 等で autofs を再起動する.うまく動かない場合は,

# /usr/sbin/automount -v -d -f

で様子を探る(-v verbose and -d debug and -f foreground).

Related articles

2013/06/19 15:56 / Samba でホームディレクトリの外へのシンボリックリンク先を参照する

% cd
% ln -s .. home
などとしておいて,home にアクセスしたいという話. 以前は Default で可能だったが今では
wide links = yes
unix extensions = no
というのを[global]の箇所に書いておく必要がある.いつも忘れてググるのでメモ.

2013/06/19 15:49 / Apple Mail から送信されたメールの添付ファイルが Wanderlust で見えない

X-Mailer: Apple Mail (2.1508) なメールの添付ファイルが multipart/mixed の中にあって見えないという話.Apple Mail から送信されたメールが Wanderlust で decode できない場合の対処方によれば

して強制的に表示させれば良いとのこと.

2013/06/18 22:58 / gnome-terminal 3.8.3-1 背景が透けない

gnome-terminal (GNOME端末) で背景が透けなくなった,と思ったら,http://en.wikipedia.org/wiki/GNOME_Terminal によると 3.8 以降では透過背景の機能が削除されたとのこと.Edit->Profile Preferences から Background という Tab が削除されている.

Related articles

2013/06/08 16:54 / dm-crypt 関連メモ (cryptroot)

/ 自体を暗号化してしまう場合の話.この場合,key を /boot/luks_key に置いて(/boot は暗号化しない),

[/etc/crypttab]
hoge_crypt UUID=(略) /boot/luks_key luks

だと,key file が initrd から見えず,/ を mount できない状態になる.

を想定する場合,/boot/luks_key に key を置くことにすると,

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev

という設定で /dev/sda5 の luksOpen が initrd の段階で可能になる.passdev に /dev/disk/by-uuid/(sda1 uuid):luks_key という引数が渡され,passdev は /dev/disk/by-uuid/(sda1 uuid):luks_key の中身を返す(?)らしい.

あとは

% sudo update-initramfs -u -k all

で initrd の中の conf/conf.d/cryptroot が

[conf/conf.d/cryptroot]
target=sda5_crypt,source=UUID=(sda5 uuid),key=/dev/disk/by-uuid/(sda1 uuid):luks_key,rootdev,lvm=hoge-root,keyscript=/lib/cryptsetup/scripts/passdev
target=sda5_crypt,source=UUID=(sda5 uuid),key=/dev/disk/by-uuid/(sda1 uuid):luks_key,lvm=hoge-swap_1,keyscript=/lib/cryptsetup/scripts/passdev

という感じで適切に生成され,あとは起動時に initrd 中の scripts/local-top/cryptroot が適切に処理してくれる.

追記(2017/4/18)

逆に / として利用しない crypt device を起動時に自動 open するには passdev を使ってはいけない(使えない).sda5_crypt に / があるとすると,

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev
sda6_crypt UUID=(sda6 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev

これだと sda6_crypt が open されない.以下のようにする必要がある.

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev
sda6_crypt UUID=(sda6 uuid) /boot/luks_key luks

Related articles

2013/06/08 15:11 / X dead keys

ノートPCの日本語キーボードを無理やり英語キーボードとして使うとき Backspace の左側の \ (|) と矢印キー付近の \ (_) が使えない場合がある(こいつらがdead keys).これを(お手軽に) Xorgで使えるようにするには,以下のようにする.

% xmodmap -e 'keycode 132 = backslash bar'
% xmodmap -e 'keycode 97 = backslash underscore'

2013/06/03 17:57 / grub vga

grub の画面表示が VBE かなにかで高解像度になってしまい, 非常に間の抜けた画面(しかも反応が遅い)になるのでVGAにもどす.
[/etc/default/grub](抜粋)
GRUB_GFXMODE=640x480
% sudo update-grub
これで/boot/grub/grub.cfgに
set gfxmode=640x480
という行が追加されVGAでコンパクトなgrubになる模様.

2013/06/03 17:51 / dm-crypt 関連メモ

Debian GNU/Linux インストール時にブロックデバイスの暗号化を選択できるので,

という構成にしたら起動時に /home と swap で2回 passphrase を入力しなければならなくなった (本当は / は LVM の中に入れず別 partition にして,LVMの手前で暗号化をかけるべきだった→これだと少なくとも1回で済む).ということで改善をはかる.

swap

まず swap.これは https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS#Without_suspend-to-disk_support を参考に毎回異なるランダム鍵で暗号化することにする.元の状態は以下.

[/etc/crypttab]
hoge-home_crypt UUID=(略) none luks
hoge-swap_crypt UUID=(略) none luks

[/etc/fstab]
/dev/mapper/hoge-home_crypt /home btrfs defaults 0 2
/dev/mapper/hoge-swap_crypt none  swap  sw       0 0

まず

% sudo swapoff -a
% sudo cryptdisks_stop hoge-swap_crypt

でswapを解除して,hoge-swap_crypt を luksClose する.cryptdisks_stop の行は

% sudo cryptsetup luksClose hoge-swap_crypt

と同じ意味.cryptdisks_start/cryptdisks_stop は /etc/crypttab を参照してくれるのでmountのように使える.

https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS#Without_suspend-to-disk_support に従い

[/etc/crypttab]
hoge-home_crypt UUID=(略) none luks
hoge-swap_crypt /dev/mapper/hoge-swap /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

とし,LUKSのヘッダ情報を削除(wipe)する.

% sudo sh -c 'head -c 1052672 /dev/zero > /dev/mapper/hoge-swap; sync'

ちなみにヘッダ情報は

% sudo cryptsetup luksDump /dev/mapper/hoge-home
% sudo cryptsetup luksDump /dev/mapper/hoge-swap

とかで参照可能.ヘッダがなくなると UUID でのアクセスができなくなるので,/etc/crypttab の hoge-swap_crypt の行では UUID は使えない.あと/dev/urandomではなく/dev/randomとすると乱数を得るのに時間がかかるので注意.

あとは,initrd 中に

[conf/conf.d/cryptroot]
target=hoge-swap_crypt,source=UUID=(略),key=none

という感じで,luksOpen を指示するような記述があるので,

% sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-3.8-2-amd64
cryptsetup: WARNING: target hoge-swap_crypt has a random key, skipped

で initrd を再生成しておく.

キーファイルを用いて passpharese 入力を省略

http://jehupc.exblog.jp/19078309/を参考に設定.このページでは /boot/luks_key に鍵を置いているが,私の環境では /boot の mount が /home よりも後のようなので,暗号化されていない / に置くことにした(そうしないとうまく起動できなかった).

% sudo dd if=/dev/urandom of=/etc/luks_key bs=1 count=1024
% sudo chmod 600 /etc/luks_key
% sudo cryptsetup luksAddKey /dev/mapper/hoge-home /etc/luks_key
% sudo cryptsetup luksDump /dev/mapper/hoge-home
(→Key Slot 1が追加されたことを確認)

あとは,

[/etc/crypttab]
hoge-home_crypt UUID=(略) /etc/luks_key luks
hoge-swap_crypt /dev/mapper/hoge-swap /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

としておく.

コマンドメモ

device mapper の状態確認.

% sudo dmsetup ls --tree
% sudo dmsetup info
% sudo dmsetup status

cryptsetup に関しては luksOpen luksClose luksDump luksFormat luksAddkey ぐらいを頻繁に使う.

Related articles

2013/06/03 16:55 / dvipdfmx: Invalid glyph name index number

% dvipdfmx main.dvi
main.dvi -> main.pdf
[1
** WARNING ** Invalid glyph name index number: 12502 (>= 12495)
** WARNING ** Invalid TrueType 'post' table...
** ERROR ** Could not obtain necessary font info.

Output file removed.

とかで dvipdfmx が落ちる.

ls -arlt /etc/alternatives/fonts-japanese-*
lrwxrwxrwx 1 root root 53  5月  2 21:22 /etc/alternatives/fonts-japanese-gothic.ttf -> /usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf
lrwxrwxrwx 1 root root 53  5月  2 21:22 /etc/alternatives/fonts-japanese-mincho.ttf -> /usr/share/fonts/opentype/ipaexfont-mincho/ipaexm.ttf

ということで ipaexfont (fonts-ipaexfont-mincho と fonts-ipaexfont-gothic) が怪しい.以下で解決する模様.

% sudo update-alternatives --config fonts-japanese-gothic.ttf
There are 3 choices for the alternative fonts-japanese-gothic.ttf (providing /usr/share/fonts/truetype/fonts-japanese-gothic.ttf).

  Selection    Path                                                                                      Priority   Status
------------------------------------------------------------
* 0            /usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf                                      120       auto mode
  1            /usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf                                      120       manual mode
  2            /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf                                          100       manual mode
  3            /usr/share/fonts/truetype/ipafont-nonfree-jisx0208/ipag0208_for_legacy_compatibility.ttf   100       manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf to provide /usr/share/fonts/truetype/fonts-japanese-gothic.ttf (fonts-japanese-gothic.ttf) in manual mode
% sudo update-alternatives --config fonts-japanese-mincho.ttf
There are 3 choices for the alternative fonts-japanese-mincho.ttf (providing /usr/share/fonts/truetype/fonts-japanese-mincho.ttf).

  Selection    Path                                                                                      Priority   Status
------------------------------------------------------------
* 0            /usr/share/fonts/opentype/ipaexfont-mincho/ipaexm.ttf                                      120       auto mode
  1            /usr/share/fonts/opentype/ipaexfont-mincho/ipaexm.ttf                                      120       manual mode
  2            /usr/share/fonts/opentype/ipafont-mincho/ipam.ttf                                          100       manual mode
  3            /usr/share/fonts/truetype/ipafont-nonfree-jisx0208/ipam0208_for_legacy_compatibility.ttf   100       manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/share/fonts/opentype/ipafont-mincho/ipam.ttf to provide /usr/share/fonts/truetype/fonts-japanese-mincho.ttf (fonts-japanese-mincho.ttf) in manual mode

Related articles

2013/06/05 09:51 / 起動時に brtfs に対して fsck がうまくかからない

起動時の btrfs に対する fsck で

Unknown option: -a

とかで失敗する.手動でfsckをかけるように言われてroot passwordを要求されるが,そもそも fsck.btrfs (btrfsck への symlink) が標準的な fsck の option を受け付けないのが問題らしい.

起動出来ないと困る,というか / 自体を brtfs にしていたので,とりあえず

# mount -o remount,rw /
# vi /etc/fstab

して fstab の sixth field を 0 (起動時にfsckしない)にして再起動→調整.ちなみに

と普通は設定する(see man fstab).

これだとfsckされないので,感じ悪いので,対処法を探す. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=709217 に対処法が書かれているが,今度は http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701956

check_mounted(): Could not open /run/rootdev

問題が発生する.色々やっている時間もないので fstab をもとにもどして btrfs-tools を 0.19+20130315-2 から 0.19+20130131-3+really20121004-1 に downgrade することにした.

2013/06/03 13:25 / apache 2.2 → 2.4

/etc/apache2/*-enabled/ 以下が初期状態にもどってハマる.以下,最低限やったこと.

あとは
# /etc/init.d/apache2 restart

追記(2013/7/5)

mod-available にあるものを mod-enabled に symlink するには普通は

# a2enmod mime

等とする.

2013/05/31 10:46 / i386 acroread を amd64 で動かすために必要なもの

Debian GNU/Linux unstable (sid) での話.いつも忘れていつの間にか purge してしまうのでメモ.

追記(2015/6/30)

すでに通常の Adobe Acrobat Reader DC のダウンロードページでは Linux 版が存在しない(Windows, Intel Mac, Android のみ).Linux 版は 32bit のみ ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/ からダウンロードするらしい.たぶん今なら PDF を Linux 上で見るには Evinceを用いるのが最も標準的.

2013/05/31 01:38 / オフィスチェア

新しい職場で使う椅子を選定中.オフィスチェア メーカー・ブランド一覧 厳選17社 が参考になった.

2013/05/30 15:05 / 最近の texlive

Debian GNU/Linux unstable (sid) の最新の LaTeX 環境 (texlive 2013) がちょっとひどいことになっているような気がする.一応日本語も大丈夫そうだが図が意図したところに入らず致命的.

Related articles