docker 0.7


* lxcを便利に使用できるdockerの0.7がでていますね。
* 0.7からは aufs以外でも使えるようになりました。
* ストレージドライバは aufs, devicemapper, vfsの順にプライオリティがつけられているようです
* graphdriver/driver.go
var (
DefaultDriver string
// All registred drivers
drivers map[string]InitFunc
// Slice of drivers that should be used in an order
priority = []string{
"aufs",
"devicemapper",
"vfs",
}
)

* ストレージドライバは、環境変数 DOCKER_DRIVERを設定することで切り替えることができるようですexport DOCKER_DRIVER=vfs

* devicemapper利用時のサイズは以下のように定義されているようです
*graphdriver/devmapper/deviceset.go
var (↲
»---DefaultDataLoopbackSize int64 = 100 * 1024 * 1024 * 1024↲
»---DefaultMetaDataLoopbackSize int64 = 2 * 1024 * 1024 * 1024↲
»---DefaultBaseFsSize uint64 = 10 * 1024 * 1024 * 1024↲
)↲

* devicemapperで作られるvolumeは以下の感じで作られるようです
// This is the programmatic example of "dmsetup create"↲
func createPool(poolName string, dataFile, metadataFile *osFile) error {↲
»---task, err := createTask(DeviceCreate, poolName)↲
»---if task == nil {↲
»---»---return err↲
»---}↲

»---size, err := GetBlockDeviceSize(dataFile)↲
»---if err != nil {↲
»---»---return fmt.Errorf("Can't get data size")↲
»---}↲

»---params := metadataFile.Name() + " " + dataFile.Name() + " 128 32768"↲
»---if err := task.AddTarget(0, size/512, "thin-pool", params); err != nil {↲
»---»---return fmt.Errorf("Can't add target")↲
»---}↲

»---var cookie uint = 0↲
»---if err := task.SetCookie(&cookie, 0); err != nil {↲
»---»---return fmt.Errorf("Can't set cookie")↲
»---}↲

»---if err := task.Run(); err != nil {↲
»---»---return fmt.Errorf("Error running DeviceCreate (createPool)")↲
»---}↲

»---UdevWait(cookie)↲

»---return nil↲
}↲

* data_block_size 128
* low_water_mark 32768

* thin-provisioning.txtによるとUsing an existing pool device
-----------------------------

dmsetup create pool \
--table "0 20971520 thin-pool $metadata_dev $data_dev \
$data_block_size $low_water_mark"

$data_block_size gives the smallest unit of disk space that can be
allocated at a time expressed in units of 512-byte sectors. People
primarily interested in thin provisioning may want to use a value such
as 1024 (512KB). People doing lots of snapshotting may want a smaller value
such as 128 (64KB). If you are not zeroing newly-allocated data,
a larger $data_block_size in the region of 256000 (128MB) is suggested.
$data_block_size must be the same for the lifetime of the
metadata device.

$low_water_mark is expressed in blocks of size $data_block_size. If
free space on the data device drops below this level then a dm event
will be triggered which a userspace daemon should catch allowing it to
extend the pool device. Only one such event will be sent.
Resuming a device with a new table itself triggers an event so the
userspace daemon can use this to detect a situation where a new table
already exceeds the threshold.
とのことなので、最初に設定したThin-pool 100GBのうち、容量が32768 * (512*512)Byte = 8MBytes を切ると、拡張がされるように思います(動作は未確認)
* このあたりは決め打ちで変更はできないようですね

grub2のgrub-mkconfigにlabelベースな設定を書かせるメモ


* 2013/08/18 挙動がかわったようなので更新しました
* /etc/grub/10_linux
--- 10_linux.backup 2013-06-21 02:20:47.436531219 +0900
+++ 10_linux 2013-06-22 18:53:47.000000000 +0900
@@ -136,8 +136,6 @@
fi

message="$(gettext_printf "Loading Linux %s ..." "${version}")"
+ auto_label="`e2label ${GRUB_DEVICE} 2>/dev/null`"
+ linux_root_device_thisversion="LABEL=${auto_label}"
sed "s/^/$submenu_indentation/" << EOF echo '$message' linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}

* /usr/share/grub/grub-mkconfig_lib
--- grub-mkconfig_lib.backup 2013-06-21 02:35:50.038459949 +0900
+++ grub-mkconfig_lib 2013-06-22 18:53:46.000000000 +0900
@@ -146,22 +146,20 @@
done
fi

- # If there's a filesystem UUID that GRUB is capable of identifying, use it;
- # otherwise set root as per value in device.map.
- fs_hint="`"${grub_probe}" --device "${device}" --target=compatibility_hint`"
- if [ "x$fs_hint" != x ]; then
- echo "set root='$fs_hint'"
- fi
- if fs_uuid="`"${grub_probe}" --device "${device}" --target=fs_uuid 2> /dev/null`" ; then
- hints="`"${grub_probe}" --device "${device}" --target=hints_string 2> /dev/null`" || hints=
- echo "if [ x\$feature_platform_search_hint = xy ]; then"
- echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
- echo "else"
- echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
- echo "fi"
- fi
+# # If there's a filesystem UUID that GRUB is capable of identifying, use it;
+# # otherwise set root as per value in device.map.
+# fs_hint="`"${grub_probe}" --device "${device}" --target=compatibility_hint`"
+# if [ "x$fs_hint" != x ]; then
+# echo "set root='$fs_hint'"
+# fi
+# if fs_uuid="`"${grub_probe}" --device "${device}" --target=fs_uuid 2> /dev/null`" ; then
+# hints="`"${grub_probe}" --device "${device}" --target=hints_string 2> /dev/null`" || hints=
+# echo "if [ x\$feature_platform_search_hint = xy ]; then"
+# echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
+# echo "else"
+# echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
+# echo "fi"
+# fi
+auto_label="`e2label "$@" 2>/dev/null`"↲
+echo "search --no-floppy --label ${auto_label} --set root"↲
}

grub_get_device_id ()

Universal Media Server Build memo


* git clone https://code.google.com/p/universal-media-server/
* git clone https://github.com/UniversalMediaServer/UniversalMediaServer.git
* src/main/java/net/pms/network/UPNPHelper.java の public class UPNPHelper の sendAliveのdelay間隔を好きなように調整

mvn com.savage7.maven.plugins:maven-external-dependency-plugin:resolve-external
mvn com.savage7.maven.plugins:maven-external-dependency-plugin:install-external
mvn clean package

yum-plugin-priorities

CentOSを触る度にわすれるのでメモ

yum-plugin-priorityのデフォルト値は99のようなので、epelとかのrepo設定にpriority=100と書いとくだけで、優先度さがります

vagrant


* vagrantメモ
* http://www.vagrantbox.es/

% gem install vagrant
% vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box
% mkdir -pv ~/work/vagrant/centos64
% cd ~/work/vagrant/centos64
% vagrant init centos64
% vagrant up
% vagrant ssh-config --host vagrant-vm >> ~/.ssh/config
% ssh vagrant-vm
% vagrant halt

systemd-197 から network interface名が変なのにrenameされる


* http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames
* 従来の予測不可能なカーネル名では問題がある場合があり、インターフェース名がどのデバイスを指してるのかをよりはっきりさせるためにとった選択なんですね
* biosdevnameとは違うようだ
* どんな名前になるのか知りたいときは、こうするといいようです[root@joker ~]# udevadm test-builtin net_id /sys/class/net/eth2
calling: test-builtin
=== trie on-disk ===
tool version: 197
file size: 5463680 bytes
header size 80 bytes
strings 1228112 bytes
nodes 4235488 bytes
load module index
ID_NET_NAME_MAC=enx0002a54ecb0d
ID_OUI_FROM_DATABASE=Hewlett-Packard Company
ID_NET_NAME_PATH=enp7s0f1
unload module index

* 従来通りのethXが使いたければln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rulesしとくと良いみたい

freenxのセッションを復活


* freenxで、サスペンドしているセッションに再接続しにいっても、新しいセッションが始まってしまうことがあります
* nxserver –list でみると、もう居なくなってるけど、nxagentのプロセスはまだ残っている
* こういう場合、/var/lib/nxserver/db/failed や /var/lib/nxserver/db/closed の下にいる該当するセッションのファイルを /var/lib/nxserver/db/runningに移動して、status=の行をSuspendedに書き換えてあげるとresumeできるかもしれません

KDE4のnepomukとakonadiを停止


====== nepomuk ======
* ~/.kde4/share/config/nepomukserverrcを編集
[Basic Settings]
Start Nepomuk=false

* ~/.kde4/share/config/kdedrcを編集
[Module-nepomuksearchmodule]
autoload=false

====== akonadi ======
* ~/.config/akonadi/akonadiserverrcを編集
[QMYSQL]
StartServer=false

* akonadictl stop とすると今動いているものが止まります

FreeNXでつないだ時にフォントが表示されないものがある


* cairo-1.12.xが原因のようです
* https://wiki.archlinux.org/index.php/FreeNX#Broken_resume_with_Cairo_1.12.x にあるように、 /etc/nxserver/node.confの設定を AGENT_EXTRA_OPTIONS_X="-norender"とすればフォントは表示されるようになりますが、描画がよろしくない状態は変わりません。
* http://arm.konnichi.com/search/index.php?a=64&q=%5Ecairo%24&extra=1&community=1&community-testing=1 から cairo-1.10.2-3-x86_64.pkg.tar.xzを取得し、pacman -U ./cairo-1.10.2-3-x86_64.pkg.tar.xzとしてcairoをダウングレードし、様子を見ることにします
* /etc/pacman.confにIgnorePkg = cairoを設定するのを忘れずに。