<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4599417963883898818</id><updated>2012-02-16T18:23:35.805+09:00</updated><category term='fib'/><category term='daemon'/><category term='virtualization'/><category term='keepalived'/><category term='OpenMicroServer'/><category term='configuration'/><category term='QoS'/><category term='python'/><category term='conntrack'/><category term='pcap'/><category term='vmware'/><category term='kernel'/><category term='dell-studio'/><category term='WLAN'/><category term='conntrackd'/><category term='debian'/><category term='obs600'/><category term='network'/><category term='lxc'/><category term='book'/><category term='application'/><category term='iptables rule'/><category term='bind'/><category term='misc'/><title type='text'>ちょっと jot</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default?start-index=101&amp;max-results=100'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>126</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4473744949821496778</id><published>2011-05-19T23:16:00.000+09:00</published><updated>2011-05-19T23:16:19.084+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>USB Storage iSerial for KVM</title><content type='html'>&lt;pre&gt;# on debian squeeze&lt;br /&gt;&lt;br /&gt;## Apache WebDAV 調子芳しくなく... &lt;br /&gt;## 素直な設定のままでいろいろイジらん方が良さげ&lt;br /&gt;&lt;br /&gt;また唐突、絶対に覚えられないのでメモ。地味に必要なヒトいるかも。KVM と言&lt;br /&gt;うか QEMU の話で、&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=640332"&gt;-usbdevice オプションは古いから -device オプションを使&lt;br /&gt;おう。&lt;/a&gt;調べたところ&lt;a href="http://www.linux-kvm.org/page/USB"&gt;本家? &lt;/a&gt;に指定方法アリ。ドキュメント眺めたり debian git&lt;br /&gt;のソース取ってきたりしたところ -drive 側で&lt;br /&gt;&lt;br /&gt;    -drive id=usbmem,file=thinstick.img,serial=01234567890ABCDEF&lt;br /&gt;&lt;br /&gt;でイケると思いきや、常に "1" に。また調べると、&lt;a href="http://patchwork.ozlabs.org/patch/75863/"&gt;こんなパッチ&lt;/a&gt; があったけど&lt;br /&gt;debian のソース - git://git.debian.org/git/collab-maint/qemu-kvm.git&lt;br /&gt;ではバージョン 0.14.0+dfsg-1~tl からで squeeze にバックポートもないし、&lt;br /&gt;このバージョンでバイナリパッケージ作るも依存関係、他パッケージのバージョ&lt;br /&gt;ン合わずインストールできず。で、いつものよぉおーに...ムリヤリ&lt;br /&gt;&lt;br /&gt;    --- hw/usb-msd.c.dpkg-dist 2011-05-19 22:52:54.000000000 +0900&lt;br /&gt;    +++ hw/usb-msd.c 2011-05-19 22:53:00.000000000 +0900&lt;br /&gt;    @@ -296,7 +296,11 @@&lt;br /&gt;                     break;&lt;br /&gt;                 case 3:&lt;br /&gt;                     /* serial number */&lt;br /&gt;    +                if (s-&gt;dinfo &amp;&amp; s-&gt;dinfo-&gt;serial) {&lt;br /&gt;    +                     ret = set_usb_string(data, s-&gt;dinfo-&gt;serial);&lt;br /&gt;    +                } else {&lt;br /&gt;                     ret = set_usb_string(data, "1");&lt;br /&gt;    +                }&lt;br /&gt;                     break;&lt;br /&gt;                 default:&lt;br /&gt;                     goto fail;&lt;br /&gt;&lt;br /&gt;多分モニタからは指定できず、起動時のオプション指定のみしか有効にならない。&lt;br /&gt;でもまぁ&lt;br /&gt;&lt;br /&gt;    kvm -m 512M -net tap -net nic,model=e1000 \&lt;br /&gt;    -device piix3-usb-uhci -device usb-storage,drive=usbmem \&lt;br /&gt;    -drive id=usbmem,file=memstick.img,serial=0123456789ABCDEF&lt;br /&gt;&lt;br /&gt;で動くことは動いてる。根性ナシで手抜き、こっちも忘れそうだけど&lt;br /&gt;&lt;br /&gt;    $ dpkg-buildpackage -b -rfakeroot -us -uc&lt;br /&gt;    ...&lt;br /&gt;    $ su&lt;br /&gt;    ...&lt;br /&gt;    # mv /usr/bin/kvm /usr/bin/kvm.dpkg-dist&lt;br /&gt;    # cp debian/qemu-kvm/usr/bin/kvm /usr/bin &lt;br /&gt;&lt;br /&gt;でゴマカシ。&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4473744949821496778?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4473744949821496778/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4473744949821496778' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4473744949821496778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4473744949821496778'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/05/usb-storage-iserial-for-kvm.html' title='USB Storage iSerial for KVM'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8171920931895456115</id><published>2011-05-03T22:08:00.000+09:00</published><updated>2011-05-03T22:08:35.807+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='daemon'/><title type='text'>WebDAV quota on linux</title><content type='html'>&lt;pre&gt;あまり apache に限った話ではなく、いくつか方法があると思うのだけど、思い&lt;br /&gt;付いたところ。ユーザ WebDAV 用のローカル側にてディレクトリを&lt;br /&gt;&lt;br /&gt;1. オーナーをユーザ、グループを www-data。合わせて SUID して user quota&lt;br /&gt;   &lt;em&gt;chmod 4770 $HOME/public_html/webdavdir&lt;/em&gt;&lt;br /&gt;   &lt;br /&gt;   でもディレクトリの SUID は意味がないと言うか、許されちゃいない。&lt;a href="http://stackoverflow.com/questions/627880/does-any-unix-like-system-ascribe-meaning-to-the-suid-bit-on-a-directory"&gt;ここ&lt;/a&gt;で&lt;br /&gt;   も少し触れられているし、&lt;a href="http://lkml.org/lkml/2002/5/18/29"&gt;じゃったら FreeBSD をつかえぇ。&lt;/a&gt;位の話らしい。&lt;br /&gt;   できる、できないではなく&lt;a href="http://www.google.com/search?q=linux+suiddir+patch"&gt;パッチもあり、そんなに難しいことではなさそう&lt;/a&gt;な&lt;br /&gt;   ので、セキュリティの問題で、やらないっぽい。あるいは &lt;a href="http://www.google.com/search?q=gfs2+suiddir"&gt;GFS2 なら mount &lt;br /&gt;   オプションにあるらしい&lt;/a&gt;けど、そこまでやる元気もなし&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. オーナーを www-data として SGID &amp;amp; group quota&lt;br /&gt;   グループを各ユーザ毎に --- chamaken ユーザに chamaken グループなど作&lt;br /&gt;   成してグループで group quota は umask を変更すれば可能。&lt;br /&gt;&lt;br /&gt;   変更しないとディレクトリ掘られた場合に削除できなくなってしまう。&lt;br /&gt;&lt;br /&gt;   &lt;a href="http://stopwords.piquan.org/2010/07/dealing-with-dashcode-part-2-apache.html"&gt;Dealing With Dashcode, Part 2: Apache, WebDAV, and umasks&lt;/a&gt; と同じ事かな&lt;br /&gt;&lt;br /&gt;   umask を 022 から 002 に変更するには、シェルユーザとしては&lt;br /&gt;   /etc/profile や $HOME/.profile あるいは /etc/login.defs の UMASK など。&lt;br /&gt;   apache の場合は /etc/apache2/envvars に umask 002 を追記してあげれば&lt;br /&gt;   ば良い &lt;a href="http://www.google.com/search?q=debian+apache2+umask"&gt;``らしい''&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. POSIX ACL &amp;amp; group quota&lt;br /&gt;   上の ``Dealing With Dashcode'' 眺めていて、何とかならんのかい。と試し&lt;br /&gt;   ていたらできちゃった程度なので見識ある方ご意見いただけると、とっても&lt;br /&gt;   ありがたいです。&lt;br /&gt;   &lt;br /&gt;   先日の /etc/fstab に acl オプション追加&lt;br /&gt;&lt;br /&gt;       # diff -uw fstab.old fs&lt;br /&gt;       --- fstab.old 2011-05-03 08:08:59.000000000 +0900&lt;br /&gt;       +++ fstab 2011-05-03 08:39:53.000000000 +0900&lt;br /&gt;       @@ -7,7 +7,9 @@&lt;br /&gt;        #                &lt;br /&gt;        proc            /proc           proc    defaults        0       0&lt;br /&gt;        # / was on /dev/sda1 during installation&lt;br /&gt;       -/dev/sda1 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1&lt;br /&gt;       +/dev/sda1 / ext3 errors=remount-ro,acl,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1&lt;br /&gt;        # swap was on /dev/sda5 during installation&lt;br /&gt;&lt;br /&gt;   acl パッケージのインストール&lt;br /&gt;&lt;br /&gt;       # aptitude install acl&lt;br /&gt;&lt;br /&gt;   の後に root 権限不要。一般ユーザで&lt;br /&gt;&lt;br /&gt;       $ &lt;em&gt;mkdir g+ws $HOME/public_html/webdavdir&lt;/em&gt;&lt;br /&gt;       $ &lt;em&gt;chmod g+ws $HOME/public_html/webdavdir&lt;/em&gt;&lt;br /&gt;       $ &lt;em&gt;setfacl -m user:www-data:rwx $HOME/public_html/webdavdir&lt;/em&gt;&lt;br /&gt;       $ &lt;em&gt;setfacl -d -m user:www-data:rwx $HOME/public_html/webdavdir&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   実際に group quota が効くかまでは試してないです...&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;   長いけど umask を変更しなかった場合のお試し&lt;br /&gt;&lt;br /&gt;       chamaken$ cd ~/public_html&lt;br /&gt;       chamaken$ mkdir davtest&lt;br /&gt;       chamaken$ ls -ld davtest&lt;br /&gt;       drwxr-xr-x 2 chamaken chamaken 4096 May  3 18:05 davtest&lt;br /&gt;&lt;br /&gt;   この配下のファイルはオーナを chamaken グループとしたいので、ディレクト&lt;br /&gt;   リに SGID して group writable に&lt;br /&gt;&lt;br /&gt;       chamaken$ chmod g+ws davtest&lt;br /&gt;       chamaken$ ls -ld davtest&lt;br /&gt;       drwxr-sr-x 2 chamaken chamaken 4096 May  3 18:05 davtest&lt;br /&gt;&lt;br /&gt;   WebDAV でアクセスするためにオーナユーザを www-data に&lt;br /&gt;   # root がユーザホームに手を入れるのは今一つ&lt;br /&gt;&lt;br /&gt;       root# chown www-data davtest&lt;br /&gt;       root# ls -ld davtest&lt;br /&gt;       drwxr-sr-x 2 www-data chamaken 4096 May  3 18:05 davtest&lt;br /&gt;&lt;br /&gt;   www-data になってお試し&lt;br /&gt;&lt;br /&gt;       www-data$ cd /home/chamaken/public_html/davtest&lt;br /&gt;       www-data$ touch www_file&lt;br /&gt;       www-data$ ls -l www_file&lt;br /&gt;       -rw-r--r-- 1 www-data chamaken 0 May  3 18:11 www_file&lt;br /&gt;       www-data$ mkdir www_dir&lt;br /&gt;       www-data$ ls -ld www_dir&lt;br /&gt;       drwxr-sr-x 2 www-data chamaken 4096 May  3 18:11 www_dir&lt;br /&gt;       www-data$ cd www_dir&lt;br /&gt;       www-data$ touch www_file_in_www_dir&lt;br /&gt;       www-data$ ls -l file_in_www_dir &lt;br /&gt;       -rw-r--r-- 1 www-data chamaken 0 May  3 18:12 file_in_www_dir&lt;br /&gt;&lt;br /&gt;   ずっと SGID が効いてるねぇ。同じ事を chamaken で&lt;br /&gt;&lt;br /&gt;       chamaken$ pwd&lt;br /&gt;       /home/chamaken/public_html&lt;br /&gt;       chamaken$ cd davtest&lt;br /&gt;       chamaken$ touch chamaken_file&lt;br /&gt;       chamaken$ ls -l chamaken_file&lt;br /&gt;       -rw-r--r-- 1 chamaken chamaken 0 May  3 18:17 chamaken_file&lt;br /&gt;&lt;br /&gt;   この時点で怪しいけど www-data で、このファイルを消すことは消せる&lt;br /&gt;&lt;br /&gt;       www-data$ pwd&lt;br /&gt;       /home/chamaken/public_html/davdir/www_dir&lt;br /&gt;       www-data$ cd ..&lt;br /&gt;       www-data$ ls -l chamaken_file&lt;br /&gt;       -rw-r--r-- 1 chamaken chamaken 0 May  3 18:17 chamaken_file&lt;br /&gt;       www-data$ rm chamaken_file&lt;br /&gt;       rm: remove write-protected regular empty file `chamaken_file'? y&lt;br /&gt;&lt;br /&gt;   でもディレクトリ掘っちゃうと&lt;br /&gt;&lt;br /&gt;       chamaken$ mkdir chamaken_dir&lt;br /&gt;       chamaken$ cd chamaken_dir&lt;br /&gt;       chamaken$ touch file_in_chamaken_dir&lt;br /&gt;       chamaken$ ls -la&lt;br /&gt;       total 8&lt;br /&gt;       drwxr-sr-x 2 chamaken   chamaken 4096 May  3 18:43 .&lt;br /&gt;       drwxrwsr-x 4 www-data chamaken 4096 May  3 18:39 ..&lt;br /&gt;       -rw-r--r-- 1 chamaken   chamaken    0 May  3 18:43 file_in_chamaken_dir&lt;br /&gt;&lt;br /&gt;   www-data にて削除できず&lt;br /&gt;&lt;br /&gt;       www-data$ rm -rf chamaken_dir&lt;br /&gt;       rm: cannot remove `chamaken_dir/file_in_chamaken_dir': Permission denied&lt;br /&gt;&lt;br /&gt;   逆もしかりで&lt;br /&gt;&lt;br /&gt;       chamaken$ rm www_file &lt;br /&gt;       rm: remove write-protected regular empty file `www_file'? y&lt;br /&gt;       chamaken$ rm -rf www_dir&lt;br /&gt;       rm: cannot remove `www_dir/file_in_www_dir': Permission denied&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;   また長いけど POSIX ACL でのお試し&lt;br /&gt;&lt;br /&gt;       chamaken$ cd /home/chamaken/public_html/&lt;br /&gt;       chamaken$ mkdir davacl&lt;br /&gt;       chamaken$ &lt;em&gt;chmod g+ws davacl&lt;/em&gt;&lt;br /&gt;       chamaken$ ls -ld davacl&lt;br /&gt;       drwxrwsr-x 2 chamaken chamaken 4096 May  3 19:55 davacl&lt;br /&gt;       chamaken$ &lt;em&gt;setfacl -m user:www-data:rwx davacl&lt;/em&gt;&lt;br /&gt;       chamaken$ ls -ld davacl&lt;br /&gt;       drwxrwsr-x+ 2 chamaken chamaken 4096 May  3 19:55 davacl&lt;br /&gt;       chamaken$ getfacl davacl&lt;br /&gt;       # file: davacl&lt;br /&gt;       # owner: chamaken&lt;br /&gt;       # group: chamaken&lt;br /&gt;       # flags: -s-&lt;br /&gt;       user::rwx&lt;br /&gt;       user:www-data:rwx&lt;br /&gt;       group::rwx&lt;br /&gt;       mask::rwx&lt;br /&gt;       other::r-x&lt;br /&gt;&lt;br /&gt;       chamaken$ &lt;em&gt;setfacl -d -m user:www-data:rwx davacl&lt;/em&gt;&lt;br /&gt;       chamaken$ cd davacl&lt;br /&gt;       chamaken$ touch chamaken_file&lt;br /&gt;       chamaken$ mkdir chamaken_dir&lt;br /&gt;       chamaken$ touch chamaken_dir/file_in_chamaken_dir&lt;br /&gt;       chamaken$ ls -ld chamaken_dir&lt;br /&gt;       drwxrwsr-x+ 2 chamaken chamaken 4096 May  3 19:57 chamaken_dir&lt;br /&gt;       chamaken$ getfacl chamaken_dir&lt;br /&gt;       # file: chamaken_dir&lt;br /&gt;       # owner: chamaken&lt;br /&gt;       # group: chamaken&lt;br /&gt;       # flags: -s-&lt;br /&gt;       user::rwx&lt;br /&gt;       user:www-data:rwx&lt;br /&gt;       group::rwx&lt;br /&gt;       mask::rwx&lt;br /&gt;       other::r-x&lt;br /&gt;       default:user::rwx&lt;br /&gt;       default:user:www-data:rwx&lt;br /&gt;       default:group::rwx&lt;br /&gt;       default:mask::rwx&lt;br /&gt;       default:other::r-x&lt;br /&gt;&lt;br /&gt;   www-data 側でも&lt;br /&gt;&lt;br /&gt;       www-data$ cd /home/chamaken/public_html/&lt;br /&gt;       www-data$ cd davacl&lt;br /&gt;       www-data$ touch www_file&lt;br /&gt;       www-data$ mkdir www_dir&lt;br /&gt;       www-data$ touch www_dir/file_in_www_dir&lt;br /&gt;       www-data$ ls -ld www_dir&lt;br /&gt;       drwxrwsr-x+ 2 www-data chamaken 4096 May  3 19:59 www_dir&lt;br /&gt;       www-data$ getfacl www_dir&lt;br /&gt;       # file: www_dir&lt;br /&gt;       # owner: www-data&lt;br /&gt;       # group: chamaken&lt;br /&gt;       # flags: -s-&lt;br /&gt;       user::rwx&lt;br /&gt;       user:www-data:rwx&lt;br /&gt;       group::rwx&lt;br /&gt;       mask::rwx&lt;br /&gt;       other::r-x&lt;br /&gt;       default:user::rwx&lt;br /&gt;       default:user:www-data:rwx&lt;br /&gt;       default:group::rwx&lt;br /&gt;       default:mask::rwx&lt;br /&gt;       default:other::r-x&lt;br /&gt;&lt;br /&gt;       www-data$ ls -l&lt;br /&gt;       total 8&lt;br /&gt;       drwxrwsr-x+ 2 chamaken   chamaken 4096 May  3 19:57 chamaken_dir&lt;br /&gt;       -rw-rw-r--+ 1 chamaken   chamaken    0 May  3 19:57 chamaken_file&lt;br /&gt;       drwxrwsr-x+ 2 www-data chamaken 4096 May  3 19:59 www_dir&lt;br /&gt;       -rw-rw-r--+ 1 www-data chamaken    0 May  3 19:59 www_file&lt;br /&gt;       www-data$ &lt;br /&gt;&lt;br /&gt;   で chamaken で作ったモノを削除&lt;br /&gt;&lt;br /&gt;       www-data$ rm -r chamaken_*&lt;br /&gt;       www-data$ &lt;br /&gt;&lt;br /&gt;   他方 chamaken 側でも www-data で作ったモノを削除&lt;br /&gt;&lt;br /&gt;       chamaken$ ls -l&lt;br /&gt;       total 4&lt;br /&gt;       drwxrwsr-x+ 2 www-data chamaken 4096 May  3 19:59 www_dir&lt;br /&gt;       -rw-rw-r--+ 1 www-data chamaken    0 May  3 19:59 www_file&lt;br /&gt;       chamaken$ rm -r *&lt;br /&gt;&lt;br /&gt;   で、前に作った実際の WebDAV 用ディレクトリに適用してみる&lt;br /&gt;&lt;br /&gt;       chamaken$ mv .webdav old.webdav&lt;br /&gt;       chamaken$ mkdir .webdav&lt;br /&gt;       chamaken$ chmod g+ws .webdav&lt;br /&gt;       chamaken$ setfacl -m user:www-data:rwx .webdav&lt;br /&gt;       chamaken$ setfacl -d -m user:www-data:rwx .webdav&lt;br /&gt;&lt;br /&gt;   外からアクセスしてみる&lt;br /&gt;&lt;br /&gt;       another_host# aptitude install davfs2&lt;br /&gt;       another_host# mkdir davmount&lt;br /&gt;       another_host# mount.davfs https://testing_webserver/webdav davmount&lt;br /&gt;       Please enter the username to authenticate with server&lt;br /&gt;       https://testing_webserver/webdav or hit enter for none.&lt;br /&gt;         Username: chamaken&lt;br /&gt;       Please enter the password to authenticate user chamaken with server&lt;br /&gt;       https://testing_webserver/webdav or hit enter for none.&lt;br /&gt;         Password:  &lt;br /&gt;       mount.davfs: the server certificate does not match the server name&lt;br /&gt;       (オレオレ使ってるぜ... と Warning)&lt;br /&gt;       ...&lt;br /&gt;       You only should accept this certificate, if you can&lt;br /&gt;       verify the fingerprint! The server might be faked&lt;br /&gt;       or there might be a man-in-the-middle-attack.&lt;br /&gt;       Accept certificate for this session? [y,N] y &lt;br /&gt;       another_host# ls davmount&lt;br /&gt;       lost+found&lt;br /&gt;       another_host# cp /etc/fstab davmount/&lt;br /&gt;&lt;br /&gt;   長くなるので割愛。双方でディレクトリ掘ってファイルコピーしてみたりした後&lt;br /&gt;   の削除も可能で、まぁ動いた&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8171920931895456115?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8171920931895456115/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8171920931895456115' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8171920931895456115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8171920931895456115'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/05/webdav-quota-on-linux.html' title='WebDAV quota on linux'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7032371926801772638</id><published>2011-05-01T15:25:00.000+09:00</published><updated>2011-05-01T15:25:18.699+09:00</updated><title type='text'>apt-cacher-ng</title><content type='html'>&lt;pre&gt;インストールマニアのつもりはないけど、仮想マシンを度々作るにあたって何か&lt;br /&gt;手軽にできないかな。えーっと &lt;a href="http://www.feyrer.de/g4u/"&gt;g4u&lt;/a&gt; だっけ? の debian 版は。と探してみたら&lt;br /&gt;&lt;a href="http://fai-project.org/"&gt;FAI (Fully Automatic Installation)&lt;/a&gt; というモノがあった。いつものごとく&lt;br /&gt;&lt;a href="http://fai-project.org/fai-guide/ar01s02.html"&gt;Quickstart - For the impatient user&lt;/a&gt; コレコレ。と眺め始めるも &lt;a href="http://fai-project.org/fai-guide/ar01s06.html#plan"&gt;明確な計画&lt;/a&gt;先&lt;br /&gt;に立たず一旦保留。ドキュメントの中で apt-proxy 使うみたいなことが書かれて&lt;br /&gt;いたけど squeeze になく、他をあたったところ&lt;ul&gt;&lt;li&gt;&lt;a&lt;br /&gt;&lt;br /&gt;href="http://packages.debian.org/squeeze/net/approx"&gt;approx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a&lt;br /&gt;href="http://packages.debian.org/squeeze/net/apt-cacher"&gt;apt-cacher&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a&lt;br /&gt;href="http://packages.debian.org/squeeze/net/apt-cacher-ng"&gt;apt-cacher-ng&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;と似たようなパッケージを発見。確かに epoch 時間は読みヅラいけど、まぁ。&lt;br /&gt;サーバ側は何もせず、クライアント側だけ /etc/apt を少々&lt;ul&gt;&lt;li&gt;/etc/apt/apt.conf.d/02proxy&lt;blockquote&gt;Acquire::http { Proxy "http://CacheServerIp:3142"; };&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;sources.list を&lt;ul&gt;&lt;li&gt;前 deb http://ftp.uni-kl.de/debian etch main&lt;/li&gt;&lt;li&gt;後 deb http://192.168.0.17:3142/ftp.uni-kl.de/debian etch main&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;のどちらか&lt;br /&gt;&lt;br /&gt;tap 接続なのでソレナリの bridge /etc/kvm-ifup 設定と netboot の準備した&lt;br /&gt;後にインストール&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;...の前にごめんなさい。&lt;a href="http://chamaken.blogspot.com/2011/04/tips-kvm-qemu-for-debian-squeeze-1.html"&gt;以前&lt;/a&gt; dhcpd.conf で二つ誤り。一点はファイル名&lt;br /&gt;&lt;br /&gt;    filename "pxelinux.0";&lt;br /&gt;&lt;br /&gt;ルートのスラッシュが必要らしく、正しくは&lt;br /&gt;&lt;br /&gt;    filename "/pxelinux.0";&lt;br /&gt;&lt;br /&gt;もう一点は failover らしき内容調子に乗って書いていたけど、できないそうで&lt;br /&gt;す。加えて isc-dhcpd の仕様でもないそうで、無理矢理稼動させようとしたと&lt;br /&gt;ころ&lt;br /&gt;&lt;br /&gt;    /etc/dhcp/master.conf line 1259: dynamic-bootp flag is not permitted for address&lt;br /&gt;            range dynamic-bootp 172.27.101.193 172.27.101.220;&lt;br /&gt;                                                          ^&lt;br /&gt;    range declarations where there is a failover&lt;br /&gt;    peer in scope.   If you wish to declare an&lt;br /&gt;    address range from which dynamic bootp leases&lt;br /&gt;    can be allocated, please declare it within a&lt;br /&gt;    pool declaration that also contains the "no&lt;br /&gt;    failover" statement.   The failover protocol&lt;br /&gt;    itself does not permit dynamic bootp - this&lt;br /&gt;    is not a limitation specific to the ISC DHCP&lt;br /&gt;    server.   Please don't ask me to defend this&lt;br /&gt;    until you have read and really tried to understand&lt;br /&gt;    the failover protocol specification.&lt;br /&gt;&lt;br /&gt;と叱られてしまいました。さて... と僅かばかりの試行錯誤、格闘してみたとこ&lt;br /&gt;ろの結果としては、当該 subnet では failover 使わない。が無難そう&lt;br /&gt;&lt;br /&gt;    ignore bootp;&lt;br /&gt;    ...&lt;br /&gt;    subnet 172.27.101.0 netmask 255.255.255.0 {&lt;br /&gt;        option routers 172.27.101.1;&lt;br /&gt;        option broadcast-address 172.27.101.255;&lt;br /&gt;        option domain-name-servers 172.27.1.1, 172.27.129.1;&lt;br /&gt;        option domain-name "mydomain.or.jp";&lt;br /&gt;        pool {&lt;br /&gt;            # ignore unknown-clients;&lt;br /&gt;            deny dynamic bootp clients;&lt;br /&gt;            failover peer "poolish";&lt;br /&gt;            range 172.27.101.65 172.27.101.190;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;としてあったところを&lt;br /&gt;&lt;br /&gt;    allow bootp;&lt;br /&gt;    ...&lt;br /&gt;    subnet 172.27.101.0 netmask 255.255.255.0 {&lt;br /&gt;        option routers 172.27.101.1;&lt;br /&gt;        option broadcast-address 172.27.101.255;&lt;br /&gt;        option domain-name-servers 172.27.1.1, 172.27.129.1;&lt;br /&gt;        option domain-name "mydomains.or.jp";&lt;br /&gt;&lt;br /&gt;        filename "/pxelinux.0";&lt;br /&gt;        next-server 172.27.1.1;&lt;br /&gt;&lt;br /&gt;        range 172.27.101.65 172.27.101.190;&lt;br /&gt;        range dynamic-bootp 172.27.101.193 172.27.101.220;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;として。こんなんで failover のよくある設定方法、dhcpd.conf と&lt;br /&gt;master.conf での master.conf があっちとこっちで違ってくると言う悲しい結&lt;br /&gt;果。他にも間違いあったら指摘いただけると嬉しいです。&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;と、気を取り直して&lt;br /&gt;&lt;br /&gt;    # &lt;em&gt;kvm -net nic,model=virtio -net tap -boot n -curses netest.img&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;とすると virtio で PXE が稼動開始して下記テキスト画面&lt;br /&gt;&lt;br /&gt;        Starting SeaBIOS (version 0.5.1-20101112_103537-polaris)                        &lt;br /&gt;                                                                                                                                       &lt;br /&gt;        Booting from virtio-net.zrom 5.4.4 (GPL) ether...                               &lt;br /&gt;        ROM segment 0xc900 length 0x8000 reloc 0x00000000                               &lt;br /&gt;        Etherboot 5.4.4 (GPL) http://etherboot.org                                      &lt;br /&gt;        Drivers: VIRTIO-NET   Images: NBI ELF PXE   Exports: PXE                        &lt;br /&gt;        Protocols: DHCP TFTP                                                            &lt;br /&gt;        Relocating _text from: [00087780,0009f310) to [07ee8470,07f00000)               &lt;br /&gt;        Boot from (N)etwork or (Q)uit?                                                  &lt;br /&gt;                                                                                &lt;br /&gt;        Probing pci nic...                                                              &lt;br /&gt;        Probing isa nic...                                                              &lt;br /&gt;        &lt;sleep&gt;                                                                         &lt;br /&gt;        Boot from (N)etwork or (Q)uit?                                                  &lt;br /&gt;                                                                                &lt;br /&gt;        Probing pci nic...                                                              &lt;br /&gt;        [virtio-net]I/O address 0x0000c020, IRQ #11                                     &lt;br /&gt;        MAC address 52:54:00:12:34:56                                                   &lt;br /&gt;        Searching for server (DHCP)....&lt;br /&gt;&lt;br /&gt;ちょっと待つと、いつもの真っ黒画面の真ん中に&lt;br /&gt;&lt;br /&gt;        640 x 480 Graphic mode &lt;br /&gt;&lt;br /&gt;何度も書いている内に覚えたエコーバックないけど ''[スペース] linux text''&lt;br /&gt;更に覚えられず F8 見ながら install vga=normal fb=false。さくさくっと進ん&lt;br /&gt;で debian アーカイブミラー選択の下記画面になったら、一番上&lt;br /&gt;&lt;br /&gt;          ====== [!] Choose a mirror of the Debian archive ======                       &lt;br /&gt;        =                                                                         =   &lt;br /&gt;        = The goal is to find a mirror of the Debian archive that is close to     =   &lt;br /&gt;        = you on the network -- be aware that nearby countries, or even your      =   &lt;br /&gt;        = own, may not be the best choice.                                        =   &lt;br /&gt;        =                                                                         =   &lt;br /&gt;        = Debian archive mirror country:                                          =   &lt;br /&gt;        =                                                                         =   &lt;br /&gt;        =                      enter information manually  =                      =   &lt;br /&gt;        =                      Argentina                   =                      =   &lt;br /&gt;        =                      Australia                   =                      =   &lt;br /&gt;        =                      Austria                     =                      =   &lt;br /&gt;        =                      Bangladesh                  =                      =   &lt;br /&gt;        =                      Belarus                     =                      =   &lt;br /&gt;        =                      Belgium                     =                      =   &lt;br /&gt;        =                      Bosnia and Herzegovina      =                      =   &lt;br /&gt;        =                      Brazil                      =                      =   &lt;br /&gt;        =                      Bulgaria                    =                      =   &lt;br /&gt;        =                                                                         =   &lt;br /&gt;        =     &lt;Go Back&gt;                                                           =   &lt;br /&gt;        =                                                                         =   &lt;br /&gt;        =========================                                                     &lt;br /&gt;&lt;br /&gt;enter information manually を選択すると、こんな画面&lt;br /&gt;&lt;br /&gt;        ===== [!!] Choose a mirror of the Debian archive =====               =   &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        = Please enter the hostname of the mirror from which Debian will be  =     &lt;br /&gt;        = downloaded.                                                        =     &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        = An alternate port can be specified using the standard              =     &lt;br /&gt;        = [hostname]:[port] format.                                          =     &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        = Debian archive mirror hostname:                                    =     &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        = mirror____________________________________________________________ =     &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        =     &lt;Go Back&gt;                                       &lt;Continue&gt;     =     &lt;br /&gt;        =                                                                    =     &lt;br /&gt;        =======================                                                &lt;br /&gt;&lt;br /&gt;この mirror hostname: に上の例であれば&lt;br /&gt;&lt;br /&gt;    192.168.0.17:3142&lt;br /&gt;&lt;br /&gt;として Continue。長くなるので省略しちゃうけど、次の画面の&lt;br /&gt;Debian archive mirror directory: を /ftp.uni-kl.de/debian として&lt;br /&gt;Continue。更に次の proxy は何もせず Continue で OK。一回目は取りに行っちゃ&lt;br /&gt;うけど、二回目以降は確認しに行くだけなので、速くなる...ハズ&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7032371926801772638?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7032371926801772638/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7032371926801772638' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7032371926801772638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7032371926801772638'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/05/apt-cacher-ng.html' title='apt-cacher-ng'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8044574262846614675</id><published>2011-05-01T09:53:00.000+09:00</published><updated>2011-05-01T09:53:14.606+09:00</updated><title type='text'>apache webdav つづきの Tips</title><content type='html'>&lt;pre&gt;* URL の変更&lt;br /&gt;   https://servername/~chamaken/.webdav がちょっと格好悪いので /webdav&lt;br /&gt;   でアクセス。認証ユーザによって URL を変更する方法。いくつかあるらしい&lt;br /&gt;   けど、説明ページの多い mod_rewrite を利用。&lt;br /&gt;&lt;br /&gt;   # ~ をなくすには AliasMatch ^/([^/]+)/(.*) /home/$1/.webdav/$2 だそうだ&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;a2enmod rewrite&lt;/em&gt;&lt;br /&gt;        Enabling module rewrite.&lt;br /&gt;        Run '/etc/init.d/apache2 restart' to activate new configuration!&lt;br /&gt;        # &lt;em&gt;mv default-ssl default-ssl.dpkg-dist&lt;/em&gt;&lt;br /&gt;        # &lt;em&gt;cp default-ssl.dpkg-dist default-ssl&lt;/em&gt;&lt;br /&gt;        # &lt;em&gt;emacs default-ssl&lt;/em&gt;&lt;br /&gt;        # &lt;em&gt;diff -uw default-ssl.dpkg-dist default-ssl&lt;/em&gt;&lt;br /&gt;        --- default-ssl.dpkg-dist       2011-03-23 06:13:14.000000000 +0900&lt;br /&gt;        +++ default-ssl 2011-04-30 22:28:06.000000000 +0900&lt;br /&gt;        @@ -168,5 +168,13 @@&lt;br /&gt;                # MSIE 7 and newer should be able to use keepalive&lt;br /&gt;                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown&lt;br /&gt; &lt;br /&gt;        +        # mod_rewrite&lt;br /&gt;        +        RewriteEngine on&lt;br /&gt;        +        RewriteLog "/var/log/apache2/rewrite.log"&lt;br /&gt;        +        RewriteLogLevel 1&lt;br /&gt;        +&lt;br /&gt;        +        RewriteCond %{LA-U:REMOTE_USER} (.*)&lt;br /&gt;        +        RewriteRule ^/webdav(.*) /~%{LA-U:REMOTE_USER}/public_html/.webdav$1 [NS,L]&lt;br /&gt;        +        RewriteRule ^/private(.*) /~%{LA-U:REMOTE_USER}/public_html/private$1 [NS,L]&lt;br /&gt;         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;         &amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;br /&gt;   これで https://servername/webdav とアクセスすると認証したユーザ名で、&lt;br /&gt;   ソレナリの URL に変換される&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* &lt;a href="http://packages.debian.org/stable/davfs2"&gt;davfs2&lt;/a&gt;&lt;br /&gt;   webdab アクセスするユーザの所属するグループを増やしてよいのであれば、&lt;br /&gt;   設定ファイルは特段変更せず当該ユーザを davfs2 グループに加えてあげる。&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;aptitude install davfs2&lt;/em&gt;&lt;br /&gt;       ...&lt;br /&gt;       # &lt;em&gt;adduser chamaken davfs2&lt;/em&gt;&lt;br /&gt;       Adding user `chamaken' to group `davfs2' ...&lt;br /&gt;       Adding user chamaken to group davfs2&lt;br /&gt;       Done.&lt;br /&gt;&lt;br /&gt;   やっぱり root で引き続き。/etc/fstab に追記&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /etc&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;cp fstab fstab.old&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;vi fstab&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;diff -uw fstab.old fstab&lt;/em&gt;&lt;br /&gt;       --- fstab.old 2011-05-01 08:07:33.000000000 +0900&lt;br /&gt;       +++ fstab 2011-05-01 08:08:59.000000000 +0900&lt;br /&gt;       @@ -11,3 +11,5 @@&lt;br /&gt;        # swap was on /dev/sda5 during installation&lt;br /&gt;        /dev/sda5 none            swap    sw              0 0&lt;br /&gt;        /dev/scd0 /media/cdrom0   udf,iso9660 user,noauto 0 0&lt;br /&gt;       +https://localhost/webdav /home/chamaken/webdav davfs defaults,user,noauto 0 0&lt;br /&gt;       +&lt;br /&gt;       # &lt;br /&gt;&lt;br /&gt;   うーん、ちょっと微妙だけど一般ユーザから操作したいので setuid&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;chmod u+s /usr/sbin/mount.davfs&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   一般ユーザアカウントで&lt;br /&gt;&lt;br /&gt;       $ &lt;em&gt;mount webdav&lt;/em&gt;&lt;br /&gt;       Please enter the username to authenticate with server&lt;br /&gt;       https://localhost/webdav or hit enter for none.&lt;br /&gt;         Username: &lt;em&gt;chamaken&lt;/em&gt;&lt;br /&gt;       Please enter the password to authenticate user chamas with server&lt;br /&gt;       https://localhost/webdav or hit enter for none.&lt;br /&gt;         Password:  &lt;em&gt;パスワード&lt;/em&gt;&lt;br /&gt;       /sbin/mount.davfs: the server certificate does not match the server name&lt;br /&gt;       /sbin/mount.davfs: the server certificate is not trusted&lt;br /&gt;         issuer:      oreore&lt;br /&gt;         subject:     oreore&lt;br /&gt;         identity:    oreore.invalid.net&lt;br /&gt;         fingerprint: aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88:99:00:11:22:33:44&lt;br /&gt;       You only should accept this certificate, if you can&lt;br /&gt;       verify the fingerprint! The server might be faked&lt;br /&gt;       or there might be a man-in-the-middle-attack.&lt;br /&gt;       Accept certificate for this session? [y,N] &lt;em&gt;y&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   何だか自分のホーム配下に間接アクセスはもぞかしいいけど、まぁ&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;* (意味がないけど) quota&lt;br /&gt;   &lt;a href="http://www.google.co.jp/search?q=apache+webdav+quota"&gt;apache webdav quota で調べる&lt;/a&gt;とモジュールがあったり &lt;a href="http://www.webdav.org/mod_dav/faq/#01-06"&gt;FAQ&lt;/a&gt; では obsolute&lt;br /&gt;   になったモジュール使うかコンパイルし直してハンドラ書けとかあるけど、&lt;br /&gt;   何かソコまでやる元気がないと言うか...&lt;br /&gt;&lt;br /&gt;   で、あまり意味がなくなってしまったけど、普通の quota 設定も備忘録とし&lt;br /&gt;   て残しておこうかと。&lt;a href="http://www.howtoforge.com/how-to-set-up-journaled-quota-on-debian-lenny"&gt;How To Set Up Journaled Quota On Debian Lenny&lt;/a&gt;&lt;br /&gt;   そのままとはちょっと違っていたので&lt;br /&gt;&lt;br /&gt;   # げっ.../home 切ってないし&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;aptitude install quota quotatool&lt;/em&gt;&lt;br /&gt;       ...&lt;br /&gt;       # &lt;em&gt;cp fstab fstab.old&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;vi fstab&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;diff -uw fstab.old fs&lt;/em&gt;&lt;br /&gt;       --- fstab.old 2011-05-01 08:08:59.000000000 +0900&lt;br /&gt;       +++ fstab 2011-05-01 08:39:53.000000000 +0900&lt;br /&gt;       @@ -7,7 +7,9 @@&lt;br /&gt;        # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;&lt;br /&gt;        proc            /proc           proc    defaults        0       0&lt;br /&gt;        # / was on /dev/sda1 during installation&lt;br /&gt;       -/dev/sda1 / ext3    errors=remount-ro 0       1&lt;br /&gt;       +/dev/sda1 / ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1&lt;br /&gt;        # swap was on /dev/sda5 during installation&lt;br /&gt;&lt;br /&gt;   ここで touch /aquota.user /aquota.group すると後でサイズおかしいとか&lt;br /&gt;   言われるので作らずに&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;mount -o remount /&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;quotacheck -avugm&lt;/em&gt;&lt;br /&gt;       quotacheck: Scanning /dev/sda1 [/] done&lt;br /&gt;       quotacheck: Cannot stat old user quota file: No such file or directory&lt;br /&gt;       quotacheck: Cannot stat old group quota file: No such file or directory&lt;br /&gt;       quotacheck: Cannot stat old user quota file: No such file or directory&lt;br /&gt;       quotacheck: Cannot stat old group quota file: No such file or directory&lt;br /&gt;       quotacheck: Checked 17441 directories and 259009 files&lt;br /&gt;       quotacheck: Old file not found.&lt;br /&gt;       quotacheck: Old file not found.&lt;br /&gt;       # &lt;em&gt;ls -l /aquota.*&lt;/em&gt;&lt;br /&gt;       -rw------- 1 root root 10240 May  1 08:40 /aquota.group&lt;br /&gt;       -rw------- 1 root root  9216 May  1 08:40 /aquota.user&lt;br /&gt;       # &lt;em&gt;quotaon -avug&lt;/em&gt;&lt;br /&gt;       /dev/sda1 [/]: group quotas turned on&lt;br /&gt;       /dev/sda1 [/]: user quotas turned on&lt;br /&gt;&lt;br /&gt;   &lt;a href="http://www.google.com/search?q=linux+quota"&gt;linux quota&lt;/a&gt; で検索すると、ここで edquota になるんだけど、サイズ指定よ&lt;br /&gt;   くわかんなかったりエディタでの編集煩しく quotatool 使用。quotatool(8)&lt;br /&gt;   眺めた後に&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;id -u chamaken&lt;/em&gt;&lt;br /&gt;       1000&lt;br /&gt;       # &lt;em&gt;quotatool -u 1000 -d /&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;quotatool -b -u 1000 -q $((1024 * 32))MB -l $((1024 * 32 - 128))MB /&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;quotatool -u 1000 -d /&lt;/em&gt;&lt;br /&gt;       1000 / 4022884 33554432 33423360 0 140959 0 0 0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8044574262846614675?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8044574262846614675/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8044574262846614675' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8044574262846614675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8044574262846614675'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/05/apache-webdav-tips.html' title='apache webdav つづきの Tips'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1094295143244143118</id><published>2011-05-01T01:33:00.000+09:00</published><updated>2011-05-01T01:33:01.882+09:00</updated><title type='text'>apache webdav</title><content type='html'>&lt;pre&gt;on debian squeeze は省略。ユーザディレクトリ配下に方法変えつつ色々と&lt;br /&gt;https アクセス。いわゆる$HOME/public_html はそのまま。その下の private は&lt;br /&gt;mod_authz_owner でRequire file-owner。.webdav は文字通り webdav で。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. apache などのインストール&lt;br /&gt;       # &lt;em&gt;aptitude install apache2 libapache2-mod-auth-pam \&lt;/em&gt;&lt;br /&gt;       &amp;gt; &lt;em&gt;libpam-radius-auth libapache2-mod-encoding&lt;/em&gt;&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://packages.debian.org/stable/libapache2-mod-auth-pam"&gt;libapache2-mod-auth-pam&lt;/a&gt; は認証に PAM を使うため&lt;/li&gt;&lt;li&gt;&lt;a href="http://packages.debian.org/stable/libpam-radius-auth"&gt;libpam-radius-auth&lt;/a&gt; PAM にて RADIUS を使うため&lt;/li&gt;&lt;li&gt;libapache2-mod-encoding Windows をクライアントとした場合の&lt;a href="http://www.google.com/search?hl=ja&amp;q=webdav+mod_encoding"&gt;ファイル名文字化け対処らしい...&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;2. https:443 のみ有効として、ソレナリのモジュール準備&lt;br /&gt;   サイトファイル? と言うのかしら?&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;a2dissite&lt;/em&gt;&lt;br /&gt;       Your choices are: default&lt;br /&gt;       Which site(s) do you want to disable (wildcards ok)?&lt;br /&gt;       &lt;em&gt;default&lt;/em&gt;&lt;br /&gt;       Site default disabled.&lt;br /&gt;       Run '/etc/init.d/apache2 reload' to activate new configuration!&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;a2ensite&lt;/em&gt;&lt;br /&gt;       Your choices are: default default-ssl&lt;br /&gt;       Which site(s) do you want to enable (wildcards ok)?&lt;br /&gt;       &lt;em&gt;default-ssl&lt;/em&gt;&lt;br /&gt;       Enabling site default-ssl.&lt;br /&gt;       Run '/etc/init.d/apache2 reload' to activate new configuration!&lt;br /&gt;&lt;br /&gt;   次にモジュール&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;a2enmod&lt;/em&gt;&lt;br /&gt;       Your choices are: actions alias ...&lt;br /&gt;       Which module(s) do you want to enable (wildcards ok)?&lt;br /&gt;       &lt;em&gt;auth_pam authz_owner dav* ssl userdir&lt;/em&gt;&lt;br /&gt;       Module auth_pam already enabled&lt;br /&gt;       Enabling module authz_owner.&lt;br /&gt;       ...&lt;br /&gt;       Enabling module ssl.&lt;br /&gt;       See /usr/share/doc/apache2.2-common/README.Debian.gz on how to&lt;br /&gt;           configure SSL and create self-signed certificates.&lt;br /&gt;       Enabling module userdir.&lt;br /&gt;       Run '/etc/init.d/apache2 restart' to activate new configuration!&lt;br /&gt;&lt;br /&gt;   オレオレ証明書の説明はまぁデフォルトでも動くので割愛、ごめんなさい。&lt;br /&gt;   こちらリスンポートのファイルでも無効に&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /etc/apache2/&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;cp ports.conf ports.conf.dpkg-dist&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;emacs ports.conf&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;diff -uw ports.conf.dpkg-dist ports.conf&lt;/em&gt;&lt;br /&gt;       --- ports.conf.dpkg-dist 2011-04-30 20:48:43.000000000 +0900&lt;br /&gt;       +++ ports.conf 2011-04-30 20:49:11.000000000 +0900&lt;br /&gt;       @@ -5,8 +5,8 @@&lt;br /&gt;        # Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and&lt;br /&gt;        # README.Debian.gz&lt;br /&gt; &lt;br /&gt;       -NameVirtualHost *:80&lt;br /&gt;       -Listen 80&lt;br /&gt;       +# NameVirtualHost *:80&lt;br /&gt;       +# Listen 80&lt;br /&gt; &lt;br /&gt;        &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;            # If you add NameVirtualHost *:443 here, you will also have to change&lt;br /&gt;&lt;br /&gt;   一応再起動 /etc/init.d/apache2 restart して確認。http://servername や&lt;br /&gt;   https://servername にアクセスしたり、その他として&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;netstat -aptn | grep apache&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;lsof -i | grep apache&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   で TCP 80 番で聞き耳たてていないか&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. libapache2-mod-auth-pam の設定&lt;br /&gt;   /usr/share/doc/libpam-radius-auth/examples/pam_example などを眺めつつ&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /etc/pam.d/&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;cp apache2 apache2.dpkg-dist&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;emacs apache2&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;diff -uw apache2.dpkg-dist apache2&lt;/em&gt;&lt;br /&gt;       --- apache2.dpkg-dist 2011-04-30 20:56:02.000000000 +0900&lt;br /&gt;       +++ apache2 2011-04-30 20:56:52.000000000 +0900&lt;br /&gt;       @@ -1,2 +1,4 @@&lt;br /&gt;       +auth    sufficient      pam_radius_auth.so&lt;br /&gt;       +account sufficient      pam_radius_auth.so&lt;br /&gt;        @include common-auth&lt;br /&gt;        @include common-account&lt;br /&gt;&lt;br /&gt;   apache 〜 PAM 〜 freeradius 〜 PAM と、とっても遠回りだけど。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. libpam-radius-auth の設定&lt;br /&gt;   &lt;a href="http://chamaken.blogspot.com/2011/04/freeradius-rlmpap-on-debian-squeeze.html"&gt;前回の FreeRADIUS &lt;/a&gt;を使うとして&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /etc&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;cp pam_radius_auth.conf pam_radius_auth.conf.dpkg-dist&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;emacs pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;diff -uw pam_radius_auth.conf.dpkg-dist pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       --- pam_radius_auth.conf.dpkg-dist 2011-04-30 20:54:40.000000000 +0900&lt;br /&gt;       +++ pam_radius_auth.conf 2011-04-30 20:54:48.000000000 +0900&lt;br /&gt;       @@ -23,8 +23,7 @@&lt;br /&gt;        #  deciding that the server has failed to respond.&lt;br /&gt;        #&lt;br /&gt;        # server[:port] shared_secret      timeout (s)&lt;br /&gt;       -127.0.0.1 secret             1&lt;br /&gt;       -other-server    other-secret       3&lt;br /&gt;       +127.0.0.1 ZkPbwZ17bCDEx7Kx 2&lt;br /&gt; &lt;br /&gt;        #&lt;br /&gt;        # having localhost in your radius configuration is a Good Thing.&lt;br /&gt;&lt;br /&gt;   apache が、この pam_radius_auth.conf を読む必要があるので&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;ls -l pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       -rw------- 1 root root 1257 Apr 30 20:54 pam_radius_auth.conf&lt;br /&gt;       # &lt;em&gt;chgrp www-data pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;chmod 0640 pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;ls -l pam_radius_auth.conf&lt;/em&gt;&lt;br /&gt;       -rw-r----- 1 root www-data 1257 Apr 30 20:54 pam_radius_auth.conf&lt;br /&gt;&lt;br /&gt;   /etc/shadow を www-data グループにして読み取らせるよりは、少し安心で&lt;br /&gt;   きる気がしてる&lt;br /&gt;&lt;br /&gt;5. ユーザディレクトリ作成&lt;br /&gt;   一般ユーザで&lt;br /&gt;&lt;br /&gt;       $ &lt;em&gt;cd&lt;/em&gt;&lt;br /&gt;       $ &lt;em&gt;mkdir -p public_html/private&lt;/em&gt;&lt;br /&gt;       $ &lt;em&gt;ls -ld public_html&lt;/em&gt;&lt;br /&gt;       drwxr-xr-x 3 chamaken chamaken 4096 Apr 30 21:02 public_html&lt;br /&gt;       $ &lt;em&gt;ls -ld public_html/private/&lt;/em&gt;&lt;br /&gt;       drwxr-xr-x 2 chamaken chamaken 4096 Apr 30 21:02 public_html/private/&lt;br /&gt;       $ &lt;em&gt;echo 'My private content works!' \&lt;/em&gt;&lt;br /&gt;       &amp;gt; &lt;em&gt;&amp;gt; public_html/private/index.html&lt;/em&gt;&lt;br /&gt;   &lt;br /&gt;   最後の一行が Require file-owner で必要になるのか、ならないのかはっき&lt;br /&gt;   りせず。Options Indexes を指定しても...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. public_html アクセスの設定 - mod_authz_owner だけ&lt;br /&gt;   バックアップ取りつつ &lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;ls -l userdir.*&lt;/em&gt;&lt;br /&gt;       lrwxrwxrwx 1 root root  30 Apr 30 20:47 userdir.conf -&amp;gt; ../mods-available/userdir.conf&lt;br /&gt;       -rw-r--r-- 1 root root 604 Apr 30 21:06 userdir.conf.dpkg-dist&lt;br /&gt;       lrwxrwxrwx 1 root root  30 Apr 30 20:47 userdir.load -&amp;gt; ../mods-available/userdir.load&lt;br /&gt;       # &lt;em&gt;mv userdir.conf userdir.conf.dpkg-dist&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;cp userdir.conf.dpkg-dist userdir.conf&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;ls -l userdir.*&lt;/em&gt;&lt;br /&gt;       -rw-r--r-- 1 root root 604 Apr 30 21:07 userdir.conf&lt;br /&gt;       lrwxrwxrwx 1 root root  30 Apr 30 20:47 userdir.conf.dpkg-dist -&amp;gt; ../mods-available/userdir.conf&lt;br /&gt;       lrwxrwxrwx 1 root root  30 Apr 30 20:47 userdir.load -&amp;gt; ../mods-available/userdir.load&lt;br /&gt;&lt;br /&gt;   設定ファイル編集。private はディレクトリインデックスせず、PAM 認証で&lt;br /&gt;   ファイルオーナーが同じ場合のみアクセス可&lt;br /&gt;&lt;br /&gt;      # &lt;em&gt;emacs userdir.conf&lt;/em&gt;&lt;br /&gt;      ...&lt;br /&gt;      # &lt;em&gt;diff -uw userdir.conf.dpkg-dist userdir.conf&lt;/em&gt;&lt;br /&gt;      --- userdir.conf.dpkg-dist 2011-03-23 06:13:14.000000000 +0900&lt;br /&gt;      +++ userdir.conf 2011-04-30 21:10:29.000000000 +0900&lt;br /&gt;      @@ -5,6 +5,9 @@&lt;br /&gt;               &amp;lt;Directory /home/*/public_html&amp;gt;&lt;br /&gt;                       AllowOverride FileInfo AuthConfig Limit Indexes&lt;br /&gt;                       Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt;      +&lt;br /&gt;      +               IndexIgnore private&lt;br /&gt;      +&lt;br /&gt;                       &amp;lt;Limit GET POST OPTIONS&amp;gt;&lt;br /&gt;                               Order allow,deny&lt;br /&gt;                               Allow from all&lt;br /&gt;      @@ -14,5 +17,20 @@&lt;br /&gt;                               Deny from all&lt;br /&gt;                       &amp;lt;/LimitExcept&amp;gt;&lt;br /&gt;               &amp;lt;/Directory&amp;gt;&lt;br /&gt;      -&amp;lt;/IfModule&amp;gt;&lt;br /&gt; &lt;br /&gt;      +       &amp;lt;Directory /home/*/public_html/private&amp;gt;&lt;br /&gt;      +               AllowOverride FileInfo AuthConfig Limit Indexes&lt;br /&gt;      +               Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt;      +&lt;br /&gt;      +               AuthPAM_Enabled On&lt;br /&gt;      +               AuthPAM_FallThrough Off&lt;br /&gt;      +               AuthBasicAuthoritative Off&lt;br /&gt;      +               AuthUserFile /dev/null&lt;br /&gt;      +&lt;br /&gt;      +               AuthType Basic&lt;br /&gt;      +               AuthName "Your Private Contets"&lt;br /&gt;      +&lt;br /&gt;      +               Require file-owner&lt;br /&gt;      +               Satisfy All&lt;br /&gt;      +       &amp;lt;/Directory&amp;gt;&lt;br /&gt;      +&amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;br /&gt;   AuthBasicAuthoritative Off が結構ハマった。AuthUserFile /dev/null は&lt;br /&gt;   ログがうるさいので&lt;br /&gt;&lt;br /&gt;7. ちょっと確認&lt;br /&gt;   また再起動 /etc/init.d/apache2 restart してから、ブラウザ何でも良いので&lt;br /&gt;&lt;br /&gt;       https://servername/~chamaken&lt;br /&gt;       Index of /~chamaken&lt;br /&gt;       [ICO]   Name    Last modified   Size    Description&lt;br /&gt;       [DIR]   Parent Directory                -        &lt;br /&gt;       Apache/2.2.16 (Debian) Server at decoh4 Port 443/&lt;br /&gt;&lt;br /&gt;   うん。private がインデックスされず&lt;br /&gt;&lt;br /&gt;       https://servername/~chamaken/private&lt;br /&gt;       My private content works! &lt;br /&gt;&lt;br /&gt;   うん、ちょーさみしーコンテンツ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. webdav 設定&lt;br /&gt;   なかなか悲しいかな、どうしたって apache 稼動ユーザ権限が必要な模様。&lt;br /&gt;   &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_dav.html"&gt;&lt;br /&gt;   mod_dav がファイルを操作できるようにするためには、 管理下のディレクト&lt;br /&gt;   リとファイルとに Apache が実行されている User と Group で書き込み可能&lt;br /&gt;   である必要があります。 新しく作成されるファイルもこの User と Group に&lt;br /&gt;   所有される ことになります。この理由から、そのアカウントへのアクセスを&lt;br /&gt;   制御することは 重要です。DAV リポジトリは Apache 専用のものだとみなさ&lt;br /&gt;   れています。 Apache 以外の方法でファイルを修正すること (例えば FTP や&lt;br /&gt;   ファイルシステム 用のツールなどを使って) は許可されていません。&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   suexec じゃないけど sudir とかないのかしら。これができれば quota とか&lt;br /&gt;   ローカルアカウントのユーザが気にせず読み書き... と思ったけど webdav&lt;br /&gt;   プロトコルでのロックとか考えると、ローカルファイルとして操作するので&lt;br /&gt;   はなく webdav としてマウントして使うべきか。&lt;br /&gt;&lt;br /&gt;   ローカルユーザのホームディレクトリ配下なんだけど root になって&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;mkdir /home/chamaken/public_html/.webdav&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;chown www-data.www-data /home/chamaken/public_html/.webdav&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;ls -ld !$&lt;/em&gt;&lt;br /&gt;       ls -ld /home/chamaken/public_html/.webdav&lt;br /&gt;       drwxr-xr-x 2 www-data www-data 4096 Apr 30 21:04 /home/chamaken/public_html/.webdav&lt;br /&gt;&lt;br /&gt;   userdir 設定の更新&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cp userdir.conf userdir.conf.private&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;emacs userdir.conf&lt;/em&gt;&lt;br /&gt;       ...&lt;br /&gt;       # &lt;em&gt;diff -uw userdir.conf.private userdir.conf&lt;/em&gt;&lt;br /&gt;       --- userdir.conf.private        2011-04-30 21:45:04.000000000 +0900&lt;br /&gt;       +++ userdir.conf        2011-04-30 21:45:15.000000000 +0900&lt;br /&gt;       @@ -6,7 +6,7 @@&lt;br /&gt;                       AllowOverride FileInfo AuthConfig Limit Indexes&lt;br /&gt;                       Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt; &lt;br /&gt;       -               IndexIgnore private&lt;br /&gt;       +               IndexIgnore private .webdav&lt;br /&gt; &lt;br /&gt;                       &amp;lt;Limit GET POST OPTIONS&amp;gt;&lt;br /&gt;                               Order allow,deny&lt;br /&gt;       @@ -33,4 +33,31 @@&lt;br /&gt;                       Require file-owner&lt;br /&gt;                       Satisfy All&lt;br /&gt;               &amp;lt;/Directory&amp;gt;&lt;br /&gt;       +&lt;br /&gt;       +        &amp;lt;Directory /home/*/public_html/.webdav&amp;gt;&lt;br /&gt;       +                AllowOverride FileInfo AuthConfig Limit Indexes&lt;br /&gt;       +                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt;       +&lt;br /&gt;       +                AuthPAM_Enabled On&lt;br /&gt;       +                AuthPAM_FallThrough Off&lt;br /&gt;       +                AuthBasicAuthoritative Off&lt;br /&gt;       +                AuthUserFile /dev/null&lt;br /&gt;       +&lt;br /&gt;       +                AuthType Basic&lt;br /&gt;       +                AuthName "Your WEBDAV Authentication"&lt;br /&gt;       +&lt;br /&gt;       +                DAV On&lt;br /&gt;       +&lt;br /&gt;       +                &amp;lt;LimitExcept GET POST OPTIONS&amp;gt;&lt;br /&gt;       +                        Order allow,deny&lt;br /&gt;       +                        Allow from all&lt;br /&gt;       +                &amp;lt;/LimitExcept&amp;gt;&lt;br /&gt;       +                Satisfy All&lt;br /&gt;       +&lt;br /&gt;       +                ForceType text/plain&lt;br /&gt;       +        &amp;lt;/Directory&amp;gt;&lt;br /&gt;       +&lt;br /&gt;       +       &amp;lt;Directory /home/chamaken/public_html/.webdav&amp;gt;&lt;br /&gt;       +               Require user chamaken&lt;br /&gt;       +       &amp;lt;/Directory&amp;gt;&lt;br /&gt;        &amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;br /&gt;   最後の方の Require user を個々ディレクトリ毎に指定するのが少々切ない。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. webdav アクセス&lt;br /&gt;   手元の環境なら &lt;a href="http://www.google.com/search?q=nautilus+webdav&amp;ie=utf-8"&gt;nautilus webdav&lt;/a&gt;。Windows からならば&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;a2enmod encoding&lt;/em&gt;&lt;br /&gt;       Enabling module encoding.&lt;br /&gt;       Run '/etc/init.d/apache2 restart' to activate new configuration!&lt;br /&gt;       # &lt;em&gt;emacs /etc/apache2/mods-enabled/encoding.conf&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   で&lt;a href="http://www.google.com/search?hl=ja&amp;q=webdav+mod_encoding"&gt;適切に設定&lt;/a&gt;した後の方が良いのかしら。~/chamaken/.webdav はちょっと見&lt;br /&gt;   栄えが悪かったりするので、その他 Tips は次回に&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1094295143244143118?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1094295143244143118/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1094295143244143118' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1094295143244143118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1094295143244143118'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/05/apache-webdav.html' title='apache webdav'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8048899747066946501</id><published>2011-04-30T17:37:00.000+09:00</published><updated>2011-04-30T17:37:50.027+09:00</updated><title type='text'>freeradius rlm_pap on debian squeeze</title><content type='html'>&lt;pre&gt;HTML がわかっていず面倒なので &amp;lt;pre&amp;gt; と FireFox extension の &lt;a href="https://addons.mozilla.org/ja/firefox/addon/its-all-text/"&gt;It's All Text!&lt;/a&gt;&lt;br /&gt;emacsclient &amp;amp; auto-fill-mode &amp;amp; set-fill-column 72 あたりで (C-x f)&lt;br /&gt;&lt;br /&gt;0. インストールの前に&lt;br /&gt;   直に &lt;file&gt;/etc/passwd&lt;/file&gt; を触らせるのではなく &lt;a href=http://www.kernel.org/pub/linux/libs/pam/&gt;PAM&lt;/a&gt; 経由。一応インストール前の&lt;br /&gt;   状態を確認&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cd /etc&lt;/em&gt;&lt;br /&gt;       # &lt;em&gt;ls -l passwd group shadow gshadow&lt;/em&gt;&lt;br /&gt;       -rw-r--r-- 1 root root    820 Apr 30 14:03 group&lt;br /&gt;       -rw-r----- 1 root shadow  679 Apr 30 14:03 gshadow&lt;br /&gt;       -rw-r--r-- 1 root root   1584 Apr 30 14:03 passwd&lt;br /&gt;       -rw-r----- 1 root shadow 1348 Apr 30 14:03 shadow&lt;br /&gt;       # &lt;em&gt;grep freerad passwd group shadow gshadow&lt;/em&gt;N&lt;br /&gt;       # &lt;em&gt;ls -l /etc/pam.d/radiusd&lt;/em&gt;&lt;br /&gt;       ls: cannot access /etc/pam.d/radiusd: No such file or directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. インストール&lt;br /&gt;   そのまま&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;aptitude install freeradius&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   何も問われず。で、何されたか? を確認&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;ls -l passwd group shadow gshadow&lt;/em&gt;&lt;br /&gt;       -rw-r--r-- 1 root root    849 Apr 30 15:26 group&lt;br /&gt;       -rw-r----- 1 root shadow  705 Apr 30 15:26 gshadow&lt;br /&gt;       -rw-r--r-- 1 root root   1630 Apr 30 15:26 passwd&lt;br /&gt;       -rw-r----- 1 root shadow 1377 Apr 30 15:26 shadow&lt;br /&gt;       # &lt;em&gt;grep freerad passwd group shadow gshadow&lt;/em&gt;&lt;br /&gt;       passwd:freerad:x:114:120::/etc/freeradius:/bin/false&lt;br /&gt;       &lt;strong&gt;group:shadow:x:42:freerad&lt;/strong&gt;&lt;br /&gt;       group:ssl-cert:x:111:freerad&lt;br /&gt;       group:freerad:x:120:&lt;br /&gt;       shadow:freerad:*:15094:0:99999:7:::&lt;br /&gt;       gshadow:shadow:*::freerad&lt;br /&gt;       gshadow:ssl-cert:!::freerad&lt;br /&gt;       gshadow:freerad:!::&lt;br /&gt;       # &lt;em&gt;ls -l /etc/pam.d/radiusd&lt;/em&gt;&lt;br /&gt;       -rw-r--r-- 1 root root 227 Sep 28  2010 /etc/pam.d/radiusd&lt;br /&gt;&lt;br /&gt;   グループ shadow に freerad が加えられた。イコール freerad ユーザアカ&lt;br /&gt;   ウントで /etc/shadow を読むことができる。/etc/pam.d/radiusd の中身は、&lt;br /&gt;   うん。特に...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 設定ファイル変更&lt;br /&gt;   &lt;a&lt;br /&gt;   href="http://wiki.freeradius.org/index.php/FAQ#How_do_I_use_PAM_with_FreeRADIUS.3F"&gt;How do I use PAM with FreeRADIUS?&lt;/a&gt; や &lt;a href="http://freeradius.org/radiusd/doc/rlm_pam"&gt;rlm_pam&lt;/a&gt; の説明眺めながらファイル&lt;br /&gt;三つ更新。どこかで見付けたパスワード生成ワンライナー&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;cat /dev/urandom | tr -dc '0-9A-Za-z' | fold -b16 | head -n1&lt;/em&gt;&lt;br /&gt;       ZkPbwZ17bCDEx7Kx&lt;br /&gt;&lt;br /&gt;   を多用しつつ。余裕があるなら? もちろん /dev/random の方が良いらしい&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;/etc/freeradius/users&lt;/li&gt;&lt;br /&gt;     # &lt;em&gt;diff -uw users.dpkg-dist users&lt;/em&gt;&lt;br /&gt;     --- users.dpkg-dist     2011-04-30 15:59:45.000000000 +0900&lt;br /&gt;     +++ users       2011-04-30 15:41:02.000000000 +0900&lt;br /&gt;     @@ -163,6 +163,8 @@&lt;br /&gt;      #      Service-Type = Framed-User,&lt;br /&gt;      #      Fall-Through = Yes&lt;br /&gt; &lt;br /&gt;     +DEFAULT Auth-Type = Pam&lt;br /&gt;     +&lt;br /&gt;      #&lt;br /&gt;      # Default for PPP: dynamic IP address, PPP mode, VJ-compression.&lt;br /&gt;      # NOTE: we do not use Hint = "PPP", since PPP might also be auto-detected&lt;br /&gt;     # &lt;br /&gt;&lt;br /&gt;   &lt;li&gt;/etc/freeradius/clients.conf&lt;/li&gt;&lt;br /&gt;     # &lt;em&gt;diff -uw clients.conf.dpkg-dist clients.conf&lt;/em&gt;&lt;br /&gt;     --- clients.conf.dpkg-dist 2011-04-30 16:03:19.000000000 +0900&lt;br /&gt;     +++ clients.conf   2011-04-30 15:40:26.000000000 +0900&lt;br /&gt;     @@ -98,7 +98,7 @@&lt;br /&gt;        #  The default secret below is only for testing, and should&lt;br /&gt;        #  not be used in any real environment.&lt;br /&gt;        #&lt;br /&gt;     -       secret          = testing123&lt;br /&gt;     +       secret          = ZkPbwZ17bCDEx7Kx&lt;br /&gt; &lt;br /&gt;             #&lt;br /&gt;             #  Old-style clients do not send a Message-Authenticator&lt;br /&gt;     @@ -232,3 +232,14 @@&lt;br /&gt;      #              secret = testing123&lt;br /&gt;      #        }&lt;br /&gt;      #}&lt;br /&gt;     +&lt;br /&gt;     +client 172.27.0.0/17 {&lt;br /&gt;     +       shortname       = primary_site&lt;br /&gt;     +       secret          = jf5O7D0FD2v4KJqH&lt;br /&gt;     +}&lt;br /&gt;     +&lt;br /&gt;     +client 172.27.129.0/17 {&lt;br /&gt;     +       shortname       = secondary_site&lt;br /&gt;     +       secret          = wvlo17pzXHzOnLfL&lt;br /&gt;     +}&lt;br /&gt;     + &lt;br /&gt;&lt;br /&gt;   &lt;li&gt;/etc/freeradius/sites-enabled/default&lt;/li&gt;&lt;br /&gt;     # &lt;em&gt;diff -uw sites-enabled/default.dpkg-dist sites-enabled/default&lt;/em&gt;&lt;br /&gt;     --- sites-enabled/default.dpkg-dist     2011-04-30 16:00:37.000000000 +0900&lt;br /&gt;     +++ sites-enabled/default       2011-04-30 16:00:42.000000000 +0900&lt;br /&gt;     @@ -263,7 +263,7 @@&lt;br /&gt; &lt;br /&gt;             #&lt;br /&gt;             #  Pluggable Authentication Modules.&lt;br /&gt;     -#      pam&lt;br /&gt;     +       pam&lt;br /&gt; &lt;br /&gt;             #&lt;br /&gt;             #  See 'man getpwent' for information on how the 'unix'&lt;br /&gt;     # &lt;br /&gt;&lt;br /&gt;3. 再起動&lt;br /&gt;   # &lt;em&gt;/etc/init.d/freeradius restart&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. テスト&lt;br /&gt;   # &lt;em&gt;radtest chamaken 'bl0gSP010' localhost 10 ZkPbwZ17bCDEx7Kx&lt;/em&gt;&lt;br /&gt;   Sending Access-Request of id 65 to 127.0.0.1 port 1812&lt;br /&gt;           User-Name = "chamaken"&lt;br /&gt;           User-Password = "bl0gSP010"&lt;br /&gt;           NAS-IP-Address = 127.0.1.1&lt;br /&gt;           NAS-Port = 10&lt;br /&gt;   rad_recv: &lt;strong&gt;Access-Accept&lt;/strong&gt; packet from host 127.0.0.1 port 1812, id=65, length=20&lt;br /&gt;   # &lt;em&gt;radtest chamaken 'invalid_passwd' localhost 10 ZkPbwZ17bCDEx7Kx&lt;/em&gt;&lt;br /&gt;   Sending Access-Request of id 32 to 127.0.0.1 port 1812&lt;br /&gt;           User-Name = "chamaken"&lt;br /&gt;           User-Password = "invalid_passwd"&lt;br /&gt;           NAS-IP-Address = 127.0.1.1&lt;br /&gt;           NAS-Port = 10&lt;br /&gt;   rad_recv: &lt;strong&gt;Access-Reject packet&lt;/strong&gt; from host 127.0.0.1 port 1812, id=32, length=20&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. その他&lt;br /&gt;   freeradius とは /etc/init.d/freeradius stop した後に&lt;br /&gt;&lt;br /&gt;       # &lt;em&gt;freeradius -X&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;   で戦うべし。/etc/freeradius/users の DEFAULT Auth-Type = Pam&lt;br /&gt;   の位置に気をつけて。PPP の前、先頭行でも良いくらい&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8048899747066946501?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8048899747066946501/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8048899747066946501' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8048899747066946501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8048899747066946501'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/freeradius-rlmpap-on-debian-squeeze.html' title='freeradius rlm_pap on debian squeeze'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5741770480357570326</id><published>2011-04-26T00:04:00.000+09:00</published><updated>2011-04-26T00:04:22.248+09:00</updated><title type='text'>TIPS: KVM (qemu) for debian squeeze - その 1</title><content type='html'>小さいネタをいくつか。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;netboot&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;qemu pxe をキーワードに &lt;a href="http://www.google.com/search?q=qemu+pxe"&gt;Google 先生に尋ねた&lt;/a&gt;ところ&lt;a href="http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu#pxe_booting_your_qemu_virtual_machine"&gt;最初のページ&lt;/a&gt;や&lt;a href="http://d.hatena.ne.jp/m-bird/20081018/1224336561#1224336561"&gt;日本語の&lt;br/&gt;最初のページ&lt;/a&gt;眺めると &lt;a href="http://rom-o-matic.net/"&gt;ROM-o-matic.net&lt;/a&gt; でブートイメージ作って。とあったの&lt;br/&gt;で早速。 &lt;a href="http://rom-o-matic.net/gpxe/gpxe-1.0.1/contrib/rom-o-matic/"&gt;1.0.1 の Image Generator&lt;/a&gt; で NIC type の選択に virtio-net なんて&lt;br/&gt;あったものだから、おぉと選択。フロッピーはないでしょ。もしかしたら今後&lt;br/&gt;使うカモとか思いつつ output format に USB Keychain disk image を選んで&lt;br/&gt;あとはシリアルコンソールとか。さて kvm を起動しようと、マニュアルでブー&lt;br/&gt;トデバイスの指 定を眺めると...&lt;blockquote&gt;-boot [order=drives][,once=drives][,menu=on|off]&lt;br/&gt;Specify boot order drives as a string of drive letters.&lt;br/&gt;Valid drive letters depend on the target achitecture. The x86 PC uses:&lt;br/&gt;a, b (floppy 1 and 2), c (first hard disk),d(first CD-ROM),&lt;br/&gt;&lt;b&gt;n-p (Etherboot from network adapter 1-4),&lt;/b&gt;&lt;br/&gt;hard disk boot is the default. &lt;br/&gt;To apply a particular boot order only on the first startup, specify it via once.&lt;/blockquote&gt;へっ? とお試し。 &lt;p/&gt;&lt;ol&gt;&lt;li&gt;tftpd のインストールと netboot イメージ&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;aptitude install tftpd-hpa&lt;/i&gt;&lt;br /&gt;(TFTP root directory: /srv/tftp)&lt;br /&gt;# &lt;i&gt;cd /srv/tftp&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;wget http://ftp.jp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;tar xzf netboot.tar.gz&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;ls -1&lt;/i&gt;&lt;br /&gt;debian-installer&lt;br /&gt;netboot.tar.gz&lt;br /&gt;pxelinux.0&lt;br /&gt;pxelinux.cfg&lt;br /&gt;version.info&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;dhcpd.conf の編集&lt;blockquote&gt;filename に /pxelinux.0。next-server に tftpd サーバのアドレス&lt;br /&gt;&lt;pre&gt;subnet 172.27.201.0 netmask 255.255.255.0 {&lt;br /&gt;    option routers 172.27.201.1;&lt;br /&gt;    option broadcast-address 172.27.201.255;&lt;br /&gt;&lt;br /&gt;    pool {&lt;br /&gt;        # ignore unknown-clients;&lt;br /&gt;        # deny dynamic bootp clients;&lt;br /&gt;        failover peer "poolish";&lt;br /&gt;        option domain-name-servers 172.27.129.1, 172.27.1.1;&lt;br /&gt;        option domain-name "siesta.or.jp";&lt;br /&gt;&lt;br /&gt;        filename "pxelinux.0";&lt;br /&gt;        next-server 172.27.129.1;&lt;br /&gt;&lt;br /&gt;        range 172.27.201.65 172.27.201.190;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;こんな感じ。&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;サーバ群再起動 &amp;amp; kvm 起動&lt;blockquote&gt;# /etc/init.d/tftpd-hpa restart&lt;br /&gt;# /etc/init.d/isc-dhcp-server restart&lt;br /&gt;# cd ほにゃほにゃ&lt;br /&gt;# kvm-img create netboot.img 8G&lt;br /&gt;# kvm -net tap -net nic,model=virtio -boot n -curses netboot.img &lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;で例のまっ黒画面に 640x480 表示されるので、目を閉じてスペース &amp;amp; linux text &lt;/dd&gt;&lt;p/&gt;&lt;dt&gt;&lt;b&gt;ルーティング&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;むやみやたらに kvm-qemu や lxc でゲスト作りまくっているとワケワカになって&lt;br/&gt;えーいままよ。と大元のホスト筆頭に&lt;blockquote&gt;&lt;pre&gt;iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE&lt;/pre&gt;&lt;/blockquote&gt;ってやっちゃったりしない? うーん、それもどうかと思うけど、コレもどうかと。&lt;br/&gt;でコレは OSPFv2 / IPv4 適当に動かしちゃう。&lt;p/&gt;&lt;ol&gt;&lt;li&gt;quagga のインストール&lt;blockquote&gt;&lt;pre&gt;# aptitude install quagga&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;file&gt;/etc/quagga/daemons&lt;/file&gt;の編集&lt;blockquote&gt;コメント除けば&lt;pre&gt;zebra=yes&lt;br /&gt;bgpd=no&lt;br /&gt;ospfd=2&lt;br /&gt;ospf6d=no&lt;br /&gt;ripd=no&lt;br /&gt;ripngd=no&lt;br /&gt;isisd=no&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;file&gt;/etc/quagga/zebra.conf&lt;/file&gt; と &lt;file&gt;/etc/quagga/ospfd.conf&lt;/file&gt;&lt;ul&gt;&lt;li&gt;zebra.conf&lt;/li&gt;&lt;pre&gt;hostname zebra@&amp;lt;適当なホスト名&amp;gt;&lt;br /&gt;password zebra&lt;br /&gt;enable password zebra&lt;br /&gt;log file /var/log/quagga/zebra.log&lt;br /&gt;!service password-encryption&lt;br /&gt;!&lt;br /&gt;ip forwarding&lt;br /&gt;ipv6 forwarding&lt;br /&gt;!&lt;br /&gt;line vty&lt;/pre&gt;&lt;li&gt;ospfd.conf&lt;/li&gt;こんなんでも動いているらしい&lt;pre&gt;hostname ospfd@&amp;lt;適当なホスト名&amp;gt;&lt;br /&gt;password zebra&lt;br /&gt;enable password zebra&lt;br /&gt;log file /var/log/quagga/ospfd.log&lt;br /&gt;!service password-encryption&lt;br /&gt;!&lt;br /&gt;router ospf&lt;br /&gt; ospf router-id &amp;lt;(自分の主たる) IP アドレス - 例えば 192.168.10.1 とか&amp;gt;&lt;br /&gt; redistribute kernel&lt;br /&gt; redistribute static&lt;br /&gt; redistribute connected&lt;br /&gt; network 0.0.0.0/0 area 0.0.0.0&lt;br /&gt;!&lt;br /&gt;line vty&lt;/ul&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;パーミッション&lt;blockquote&gt;ちょっとウルサイらしく &lt;file&gt;debian.conf&lt;/file&gt; と &lt;file&gt;daemons&lt;/file&gt; の他は&lt;br/&gt;&lt;br /&gt;quagga 所有で 0640&lt;pre&gt;# cd /etc/quagga&lt;br /&gt;# chown quagga.quagga zebra.conf ospfd.conf&lt;br /&gt;# chmod 0640 *.conf&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;再起動と確認&lt;blockquote&gt;&lt;pre&gt;# /etc/init.d/quagga restart&lt;br /&gt;# # (しばらく待って...)&lt;br /&gt;# ip route ls&lt;br /&gt;10.6.36.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 &lt;br /&gt;172.27.202.0/24 dev br2  proto kernel  scope link  src 172.27.202.1 &lt;br /&gt;172.27.129.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 &lt;br /&gt;172.27.68.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 30 &lt;br /&gt;172.27.193.0/24 dev wlan0  proto kernel  scope link  src 172.27.193.17 &lt;br /&gt;172.27.201.0/24 dev br1  proto kernel  scope link  src 172.27.201.1 &lt;br /&gt;192.168.27.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 &lt;br /&gt;172.27.1.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 30 &lt;br /&gt;111.22.3.0/22 via 172.27.193.1 dev wlan0  proto zebra  metric 20 &lt;br /&gt;default via 172.27.193.1 dev wlan0 &lt;/pre&gt;この &lt;b&gt;proto zebra&lt;/b&gt; が quagga 経由。あるいは (なっがいけど)&lt;pre&gt;# telnet localhost ospfd&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Hello, this is Quagga (version 0.99.17).&lt;br /&gt;Copyright 1996-2005 Kunihiro Ishiguro, et al.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Access Verification&lt;br /&gt;&lt;br /&gt;Password: &lt;br /&gt;ospfd@myhost&amp;gt; show ip ospf route&lt;br /&gt;============ OSPF network routing table ============&lt;br /&gt;N    10.6.36.0/24          [20] area: 0.0.0.0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;N    172.27.129.0/24       [20] area: 0.0.0.0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;N    172.27.193.0/24       [10] area: 0.0.0.0&lt;br /&gt;                           directly attached to wlan0&lt;br /&gt;N    172.27.201.0/24       [10] area: 0.0.0.0&lt;br /&gt;                           directly attached to br1&lt;br /&gt;N    172.27.202.0/24       [10] area: 0.0.0.0&lt;br /&gt;                           directly attached to br2&lt;br /&gt;N    192.168.27.0/24       [20] area: 0.0.0.0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;N    111.22.3.0/22         [20] area: 0.0.0.0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;&lt;br /&gt;============ OSPF router routing table =============&lt;br /&gt;R    172.27.129.1          [10] area: 0.0.0.0, ASBR&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;&lt;br /&gt;============ OSPF external routing table ===========&lt;br /&gt;N E1 172.27.1.0/24         [40] tag: 0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;N E1 172.27.68.0/24        [40] tag: 0&lt;br /&gt;                           via 172.27.193.1, wlan0&lt;br /&gt;ospfd@myhost&amp;gt; exit&lt;br /&gt;Connection closed by foreign host.&lt;/pre&gt;とか&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/dd&gt;&lt;/dl&gt;いくつか。なんて最初に書いたけど遅くなっちゃったので、ここまで...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5741770480357570326?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5741770480357570326/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5741770480357570326' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5741770480357570326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5741770480357570326'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/tips-kvm-qemu-for-debian-squeeze-1.html' title='TIPS: KVM (qemu) for debian squeeze - その 1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-709386333376773333</id><published>2011-04-23T21:27:00.000+09:00</published><updated>2011-04-23T21:27:37.719+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>オレオレ証明書の証明書更新</title><content type='html'>完全なる備忘録。プロバイダから付与された IP アドレス間でトランスペアレントモード&lt;br /&gt;IPSec するにあたって racoon を certificate_type x509 で動かしているんだけど、この&lt;br /&gt;証明書の更新、および更新方法を都度忘れて調べ直すので、ここにメモ。CRL のハッシュ&lt;br /&gt;がわからず&lt;a href="http://network.station.ez-net.jp/server/ca/cert.asp"&gt;「証明書を取り扱う」&lt;/a&gt;を多々参考にさせてもらいました。ありがとうございます&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;CSR の作成&lt;/dt&gt;&lt;dd&gt;openssl req -new -keyout server_key.pem -out server_csr.pem -nodes&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;オレオレ CA で sigh&lt;/dt&gt;&lt;dd&gt;openssl ca -config /etc/ssl/openssl.cnf -in server_csr.pem -out server_cert.pem&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;CRL の発行&lt;/dt&gt;&lt;dd&gt;openssl ca -config /etc/ssl/openssl.cnf -gencrl -out crl.pem&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;証明書のハッシュ&lt;/dt&gt;&lt;dd&gt;ln -s server_cert.pem `openssl x509 -in server_cert.pem -noout -hash`.0&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;CRL のハッシュ&lt;/dt&gt;&lt;dd&gt;ln -s crl.pem `openssl crl -in crl.pem -noout -hash`.r0&lt;p/&gt;&lt;/dd&gt;&lt;/dl&gt;おまけ。確認方法とか&lt;dl&gt;&lt;dt&gt;テキスト出力&lt;/dt&gt;&lt;dd&gt;openssl x509 -in csr.pem -text&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;verify&lt;/dt&gt;&lt;dd&gt;openssl verify -CAfile ca.pem csr.pem&lt;p/&gt;&lt;/dd&gt;&lt;dt&gt;nodes 付け忘れ&lt;/dt&gt;&lt;dd&gt;openssl rsa -in server_key.pem -out server_nodes_key.pem&lt;p/&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-709386333376773333?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/709386333376773333/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=709386333376773333' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/709386333376773333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/709386333376773333'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/blog-post.html' title='オレオレ証明書の証明書更新'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7712474079024325831</id><published>2011-04-23T12:10:00.001+09:00</published><updated>2011-04-23T12:55:43.306+09:00</updated><title type='text'>port mirror on linux</title><content type='html'>だいぶ以前にここに書いたと思ったら、書いていなかった... のでメモ。&lt;br /&gt;実際に使える例ではないけれど、例えば wlan0 を dummy 0 にミラーするのであれば&lt;br /&gt;root になって長いコマンド。wlan0 からの出ていく方は&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;tc qdisc add dev wlan0 root handle 10: prio&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;tc filter add dev wlan0 parent 10: prio 10 \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;protocol all u32 match u32 0 0 flowid 10:1 \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;action mirred egress mirror dev dummy0&lt;/em&gt;&lt;/pre&gt;&lt;/blockquote&gt;disc prio を wlan0 の最初 (root) として 10 という ID 割り当て。&lt;br /&gt;その 10 を親として 10番という順番で u32 すべてマッチのフィルタを追加。&lt;br /&gt;結果は 10:1 に流すけど 10:1 という qdisc はないのでデフォルト何もせず。&lt;br /&gt;アクションとして dummy0 にミラーを送出。確認は&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;tc qdisc ls dev wlan0&lt;/em&gt;&lt;br /&gt;qdisc prio 10: root refcnt 5 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1&lt;br /&gt;# &lt;em&gt;tc filter ls dev wlan0 handle 10:&lt;/em&gt;&lt;br /&gt;filter parent 10: protocol all pref 10 u32 &lt;br /&gt;filter parent 10: protocol all pref 10 u32 fh 800: ht divisor 1 &lt;br /&gt;filter parent 10: protocol all pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 10:1 &lt;br /&gt;  match 00000000/00000000 at 0&lt;br /&gt; action order 1: mirred (Egress Mirror to device dummy0) pipe&lt;br /&gt;  index 1 ref 1 bind 1&lt;/pre&gt;&lt;/blockquote&gt;wlan0 に入ってくる方は&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;tc qdisc add dev wlan0 ingress&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;tc filter add dev wlan0 parent ffff: prio 10 \&lt;/em&gt;&lt;br /&gt;&gt; &lt;em&gt;protocol all u32 match u32 0 0 flowid ffff:1 \&lt;/em&gt;&lt;br /&gt;&gt; &lt;em&gt;action mirred egress mirror dev dummy0&lt;/em&gt;&lt;/pre&gt;&lt;/blockquote&gt;こちら ingress は ID が ffff と決まっている他は、入ってくる方と同じ。確認は&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;tc qdisc ls dev wlan0 ingress&lt;/em&gt;&lt;br /&gt;qdisc prio 10: root refcnt 5 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1&lt;br /&gt;qdisc ingress ffff: parent ffff:fff1 ---------------- &lt;br /&gt;# &lt;em&gt;tc filter ls dev wlan0 handle ffff:&lt;/em&gt;&lt;br /&gt;filter protocol all pref 10 u32 &lt;br /&gt;filter protocol all pref 10 u32 fh 800: ht divisor 1 &lt;br /&gt;filter protocol all pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid ffff:1 &lt;br /&gt;  match 00000000/00000000 at 0&lt;br /&gt; action order 1: mirred (Egress Mirror to device dummy0) pipe&lt;br /&gt;  index 2 ref 1 bind 1&lt;/pre&gt;&lt;/blockquote&gt;これで wlan0 を promisc モードにして dummy0 で tcpdump&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt; ip link set wlan0 promisc on&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;tcpdump -nevxi dummy0&lt;/em&gt;&lt;/pre&gt;&lt;/blockquote&gt;とか。ドキュメントとして iproute-doc にも含まれていないのでソースを&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;apt-get source iproute&lt;/pre&gt;&lt;/blockquote&gt;とか&lt;blockquote&gt;&lt;pre&gt;git clone git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git&lt;/pre&gt;&lt;/blockquote&gt;とかで持ってきた $SRC/doc/actions/mirred-usage を参照。iproute 全般は&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2"&gt;http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lartc.org/howto/"&gt;http://lartc.org/howto/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;で、以下その mirred-usage の抜粋意訳、中途訳&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;pre&gt;普通のイーサネットスイッチでのミラーやリダイレクトの違いは u32 フィ&lt;br /&gt;ルタ (classifier) でミラーするフローを選択できること。&lt;br /&gt;&lt;br /&gt;mirred アクションの使い方:&lt;br /&gt;    mirred &amp;lt;DIRECTION&amp;gt; &amp;lt;ACTION&amp;gt; [index INDEX] &amp;lt;dev DEVICENAME&amp;gt;&lt;br /&gt;        DIRECTION := ingreee か egress&lt;br /&gt;        ACTION    := mirror か redirect&lt;br /&gt;        INDEX は特定のポリシ ID&lt;br /&gt;        DEVICENAME はデバイス名&lt;br /&gt;&lt;br /&gt;ACTION - mirror はコピーを指定されたデバイスに送る&lt;br /&gt;ACTION - redirect はパケットを横取りして指定されたデバイスに送る&lt;br /&gt;         (なのでローカルプロセスには渡らない)&lt;br /&gt;&lt;br /&gt;* 禁止事項&lt;br /&gt;  A. ループさせない &lt;br /&gt;      eth0 を eth1 にリダイレクト。更に eth1 を eth0 にリダイレクトなど&lt;br /&gt;  B. IFB デバイスから別の IFB デバイスにリダイレクトしない&lt;br /&gt;      ホストはクラッシュしないけどパケット全てが drop される&lt;br /&gt;&lt;br /&gt;  A は再帰によるデバイスキューのロック輻輳。&lt;br /&gt;  B は送信ロック (の輻輳?)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- サンプル&lt;br /&gt;&lt;br /&gt;1. eth0 に入ってくるパケットを eth1 にミラー&lt;br /&gt;&lt;br /&gt;       # tc qdisc add dev eth0 ingress&lt;br /&gt;       # tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 \&lt;br /&gt;       &amp;gt;    match u32 0 0 flowid 1:2 action mirred egress mirror dev eth1&lt;br /&gt;&lt;br /&gt;   mirror を redirect に変えるとコピーせずオリジナルパケットを eth1&lt;br /&gt;   に送出する&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. lo から eth0 に横取り&lt;br /&gt;   lo の ingress に届く全てのパケットを eth0 にリダイレクト&lt;br /&gt;&lt;br /&gt;       # tc qdisc add dev lo ingress&lt;br /&gt;       # tc filter add dev lo parent ffff: protocol ip prio 10 u32 \&lt;br /&gt;       &amp;gt;    match u32 0 0 flowid 1:2 action mirred egress redirect dev eth0&lt;br /&gt;&lt;br /&gt;   この設定をしたホストで ping -c 127.0.0.1 としても失敗する。&lt;br /&gt;   eth0 の先に接続したホストで tcpdump してみると...&lt;br /&gt;   XXX&lt;br /&gt;   このフィルタ内 redirect を mirror に置き換えて&lt;br /&gt;&lt;br /&gt;       # tc filter add dev lo parent ffff: protocol ip u32 \&lt;br /&gt;       &amp;gt;    match u32 0 0 flowid 1:2 action mirred egress mirror dev eth0&lt;br /&gt;&lt;br /&gt;   とすると tc 設定をしたホストと、この eth0 の先にある両方のホスト&lt;br /&gt;   で、パケットを見ることができる。つまりは ping が成功する&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. もうちょっとイカしたサンプル&lt;br /&gt;   lo の ingress にて 10個の内 1個のパケットがランダムに別ホストへ&lt;br /&gt;   --- eth0 へ --- 送る (ランダムは netrand generator を使う)&lt;br /&gt;   XXX: action drop --- 少し違う気がする...&lt;br /&gt;&lt;br /&gt;       # tc filter add dev lo parent ffff: protocol ip prio 10 u32 \&lt;br /&gt;       &amp;gt;    match u32 0 0 flowid 1:2 \&lt;br /&gt;       &amp;gt;    action drop random determ ok 10&lt;br /&gt;       &amp;gt;    action mirred egress mirror dev eth0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. 10.0.0.9 から来て eth0 に出ていくパケット&lt;br /&gt;   (ローカルの IP か forwarding するか)&lt;br /&gt;   が 100Kbps を超えると eth1 にリダイレクト&lt;br /&gt;&lt;br /&gt;       # tc qdisc add dev eth0 handle 1:0 root prio&lt;br /&gt;       # tc filter add dev eth0 parent 1:0 protocol ip prio 6 u32 \&lt;br /&gt;       &amp;gt;    match ip src 10.0.0.9/32 flowid 1:16 \&lt;br /&gt;       &amp;gt;    action police rate 100kbit burst 90 ok \&lt;br /&gt;       &amp;gt;    action mirred egress mirror dev eth1&lt;br /&gt;&lt;br /&gt;5. もっと面白いサンプルとしてフローを (デフォルト全て drop する)&lt;br /&gt;   dummy デバイスにミラーして tcpdump&lt;br /&gt;&lt;br /&gt;   192.168.200.200/32 からのパケットをポリシングして、この送出が&lt;br /&gt;   100Kbps を超えてほしくないとか&lt;br /&gt;&lt;br /&gt;       # tc qdisc add dev eth0 handle 1:0 root prio&lt;br /&gt;       # tc filter add dev eth0 pareht 1: protocol ip prio 10 u32 \&lt;br /&gt;       &amp;gt;    match ip src 192.168.200.200/32 flowid 1:2 \&lt;br /&gt;       &amp;gt;    action police rate 100kbit burst 90 drop&lt;br /&gt;&lt;br /&gt;   eth0 で tcpdump を実行すると 192.168.200.200/32 からのパケット送&lt;br /&gt;   出がドロップされようと、されまいと全て見ることができる (tcpdump&lt;br /&gt;   は egress される全てのパケットを見せるから)。ルールを少しだけ拡張&lt;br /&gt;   して make out したパケットを見るためには&lt;br /&gt;&lt;br /&gt;       # tc qdisc add dev eth0 handler 1:0 root prio&lt;br /&gt;       # tc filter add dev eth0 parent 1: protocol ip prio 10 u32 \&lt;br /&gt;       &amp;gt;    match ip src 192.168.200.200/32 flowid 1:2 \&lt;br /&gt;       &amp;gt;    action police rate 100kbit burst 90 drop \&lt;br /&gt;       &amp;gt;    action mirred egress mirror dev dummy0&lt;br /&gt;&lt;br /&gt;   dummy0 で tcpdump を動かして、make out されたパケットだけを見る&lt;br /&gt;&lt;br /&gt;       # tcpdump -n -i dummy0 -x -e -t&lt;br /&gt;&lt;br /&gt;   mirror を redirect に置き換えると、これらパケットは XXX 一切 make&lt;br /&gt;   out できなくなる&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7712474079024325831?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7712474079024325831/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7712474079024325831' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7712474079024325831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7712474079024325831'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/port-mirror-on-linux.html' title='port mirror on linux'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2817368523226081847</id><published>2011-04-18T21:45:00.001+09:00</published><updated>2011-04-18T21:45:53.954+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>obs600-tools.deb # utils の方が良かった?</title><content type='html'>obs600 で debian squeeze の続編。deb パッケージにない&lt;br /&gt;&lt;ul&gt;&lt;li&gt;flashcfg&lt;/li&gt;&lt;li&gt;runled&lt;/li&gt;&lt;li&gt;pshd&lt;/li&gt;&lt;/ul&gt;をやっつけ deb パッケージ化。&lt;br /&gt;&lt;br /&gt;バイナリはこんな&lt;a href="http://chamaken.blogspot.com/2011/04/pil-bin2png-2.html"&gt;イメージ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-K3fZ4S18XGc/TawtB23EySI/AAAAAAAAADU/W5DorwAzDlY/s1600/obs600-tools_1.1981_powerpc.deb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-K3fZ4S18XGc/TawtB23EySI/AAAAAAAAADU/W5DorwAzDlY/s1600/obs600-tools_1.1981_powerpc.deb.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ソースはこんな&lt;a href="http://chamaken.blogspot.com/2011/04/pil-bin2png-2.html"&gt;イメージ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-X-cEuogsPhQ/TawtvD7lnzI/AAAAAAAAADY/aCzsw9NZjaM/s1600/obs600-tools_1.1981.tar.gz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-X-cEuogsPhQ/TawtvD7lnzI/AAAAAAAAADY/aCzsw9NZjaM/s1600/obs600-tools_1.1981.tar.gz.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SSDLinux のソースから autotools 環境作成のスクリプトと言うかコマンド列挙は&lt;br /&gt;こんな&lt;a href="http://chamaken.blogspot.com/2011/04/pil-bin2png-2.html"&gt;イメージ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-C9nZshB-dr4/TawuszZMP-I/AAAAAAAAADg/9rG9jc91FyQ/s1600/build-obs600-tools-from-ssdsrc.sh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-C9nZshB-dr4/TawuszZMP-I/AAAAAAAAADg/9rG9jc91FyQ/s1600/build-obs600-tools-from-ssdsrc.sh.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;zlib1g zlib1g-dev が必要なのでそれぞれ powerpc のdeb バイナリ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;zlib1g_1.2.3.4.dfsg-3_powerpc.deb&lt;/li&gt;&lt;li&gt;zlib1g-dev_1.2.3.4.dfsg-3_powerpc.deb&lt;/li&gt;&lt;/ul&gt;を持ってきて&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ dpkg-cross --build --arch powerpc *.deb&lt;/pre&gt;&lt;/blockquote&gt;とするんだけど、バージョン上がった場合の確認が面倒。&lt;br /&gt;apt-cross というツールはなくなってしまい、&lt;a href="http://packages.debian.org/squeeze/pdebuild-cross"&gt;pdebuild-cross&lt;/a&gt; は使い方わからず...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2817368523226081847?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2817368523226081847/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2817368523226081847' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2817368523226081847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2817368523226081847'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/obs600-toolsdeb-utils.html' title='obs600-tools.deb # utils の方が良かった?'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-K3fZ4S18XGc/TawtB23EySI/AAAAAAAAADU/W5DorwAzDlY/s72-c/obs600-tools_1.1981_powerpc.deb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7038262222368360641</id><published>2011-04-16T17:15:00.005+09:00</published><updated>2011-04-16T17:23:22.340+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>softdog / CONFIG_WATCHDOG_NOWAYOUT - 勘違い</title><content type='html'>nowayout と Magic Close の関係を思いっきり勘違い。先日の&lt;a href="http://chamaken.blogspot.com/2011/03/softdog-configwatchdognowayout.html"&gt;エントリ&lt;/a&gt;では&lt;br /&gt;何とでも読み取り可。nowayout 指定しても Magic Close はできると思い込&lt;br /&gt;んでた。が、nowayout の方が強いと言うか、nowayout を指定してしまうと&lt;br /&gt;Magic Close すらできない。&lt;br /&gt;&lt;br /&gt;&lt;file&gt;drivers/watchdog/softdog.c&lt;/file&gt; の中 MODULE_PARM で探すと&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;soft_margin: int&lt;/dt&gt;&lt;dd&gt;Watchdog soft_margin in seconds.&lt;br/&gt;(0 &amp;lt; soft_margin &amp;lt; 65536, default=60)&lt;/dd&gt;&lt;dt&gt;&amp;nbsp;&lt;/dt&gt;&lt;dt&gt;nowayout: int&lt;/dt&gt;&lt;dd&gt;Watchdog cannot be stopped once started&lt;br/&gt;(default= [config WATCHDOG_NOWAYOUT?])&lt;/dd&gt;&lt;dt&gt;&amp;nbsp;&lt;/dt&gt;&lt;dt&gt;soft_noboot: int&lt;/dt&gt;&lt;dd&gt;Softdog action, set to 1 to ignore reboots, 0 to reboot&lt;/dd&gt; &lt;/dl&gt;noboot でテスト。watchdog プログラムはこんなんに swd.sh と命名して&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;exec 3&amp;gt; /dev/watchdog&lt;br /&gt;trap "echo 'send V'; echo -n V &amp;gt;&amp;amp;3; exit 0" INT&lt;br /&gt;&lt;br /&gt;while :; do&lt;br /&gt;    echo &amp;gt;&amp;amp;3&lt;br /&gt;    sleep 4&lt;br /&gt;done&lt;/pre&gt;&lt;/blockquote&gt;SIG_INT で止められたら Magic Close。root になってまずは nowayout なし&lt;br /&gt;で Magic Close の場合は&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;# &lt;i&gt;modprobe softdog soft_margin=10 nowayout=0 soft_noboot=1&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;./swd.sh&lt;/i&gt;&lt;br /&gt;^Csend V (しばらく待った後に &lt;i&gt;Ctrl-c&lt;/i&gt;)&lt;br /&gt;# &lt;i&gt;dmesg | tail&lt;/i&gt;&lt;br /&gt;...&lt;br /&gt;[ 3010.493992] Software Watchdog Timer: 0.07 initialized. &lt;br /&gt;    soft_noboot=1 soft_margin=10 sec (nowayout= 0)&lt;/blockquote&gt;&lt;/pre&gt;Magic Close しない場合は (rmmod しないで引き続き)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;./swd.sh &lt;/i&gt;&lt;br /&gt;^Z (&lt;i&gt;Ctrl-z&lt;/i&gt;)&lt;br /&gt;[1]+  Stopped                 ./swd.sh&lt;br /&gt;# (しばらく - soft_margin で指定した10 秒以上待つ)&lt;br /&gt;# &lt;i&gt;dmesg | tail&lt;/i&gt;&lt;br /&gt;...&lt;br /&gt;[ 3010.493992] Software Watchdog Timer: 0.07 initialized. &lt;br /&gt;    soft_noboot=1 soft_margin=10 sec (nowayout= 0)&lt;br /&gt;[ 3241.819563] SoftDog: Triggered - Reboot ignored.&lt;/pre&gt;&lt;/blockquote&gt;リブートだけど soft_noboot 指定したのでメッセージだけ。&lt;file&gt;/dev/watchdog&lt;/file&gt;&lt;br /&gt;&lt;file&gt;&lt;/file&gt;が開きっぱになっているので、続けて&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;fg&lt;/i&gt;&lt;br /&gt;./swd.sh&lt;br /&gt;^Csend V (&lt;i&gt;Ctrl-c&lt;/i&gt;)&lt;br /&gt;# &lt;i&gt;rmmod softdog&lt;/i&gt;&lt;/pre&gt;&lt;/blockquote&gt;次に nowayout 指定すると&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;modprobe softdog soft_margin=10 nowayout=1 soft_noboot=1&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;./swd.sh &lt;/i&gt;&lt;br /&gt;^Csend V (&lt;i&gt;Ctrl-c&lt;/i&gt;)&lt;br /&gt;# (10 秒以上待って)&lt;br /&gt;# &lt;i&gt;dmesg | tail&lt;/i&gt;&lt;br /&gt;...&lt;br /&gt;[ 3757.016487] Software Watchdog Timer: 0.07 initialized. &lt;br /&gt;    soft_noboot=1 soft_margin=10 sec (nowayout= 1)&lt;br /&gt;[ 3811.572991] SoftDog: Unexpected close, not stopping watchdog!&lt;br /&gt;[ 3821.580111] SoftDog: Triggered - Reboot ignored.&lt;/pre&gt;&lt;/blockquote&gt;'V' を &lt;file&gt;/dev/watchdog&lt;/file&gt; に送ったけどリブート。で最初の通り nowayout 指定&lt;br /&gt;すると Magic Close も何のその。書き込みなくば再起動という結果。&lt;br /&gt;&lt;br /&gt;とってもシンプルだけど先の swd.sh は&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;i&gt;nohup ./swd.sh &amp;gt; /var/log/watchdog.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/i&gt;&lt;/pre&gt;&lt;/blockquote&gt;でソレナリには動くらしい。nowayout 指定せず Magic Close 使ってリブート&lt;br /&gt;せずの停止は&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;killall -INT swd.sh&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;cat /var/log/swd.log&lt;/i&gt;&lt;br /&gt;nohup: ignoring input&lt;br /&gt;send V&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7038262222368360641?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7038262222368360641/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7038262222368360641' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7038262222368360641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7038262222368360641'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/softdog-configwatchdognowayout.html' title='softdog / CONFIG_WATCHDOG_NOWAYOUT - 勘違い'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6408184738165391494</id><published>2011-04-13T22:26:00.000+09:00</published><updated>2011-04-13T22:26:51.386+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PIL で bin2png - その 2</title><content type='html'>昔? telnet しか許されていないホストで base64 したバイナリをコピペしたこと&lt;br /&gt;思い出した...鶏卵、ブートストラップ。ソレやるか? で昨日の&lt;br /&gt;&lt;blockquote&gt;&amp;gt; 超てきとーいいかげんにパディング&lt;/blockquote&gt;を貼り付けた結果、ながいブログエントリぃー。pack / unpack の使い方もわかっ&lt;br /&gt;てないし、ムダな事ばっかじゃん。と思った方は是非メンテしてやってください。 &lt;br /&gt;コピペして bin2png.py とかで保存した後は、こちらも昨日の&lt;a href="http://1.bp.blogspot.com/-5TYfxJ6Bw04/TaRqum9P-LI/AAAAAAAAADQ/bTlO3XQT0BM/s1600/patch-2.6.38.2.gz.png"&gt;イメージ&lt;/a&gt;を保存して&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;i&gt;./bin2png.py -d patch-2.6.38.2.gz.png -o patch-2.6.38.2.gz&lt;/i&gt;&lt;/pre&gt;&lt;/blockquote&gt;とかで。&lt;br /&gt;サイズ大きいファイルはシャレになりませんが、ブログに貼り付ける程度なら...&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;import sys, os, math, struct&lt;br /&gt;import getopt, logging&lt;br /&gt;import Image&lt;br /&gt;&lt;br /&gt;log = logging.getLogger()&lt;br /&gt;&lt;br /&gt;def sqrint(n):&lt;br /&gt;    r = math.ceil(math.sqrt(n) + 0.1)&lt;br /&gt;    return (int(r), int(math.pow(r, 2) - n))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def encode(srcfp, dstfp):&lt;br /&gt;    # calc sizes&lt;br /&gt;    fsize = os.fstat(srcfp.fileno()).st_size&lt;br /&gt;    log.debug("encode size: %d" % fsize)&lt;br /&gt;    qfsize = fsize / 4&lt;br /&gt;    sides, padlen = sqrint(qfsize)&lt;br /&gt;    tupad = struct.unpack('BBBB', struct.pack('!L', fsize))&lt;br /&gt;&lt;br /&gt;    # create data&lt;br /&gt;    data = [tupad]&lt;br /&gt;    for i in range(qfsize):&lt;br /&gt;        data.append(struct.unpack('BBBB', srcfp.read(4)))&lt;br /&gt;    nremain = fsize % 4&lt;br /&gt;    data.append(struct.unpack('BBBB', srcfp.read(nremain) + '\x00' * (4 - nremain)))&lt;br /&gt;    data.extend(((0, 0, 0, 0),) * (padlen / 4 - 1))&lt;br /&gt;&lt;br /&gt;    # write out&lt;br /&gt;    im = Image.new('RGBA', (sides, sides))&lt;br /&gt;    im.putdata(data)&lt;br /&gt;    im.save(dstfp, 'PNG')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def decode(srcfp, dstfp):&lt;br /&gt;    im = Image.open(srcfp)&lt;br /&gt;    imgcore = im.getdata() # needs checking mode?&lt;br /&gt;    fsize = struct.unpack("!L", struct.pack("BBBB", *imgcore[0]))[0]&lt;br /&gt;    log.debug("decode size: %d" % fsize)&lt;br /&gt;&lt;br /&gt;    data = list(imgcore)[1:]&lt;br /&gt;    b = bytearray()&lt;br /&gt;    [b.extend(d) for d in data]&lt;br /&gt;    dstfp.write(b[:fsize])&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def usage():&lt;br /&gt;    print &amp;gt;&amp;gt; sys.stderr, '''%s - convert file to png image&lt;br /&gt;  -e | --encode          specify encoding file &lt;br /&gt;  -d | --decode          specify decoding file&lt;br /&gt;  -o | --outfile         stdout if not specified&lt;br /&gt;  -h | --help            show (this) usage message&lt;br /&gt;  -v | --verbose         set logging level to DEBUG [default is INFO]&lt;br /&gt;''' % sys.argv[0]&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    try:&lt;br /&gt;        opts, args = getopt.getopt(sys.argv[1:], 'e:d:o:hv',&lt;br /&gt;                                   ['encode', 'decode', 'outfile', &lt;br /&gt;                                    'help', 'verbose'])&lt;br /&gt;    except getopt.GetoptError, err:&lt;br /&gt;        log.error(err)&lt;br /&gt;        usage()&lt;br /&gt;        sys.exit(2)&lt;br /&gt;&lt;br /&gt;    isencode = False&lt;br /&gt;    isdecode = False&lt;br /&gt;    srcfp = None&lt;br /&gt;    # 3.0: dstfp = sys.stdout.buffer?&lt;br /&gt;    dstfp = os.fdopen(sys.stdout.fileno(), 'wb')&lt;br /&gt;&lt;br /&gt;    for o, a in opts:&lt;br /&gt;        if o in ("-h", "--help"):&lt;br /&gt;            usage()&lt;br /&gt;            sys.exit(0)&lt;br /&gt;        elif o in ("-v", "--verbose"):&lt;br /&gt;            log.setLevel(logging.DEBUG)&lt;br /&gt;        elif o in ("-e", "--encode"):&lt;br /&gt;            isencode = True&lt;br /&gt;            srcfp = file(a, 'rb')&lt;br /&gt;        elif o in ("-d", "--decode"):&lt;br /&gt;            isdecode = True&lt;br /&gt;            srcfp = file(a, 'rb')&lt;br /&gt;        elif o in ("-o", "--outfile"):&lt;br /&gt;            dstfp = file(a, 'wb')&lt;br /&gt;&lt;br /&gt;    if not (isencode ^ isdecode):&lt;br /&gt;        log.error("invalid action")&lt;br /&gt;        usage()&lt;br /&gt;        sys.exit(1)&lt;br /&gt;&lt;br /&gt;    isencode and encode(srcfp, dstfp)&lt;br /&gt;    isdecode and decode(srcfp, dstfp)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    logging.basicConfig(level=logging.INFO,&lt;br /&gt;                        format='%(asctime)s %(levelname)s %(message)s')&lt;br /&gt;    main()&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6408184738165391494?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6408184738165391494/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6408184738165391494' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6408184738165391494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6408184738165391494'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/pil-bin2png-2.html' title='PIL で bin2png - その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3651186657340605836</id><published>2011-04-13T00:11:00.000+09:00</published><updated>2011-04-13T00:11:00.285+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PIL で bin2png</title><content type='html'>ちょっと驚き... こちら blogger 然りでバイナリデータをブログに載せたい時って&lt;br /&gt;どうすれば良いやら。長いテキストとかであれば a2ps | enscript で PostScript&lt;br /&gt;にした後 ps2pdf とか。で PDF がアップロードできるか知らないし、やっぱイメー&lt;br /&gt;ジデータでしょう。&lt;br /&gt;&lt;br /&gt;と探すもステガノグラフィ (&lt;a href="http://packages.debian.org/stable/utils/outguess"&gt;outguess&lt;/a&gt; &lt;a href="http://packages.debian.org/squeeze/steghide"&gt;steghide&lt;/a&gt; &lt;a href="http://packages.debian.org/squeeze/snowdrop"&gt;snowdrop&lt;/a&gt;) まで凝った話でもなく、&lt;br /&gt;サイズも大きくなるし a2png だって? と試すもそのまま a2ps の png 版だったり。&lt;br /&gt;sourceforge にあるも Java だったり...&lt;br /&gt;&lt;br /&gt;むーん libpng とか使って自作? とか思い始めたところ # 長い前置き&lt;br /&gt;&lt;a href="http://www.pythonware.com/library/pil/handbook/index.htm"&gt;Python Imaging Library (PIL) のハンドブック&lt;/a&gt;眺めてみたところ、ソレらしきメソ&lt;br /&gt;ッドが。でお試し&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;i&gt;python&lt;/i&gt;&lt;br /&gt;Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) &lt;br /&gt;[GCC 4.4.5] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;fname = "patch-2.6.38.2.gz"&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;import os&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;os.stat(fname).st_size&lt;/i&gt;&lt;br /&gt;52847&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;f = open(fname)&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;b = bytearray()&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;b.extend(f.read())&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;len(b)&lt;/i&gt;&lt;br /&gt;52847&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;import Image&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;im = Image.new('L', (52847, 1))&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;im.putdata(b)&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;im.save("2.6.38.2.png")&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; (Ctrl-D)&lt;br /&gt;$ &lt;i&gt;ls -l 2.6.38.2.png&lt;/i&gt; &lt;br /&gt;-rw-r--r-- 1 chamaken chamaken 52921 2011-04-12 23:35 2.6.38.2.png&lt;/pre&gt;&lt;/blockquote&gt;PNG フォーマットとか全く知らないので new() のモードわからないし、最大約数を&lt;br /&gt;探すのも面倒がってサイズもおかしいど、もちろん可逆で&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;i&gt;python&lt;/i&gt;&lt;br /&gt;Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) &lt;br /&gt;[GCC 4.4.5] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;import Image&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;im = Image.open("2.6.38.2.png")&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;f = open("write.back", 'wb')&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;f.write(bytearray(im.getdata()))&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;i&gt;f.close()&lt;/i&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; (Ctrl-d)&lt;br /&gt;$ &lt;i&gt;cmp patch-2.6.38.2.gz write.back&lt;/i&gt; &lt;br /&gt;$ &lt;/pre&gt;&lt;/blockquote&gt;おどろいた。この 2.6.38.2.png を貼ると大変なことになりそうなので超てきとー&lt;br /&gt;いいかげんにパディングしたものを貼ってみるテスト&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5TYfxJ6Bw04/TaRqum9P-LI/AAAAAAAAADQ/bTlO3XQT0BM/s1600/patch-2.6.38.2.gz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-5TYfxJ6Bw04/TaRqum9P-LI/AAAAAAAAADQ/bTlO3XQT0BM/s1600/patch-2.6.38.2.gz.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3651186657340605836?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3651186657340605836/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3651186657340605836' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3651186657340605836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3651186657340605836'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/pil-bin2png.html' title='PIL で bin2png'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5TYfxJ6Bw04/TaRqum9P-LI/AAAAAAAAADQ/bTlO3XQT0BM/s72-c/patch-2.6.38.2.gz.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4673296068721220882</id><published>2011-04-07T22:15:00.000+09:00</published><updated>2011-04-07T22:15:13.874+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><title type='text'>obs600 で 再度 debian squeeze - その 3 - で一段落</title><content type='html'>お待ちかね。OBS600 側&lt;ul&gt;&lt;li&gt;CF 積んで&lt;/li&gt;&lt;li&gt;ETHER-0 に UTP ケーブル接続して&lt;/li&gt;&lt;li&gt;INIT ボタンをボールペンで押さえて&lt;/li&gt;&lt;/ul&gt;電源投入。ちなみに手元にあるのは 8G の CF。root でログインした後&lt;br /&gt;&lt;ol&gt;&lt;li&gt;パーティション分割 &amp;amp; ファイルシステム作成&lt;/li&gt;8G を 6G / 2G に分割。冗長だけど全部&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;fdisk /dev/sda&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Command (m for help): &lt;em&gt;p&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 8019 MB, 8019099648 bytes&lt;br /&gt;247 heads, 62 sectors/track, 1022 cylinders&lt;br /&gt;Units = cylinders of 15314 * 512 = 7840768 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;&lt;br /&gt;Command (m for help): &lt;em&gt;n&lt;/em&gt;&lt;br /&gt;Command action&lt;br /&gt;   e   extended&lt;br /&gt;   p   primary partition (1-4)&lt;br /&gt;&lt;em&gt;p&lt;/em&gt;&lt;br /&gt;Partition number (1-4): &lt;em&gt;1&lt;/em&gt;&lt;br /&gt;First cylinder (1-1022, default 1):&lt;br /&gt;Using default value 1&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (1-1022, default 1022): +6144M&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Command (m for help): &lt;em&gt;n&lt;/em&gt;&lt;br /&gt;Command action&lt;br /&gt;   e   extended&lt;br /&gt;   p   primary partition (1-4)&lt;br /&gt;&lt;em&gt;p&lt;/em&gt;&lt;br /&gt;Partition number (1-4): &lt;em&gt;2&lt;/em&gt;&lt;br /&gt;First cylinder (786-1022, default 786):&lt;br /&gt;Using default value 786&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (786-1022, default 1022):&lt;br /&gt;Using default value 1022&lt;br /&gt;&lt;br /&gt;Command (m for help): &lt;em&gt;p&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 8019 MB, 8019099648 bytes&lt;br /&gt;247 heads, 62 sectors/track, 1022 cylinders&lt;br /&gt;Units = cylinders of 15314 * 512 = 7840768 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sda1               1         785     6010714   83  Linux&lt;br /&gt;/dev/sda2             786        1022     1814709   83  Linux&lt;br /&gt;&lt;br /&gt;Command (m for help): &lt;em&gt;w&lt;/em&gt;&lt;br /&gt;The partition table has been altered!&lt;br /&gt;&lt;br /&gt;Calling ioctl() to re-read partition table.&lt;br /&gt;sd 0:0:0:0: [sda] 15662304 512-byte hardware sectors: (8.01 GB/7.46 GiB)&lt;br /&gt;sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;sd 0:0:0:0: [sda] Assuming drive cache: write through&lt;br /&gt; sda: sda1 sda2&lt;br /&gt;sd 0:0:0:0: [sda] 15662304 512-byte hardware sectors: (8.01 GB/7.46 GiB)&lt;br /&gt;sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;sd 0:0:0:0: [sda] Assuming drive cache: write through&lt;br /&gt; sda: sda1 sda2&lt;br /&gt;Syncing disks.&lt;br /&gt;# &lt;em&gt;mke2fs -j -b 4096 -L / /dev/sda1&lt;/em&gt;&lt;br /&gt;mke2fs 1.39 (29-May-2006)&lt;br /&gt;Filesystem label=/&lt;br /&gt;OS type: Linux&lt;br /&gt;Block size=4096 (log=2)&lt;br /&gt;Fragment size=4096 (log=2)&lt;br /&gt;752192 inodes, 1502678 blocks&lt;br /&gt;75133 blocks (5.00%) reserved for the super user&lt;br /&gt;First data block=0&lt;br /&gt;46 block groups&lt;br /&gt;32768 blocks per group, 32768 fragments per group&lt;br /&gt;16352 inodes per group&lt;br /&gt;Superblock backups stored on blocks:&lt;br /&gt;        32768, 98304, 163840, 229376, 294912, 819200, 884736&lt;br /&gt;&lt;br /&gt;Writing inode tables: done&lt;br /&gt;Creating journal (32768 blocks): done&lt;br /&gt;Writing superblocks and filesystem accounting information: done&lt;br /&gt;&lt;br /&gt;This filesystem will be automatically checked every 28 mounts or&lt;br /&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;マウント &amp;amp; ファイル取得準備&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;mount /dev/sda1 /mnt&lt;/em&gt;&lt;br /&gt;kjournald starting.  Commit interval 5 seconds&lt;br /&gt;EXT3 FS on sda1, internal journal&lt;br /&gt;EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;# &lt;em&gt;ip link ls eth0&lt;/em&gt;&lt;br /&gt;2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast&lt;br /&gt;state UP qlen 1000&lt;br /&gt;    link/ether 00:1a:88:0c3:12:bb brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 192.168.253.254/24 brd 192.168.253.255 scope global eth0&lt;br /&gt;&lt;br /&gt;# &lt;em&gt;ping -c 4 192.168.253.1&lt;/em&gt;&lt;br /&gt;PING 192.168.253.1 (192.168.253.1): 56 octets data&lt;br /&gt;64 octets from 192.168.253.1: icmp_seq=0 ttl=64 time=2.2 ms&lt;br /&gt;64 octets from 192.168.253.1: icmp_seq=1 ttl=64 time=0.3 ms&lt;br /&gt;64 octets from 192.168.253.1: icmp_seq=2 ttl=64 time=0.3 ms&lt;br /&gt;64 octets from 192.168.253.1: icmp_seq=3 ttl=64 time=0.3 ms&lt;br /&gt;&lt;br /&gt;--- 192.168.253.1 ping statistics ---&lt;br /&gt;4 packets transmitted, 4 packets received, 0% packet loss&lt;br /&gt;round-trip min/avg/max = 0.3/0.7/2.2 ms&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;開発機側のファイルツリーをごっそり取得&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;(長いコマンドライン)&lt;br /&gt;# &lt;em&gt;ssh chamaken@192.168.253.1 \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;"cd ~/obs600/rootfs &amp;&amp; tar -cp --numeric-owner -f - *" \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;| tar -xpv --numeric-owner -f - -C /mnt&lt;/em&gt;&lt;br /&gt;The authenticity of host '192.168.253.1 (192.168.253.1)' can't be established.&lt;br /&gt;RSA key fingerprint is d1:72:98:8b:42:11:e6:a6:7b:c8:6f:8b:95:ba:a3:a8.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)? &lt;em&gt;yes&lt;/em&gt;&lt;br /&gt;Warning: Permanently added '192.168.253.1' (RSA) to the list of known hosts.&lt;br /&gt;Password:&lt;br /&gt;...&lt;br /&gt;var/cache/debconf/&lt;br /&gt;var/spool/&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;チルっと&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;chroot /mnt&lt;/em&gt;&lt;br /&gt;I have no name!@ssd-linux:/# &lt;em&gt;ls -1&lt;/em&gt;&lt;br /&gt;bin&lt;br /&gt;boot&lt;br /&gt;debootstrap&lt;br /&gt;dev&lt;br /&gt;etc&lt;br /&gt;home&lt;br /&gt;lib&lt;br /&gt;lib64&lt;br /&gt;lost+found&lt;br /&gt;mnt&lt;br /&gt;proc&lt;br /&gt;sbin&lt;br /&gt;selinux&lt;br /&gt;sys&lt;br /&gt;tmp&lt;br /&gt;usr&lt;br /&gt;var&lt;br /&gt;I have no name!@ssd-linux:/# &lt;em&gt;cd /debootstrap&lt;/em&gt;&lt;br /&gt;I have no name!@ssd-linux:/debootstrap# &lt;em&gt;./debootstrap --second-stage&lt;/em&gt;&lt;br /&gt;I: Installing core packages...&lt;br /&gt;...&lt;br /&gt;I: Base system installed successfully.&lt;br /&gt;I have no name!@ssd-linux:/debootstrap#&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;/uImage.initrd-cfboot の作成&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;I have no name!@ssd-linux:/debootstrap# &lt;em&gt;cd&lt;/em&gt;&lt;br /&gt;I have no name!@ssd-linux:~# &lt;em&gt;ls -1&lt;/em&gt;&lt;br /&gt;linux-image-2.6.32_0.91_powerpc.deb&lt;br /&gt;obs600.dtb&lt;br /&gt;vmlinux.bin.gz&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;いろいろ叱られるし、長いけど&lt;blockquote&gt;&lt;pre&gt;I have no name!@ssd-linux:~# &lt;em&gt;dpkg -i linux-image-2.6.32_0.91_powerpc.deb&lt;/em&gt;&lt;br /&gt;Selecting previously deselected package linux-image-2.6.32.&lt;br /&gt;(Reading database ... 9174 files and directories currently installed.)&lt;br /&gt;Unpacking linux-image-2.6.32 (from linux-image-2.6.32_0.91_powerpc.deb) ...&lt;br /&gt;Done.&lt;br /&gt;Setting up linux-image-2.6.32 (0.91) ...&lt;br /&gt;&lt;br /&gt; Hmm. There is a symbolic link /lib/modules/2.6.32/build&lt;br /&gt; However, I can not read it: No such file or directory&lt;br /&gt; Therefore, I am deleting /lib/modules/2.6.32/build&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Hmm. The package shipped with a symbolic link /lib/modules/2.6.32/source&lt;br /&gt; However, I can not read the target: No such file or directory&lt;br /&gt; Therefore, I am deleting /lib/modules/2.6.32/source&lt;br /&gt;&lt;br /&gt;Running depmod.&lt;br /&gt;Examining /etc/kernel/postinst.d.&lt;br /&gt;run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32&lt;br /&gt;/boot/vmlinux-2.6.32&lt;br /&gt;update-initramfs: Generating /boot/initrd.img-2.6.32&lt;br /&gt;df: Warning: cannot read table of mounted file systems: No such file&lt;br /&gt;or directory&lt;br /&gt;warning: can't open /etc/mtab: No such file or directory&lt;br /&gt;warning: can't open /etc/mtab: No such file or directory&lt;br /&gt;I have no name!@ssd-linux:~#&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;また長いコマンドライン。くどいけど参照&lt;ul&gt;&lt;li&gt;&lt;file&gt;$SSDSRC/usr/src/contrib/debootstrap/post-debootstrap&lt;/file&gt;&lt;/li&gt;&lt;li&gt;&lt;file&gt;$SSDSRC/usr/src/contrib/developers/kimura/lenny_based_firmware/uimage/create_uImage.sh&lt;/file&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre&gt;I have no name!@ssd-linux:~# &lt;em&gt;mkimage -n "original.$(date +'%FT%T')" \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;-A ppc -O linux -T multi -C gzip \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;-d vmlinux.bin.gz:/boot/initrd.img-2.6.32:obs600.dtb \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;/uImage.initrd-cfboot&lt;/em&gt;&lt;br /&gt;Image Name:   original.2011-04-01T12:34:56&lt;br /&gt;Created:      Tue Apr  1 12:34:56 2011&lt;br /&gt;Image Type:   PowerPC Linux Multi-File Image (gzip compressed)&lt;br /&gt;Data Size:    3847277 Bytes = 3757.11 kB = 3.67 MB&lt;br /&gt;Load Address: 00000000&lt;br /&gt;Entry Point:  00000000&lt;br /&gt;Contents:&lt;br /&gt;   Image 0: 1925764 Bytes = 1880.63 kB = 1.84 MB&lt;br /&gt;   Image 1: 1913443 Bytes = 1868.60 kB = 1.82 MB&lt;br /&gt;   Image 2: 8053 Bytes = 7.86 kB = 0.01 MB&lt;br /&gt;I have no name!@ssd-linux:~#&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;普通の? 必須修正&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;I have no name!@ssd-linux:~# &lt;em&gt;passwd&lt;/em&gt;&lt;br /&gt;Enter new UNIX password:&lt;br /&gt;Retype new UNIX password:&lt;br /&gt;passwd: password updated successfully&lt;br /&gt;I have no name!@ssd-linux:~# &lt;em&gt;cd /etc&lt;/em&gt;&lt;br /&gt;I have no name!@ssd-linux:/etc# &lt;em&gt;cp inittab inittab.dpkg-dist&lt;/em&gt;&lt;br /&gt;I have no name!@ssd-linux:/etc# &lt;em&gt;vi inittab&lt;/em&gt;&lt;br /&gt;...&lt;br /&gt;I have no name!@ssd-linux:/etc# &lt;em&gt;diff -uw inittab.dpkg-dist inittab&lt;/em&gt;&lt;br /&gt;--- inittab.dpkg-dist   2011-03-31 12:34:56.000000000 +0000&lt;br /&gt;+++ inittab     2011-03-31 12:34:56.000000000 +0000&lt;br /&gt;@@ -51,16 +51,16 @@&lt;br /&gt; # Note that on most Debian systems tty7 is used by the X Window System,&lt;br /&gt; # so if you want to add more getty's go ahead but skip tty7 if you run X.&lt;br /&gt; #&lt;br /&gt;-1:2345:respawn:/sbin/getty 38400 tty1&lt;br /&gt;-2:23:respawn:/sbin/getty 38400 tty2&lt;br /&gt;-3:23:respawn:/sbin/getty 38400 tty3&lt;br /&gt;-4:23:respawn:/sbin/getty 38400 tty4&lt;br /&gt;-5:23:respawn:/sbin/getty 38400 tty5&lt;br /&gt;-6:23:respawn:/sbin/getty 38400 tty6&lt;br /&gt;+# 1:2345:respawn:/sbin/getty 38400 tty1&lt;br /&gt;+# 2:23:respawn:/sbin/getty 38400 tty2&lt;br /&gt;+# 3:23:respawn:/sbin/getty 38400 tty3&lt;br /&gt;+# 4:23:respawn:/sbin/getty 38400 tty4&lt;br /&gt;+# 5:23:respawn:/sbin/getty 38400 tty5&lt;br /&gt;+# 6:23:respawn:/sbin/getty 38400 tty6&lt;br /&gt;&lt;br /&gt; # Example how to put a getty on a serial line (for a terminal)&lt;br /&gt; #&lt;br /&gt;-#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100&lt;br /&gt;+T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100&lt;br /&gt; #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100&lt;br /&gt;&lt;br /&gt; # Example how to put a getty on a modem line.&lt;br /&gt;I have no name!@ssd-linux:/etc#&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;そのほか &lt;file&gt;/etc/hostname&lt;/file&gt; や &lt;file&gt;/etc/network/interfaces&lt;/file&gt; など&lt;br/&gt;必要に応じて作成、変更 - in debian's way で&lt;p/&gt;&lt;li&gt;オリジナルツールのコピー&lt;/li&gt;後でやっつけパッケージ作るけど、とり急ぎ&lt;blockquote&gt;&lt;pre&gt;I have no name!@ssd-linux:/etc# &lt;em&gt;exit&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;cd /usr/sbin&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;cp flashcfg runled pshd /mnt/usr/sbin/&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;CF ブートとしてリブート&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;flashcfg -h&lt;/em&gt;&lt;br /&gt;usage: flashcfg                 Show this.&lt;br /&gt;       flashcfg -b              Show current boot setting&lt;br /&gt;       flashcfg -c rootdev      Change root file system [initrd|cf|sda-sdd[1-8]]&lt;br /&gt;                                initrd       - Boot from FlashROM, / on Ramdisk&lt;br /&gt;                                sda-sdd[1-8] - Boot from FlashROM, / on CF&lt;br /&gt;                                cf           - Boot from CF,       / on CF&lt;br /&gt;       flashcfg -f boot_image   Load boot image to flash&lt;br /&gt;       flashcfg -s list_file    Save files to Parameter area&lt;br /&gt;       flashcfg -S list_file    Save files to User area&lt;br /&gt;       flashcfg -x              Restore files from Parameter area&lt;br /&gt;       flashcfg -X              Restore files from User area&lt;br /&gt;       flashcfg -d              Delete saved files from Parameter area&lt;br /&gt;       flashcfg -D              Delete saved files from User area&lt;br /&gt;       flashcfg -E env_file     Save params to U-Boot Environment area&lt;br /&gt;       flashcfg -L env_file     Load params from U-Boot Environment area&lt;br /&gt;       flashcfg -h              Show this.&lt;br /&gt;# &lt;em&gt;flashcfg -c cf&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;shutdown -r now&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/ol&gt;でけた?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4673296068721220882?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4673296068721220882/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4673296068721220882' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4673296068721220882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4673296068721220882'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/obs600-debian-squeeze-3.html' title='obs600 で 再度 debian squeeze - その 3 - で一段落'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8717482473810805837</id><published>2011-04-06T21:52:00.000+09:00</published><updated>2011-04-06T21:52:07.510+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><title type='text'>obs600 で 再度 debian squeeze - その 2</title><content type='html'>また引用。&lt;blockquote&gt;&lt;a href="http://openblocks.plathome.co.jp/support/obs600d/setup_develop_environment.html"&gt;OpenBlockS 600D - 開発環境の構築&lt;/a&gt;&lt;br/&gt;クロス開発 (VMware等のx86環境上での開発)&lt;/blockquote&gt;&lt;ol&gt;&lt;li&gt;ベースとなる環境の用意&lt;/li&gt;タイトル通り squeeze (amd64) で&lt;p/&gt;&lt;li&gt;emdebian のリポジトリを追加します&lt;/li&gt;&lt;dl&gt;&lt;dt&gt;sources.list の準備&lt;/dt&gt;&lt;dd&gt;&lt;file&gt;/etc/apt/sources.list.d&lt;/file&gt; に以下 &lt;file&gt;emdebian.list&lt;/file&gt; というファイルを追加&lt;blockquote&gt;&lt;pre&gt;# &lt;em&gt;cat /etc/apt/sources.list.d/emdebian.list&lt;/em&gt;&lt;br /&gt;deb     http://www.emdebian.org/debian/ squeeze main&lt;br /&gt;deb-src http://www.emdebian.org/debian/ squeeze main&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;アップデート&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;sudo aptitude update&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;キーリングを追加&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;sudo aptitude install emdebian-archive-keyring&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;li&gt;必要なパッケージを追加します&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;sudo aptitude install \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;build-essential u-boot libc6-powerpc-cross \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;libc6-dev-powerpc-cross binutils-powerpc-linux-gnu gcc-4.4-powerpc-linux-gnu \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;g++-4.4-powerpc-linux-gnu \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;autoconf dpkg-cross linux-headers-2.6.32-5-common linux-source-2.6.32 \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;kernel-package libncurses5-dev&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;最後の二行は今後のモロモロのために&lt;p/&gt;&lt;li&gt;カーネルのソースコードを展開します&lt;/li&gt;ありがたいことに SSDLinux のパッチもあるので上記通り linux-source-2.6.32 で。&lt;p/&gt;&lt;li&gt;開発用ディレクトリの作成と SSD/Linux のソース取得、展開&lt;/li&gt;&lt;dl&gt;&lt;dt&gt;テンポラリディレクトリ作成&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;mkdir -p $HOME/obs600/tmp&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;src.tgz の取得&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;wget -nd -N -P $HOME/obs600/tmp \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;http://ftp.plathome.co.jp/pub/ssdlinux/0.5-LATEST/source/src.tgz&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;各種展開&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;cd $HOME/obs600&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;tar xzf tmp/src.tgz -C tmp&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;tar xjf /usr/src/linux-source-2.6.32.tar.bz2 -C .&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;li&gt;カーネルパッケージ作成&lt;/li&gt;&lt;dl&gt;&lt;dt&gt;カーネルパッチあて&lt;/dt&gt;&lt;dd&gt;SSD/Linux のソース usr/src/mkdist/kernel/2.6.32/patches/ に各種パッチあり&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;cd linux-source-2.6.32&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;for i in ../tmp/usr/src/mkdist/kernel/2.6.32/patches/*.patch; do&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;patch -p1 $i&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;done&lt;/em&gt;&lt;br /&gt;...&lt;br /&gt;patching file Makefile&lt;br /&gt;Reversed (or previously applied) patch detected!  Assume -R? [n]&lt;br /&gt;Apply anyway? [n]&lt;br /&gt;(ここはエンター。デフォルトの n で OK)&lt;br /&gt;Skipping patch.&lt;br /&gt;4 out of 4 hunks ignored -- saving rejects to file Makefile.rej&lt;br /&gt;patching file scripts/Makefile.modinst&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;ごめんなさい - &lt;file&gt;scripts.patch&lt;/file&gt;&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;+ifdef NOGZIP&lt;br /&gt;       cmd_modules_install = mkdir -p $(2); cp $@ $(2) ;&lt;br /&gt;$(mod_strip_cmd) $(2)/$(notdir $@)&lt;br /&gt;+else&lt;br /&gt;+      cmd_modules_install = mkdir -p $(2); cp $@ $(2) ;&lt;br /&gt;$(mod_strip_cmd) $(2)/$(notdir $@) ;gzip -9 $(2)/$(notdir $@)&lt;br /&gt;+endif&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;なので make 時に -D NOGZIP する&lt;/dd&gt;&lt;p/&gt;&lt;dt&gt;.config などのコピー&lt;/dt&gt;&lt;dd&gt;ワーキングディレクトリは &lt;file&gt;$HOME/obs600/linux-source-2.6.32&lt;/file&gt; のままで&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;cp ../tmp/usr/src/mkdist/kernel/2.6.32/dot.config.powerpc-obs600 dot.config&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;cp dot.config .config&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;cp ../tmp/usr/src/mkdist/kernel/2.6.32/obs600.dts arch/powerpc/boot/dt&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;cp ../tmp/usr/src/mkdist/kernel/2.6.32/obs600.dts arch/powerpc/boot/dts/&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;menuconfig&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;make-kpkg -j4 --arch powerpc --config menuconfig configure&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;menuconfig はお好みで gconfig とか。DRBD 使ってみるので&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Device Drivers ---&amp;gt; Connector を M に&lt;/li&gt;&lt;li&gt;Device Drivers ---&amp;gt; Block Devices ---&amp;gt; DRBD も M に&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;その他お好みで。個人的には cgroup と namespace veth など。diff 取ると&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;diff -uw dot.config .config&lt;/em&gt;&lt;br /&gt;+CONFIG_CONNECTOR=m&lt;br /&gt;+CONFIG_BLK_DEV_DRBD=m&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;といったあたり。削除されてる&lt;blockquote&gt;&lt;pre&gt;-CONFIG_UNION_FS=y&lt;/pre&gt;&lt;/blockquote&gt;は &lt;a href="http://download.filesystems.org/unionfs/unionfs-2.x/"&gt;http://download.filesystems.org/unionfs/unionfs-2.x/&lt;/a&gt;&lt;br/&gt;あたりからパッチ持ってきてあてる必要あり。でも CF ブートなので割愛。&lt;/dd&gt;&lt;p/&gt;&lt;dt&gt;kernel_image&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;MAKEFLAGS="NOGZIP=1" make-kpkg -j4 --rootcmd=fakeroot --arch=powerpc \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;--revision 0.91 --initrd kernel_image&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;li&gt;その他 uImage に必要なもの&lt;/li&gt;&lt;dl&gt;&lt;dt&gt;dtb&lt;/dt&gt;&lt;dd&gt;参照: &lt;ul&gt;&lt;li&gt;&lt;file&gt;$SSDSRC/usr/src/contrib/debootstrap/post-debootstrap&lt;/file&gt;&lt;/li&gt;&lt;li&gt;&lt;file&gt;$SSDSRC/usr/src/contrib/developers/kimura/lenny_based_firmware/uimage/create_uImage.sh&lt;/file&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;make ARCH=powerpc obs600.dtb&lt;/em&gt;&lt;br /&gt;/home/chamaken/obs600/linux-source-2.6.32/scripts/dtc/dtc -O dtb -o&lt;br /&gt;arch/powerpc/boot/obs600.dtb -b 0 -p 1024&lt;br /&gt;/home/chamaken/obs600/linux-source-2.6.32/arch/powerpc/boot/dts/obs600.dts&lt;br /&gt;DTC: dts-&amp;gt;dtb  on file&lt;br /&gt;"/home/chamaken/obs600/linux-source-2.6.32/arch/powerpc/boot/dts/obs600.dts"&lt;br /&gt;$ &lt;em&gt;cp arch/powerpc/boot/obs600.dtb ../&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;dt&gt;vmlinux.bin.gz&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;powerpc-linux-gnu-objcopy -O binary vmlinux ../vmlinux.bin&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;cd ..&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;gzip vmlinux.bin&lt;/em&gt;&lt;br /&gt;$ &lt;em&gt;ls -1&lt;/em&gt;&lt;br /&gt;linux-image-2.6.32_0.91_powerpc.deb&lt;br /&gt;linux-source-2.6.32&lt;br /&gt;obs600.dtb&lt;br /&gt;tmp&lt;br /&gt;vmlinux.bin.gz&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;/dl&gt;すっごい長くなった上に番外。&lt;br /&gt;ここまでやっておくと次回 obs600 側になるので&lt;p/&gt;&lt;li&gt;(何と言えばよいのか) 開発機側で OBS600 バイナリのファイルツリー準備&lt;/li&gt;include のパッケージは最低限。お好みで... drbb8-utils も&lt;blockquote&gt;&lt;pre&gt;$ &lt;em&gt;su&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;debootstrap --foreign --arch=powerpc \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;--include "ssh less u-boot initramfs-tools" \&lt;/em&gt;&lt;br /&gt;&amp;gt; &lt;em&gt;squeeze rootfs http://ftp.jp.debian.org/debian&lt;/em&gt;&lt;br /&gt;I: Retrieving Release&lt;br /&gt;I: Retrieving Packages&lt;br /&gt;I: Validating Packages&lt;br /&gt;...&lt;br /&gt;I: Extracting xz-utils...&lt;br /&gt;I: Extracting zlib1g...&lt;br /&gt;# &lt;em&gt;ls -1&lt;/em&gt;&lt;br /&gt;linux-image-2.6.32_0.91_powerpc.deb&lt;br /&gt;linux-source-2.6.32&lt;br /&gt;obs600.dtb&lt;br /&gt;rootfs&lt;br /&gt;tmp&lt;br /&gt;vmlinux.bin.gz&lt;br /&gt;# &lt;em&gt;cp linux-image-2.6.32_0.91_powerpc.deb obs600.dtb vmlinux.bin.gz rootfs/root/&lt;/em&gt;&lt;br /&gt;# &lt;em&gt;chmod 0755 rootfs/root&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;最後の chmod 忘れずに&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8717482473810805837?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8717482473810805837/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8717482473810805837' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8717482473810805837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8717482473810805837'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/obs600-debian-squeeze-2.html' title='obs600 で 再度 debian squeeze - その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8067293580321236304</id><published>2011-04-05T22:04:00.000+09:00</published><updated>2011-04-05T22:04:59.044+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><title type='text'>obs600 で 再度 debian squeeze - その 1</title><content type='html'>まずはおかしくなった時の準備。tftp サーバを適当な debian マシンにインストールしておく&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://openblocks.plathome.co.jp/products/600/faq.html#faq-517"&gt;ファームウェアアップデートを実行したら起動しなくなりました。どうすれば復旧できますか。&lt;/a&gt;&lt;/blockquote&gt;からの引用&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q.&lt;/b&gt; ファームウェアアップデートを実行したら起動しなくなりました。どうすれば復旧できますか。&lt;br /&gt;&lt;b&gt;A.&lt;/b&gt; TFTP サーバを利用したファームウェアのアップデートを行うことで復旧できます。&lt;br /&gt;&lt;ol start="0"&gt;&lt;li&gt;パッケージのインストール&lt;/li&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;i&gt;sudo apt-get install tftpd-hpa&lt;/i&gt; (ディレクトリはデフォルトの /srv/tftp)&lt;br /&gt;&lt;br /&gt;Starting HPA's tftpd: in.tftpdinvoke-rc.d: initscript tftpd-hpa,&lt;br /&gt;action "start" failed.&lt;br /&gt;dpkg: error processing tftpd-hpa (--configure):&lt;br /&gt; subprocess installed post-installation script returned error exit status 71&lt;br /&gt;configured to not write apport reports&lt;br /&gt;                                      Errors were encountered while processing:&lt;br /&gt; tftpd-hpa&lt;br /&gt;E: Sub-process /usr/bin/dpkg returned an error code (1)&lt;/pre&gt;&lt;/blockquote&gt;IPv6 無効にしていると上記エラー。&lt;file&gt;/var/log/daemon.log&lt;/file&gt; を眺めると&lt;blockquote&gt;&lt;pre&gt;Apr  5 21:06:29 devobs600 in.tftpd[16485]: cannot open IPv6 socket,&lt;br /&gt;disable IPv6: Address family not supported by protocol&lt;br /&gt;Apr  5 21:06:29 devobs600 in.tftpd[16485]: Cannot set nonblock flag on&lt;br /&gt;socket: Bad file descriptor&lt;/pre&gt;&lt;/blockquote&gt;なんて出力があるので &lt;file&gt;/etc/default/tftpd-hpa&lt;/file&gt; を変更&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;diff -uw tftpd-hpa.dpkg-dist tftpd-hpa&lt;/i&gt;&lt;br /&gt;--- tftpd-hpa.dpkg-dist        2011-04-05 08:09:46.000000000 +0900&lt;br /&gt;+++ tftpd-hpa                  2011-04-05 08:09:56.000000000 +0900&lt;br /&gt;@@ -3,4 +3,4 @@&lt;br /&gt; TFTP_USERNAME="tftp"&lt;br /&gt; TFTP_DIRECTORY="/srv/tftp"&lt;br /&gt; TFTP_ADDRESS="0.0.0.0:69"&lt;br /&gt;-TFTP_OPTIONS="--secure"&lt;br /&gt;+TFTP_OPTIONS="--secure -4"&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;ファームウェアをダウンロードしておき TFTP サーバ側で指定した場所におきます。&lt;/li&gt;TFTP サーバのディレクトリに置く&lt;blockquote&gt;&lt;pre&gt;$ &lt;i&gt;su&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;wget -nd -N -P /srv/tftp \&lt;/i&gt;&lt;br /&gt;&amp;gt; &lt;i&gt;http://ftp.plathome.co.jp/pub/OBS600/0.5-LATEST/powerpc-obs600/installation/uImage.initrd&lt;/i&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;ETHER-0 と PC を添付のクロス・ケーブル (緑色) で接続します。&lt;/li&gt;アドレス追加。ハブやスイッチ介しても同じ L2 ドメインであればクロスケーブルじゃなくてもOK&lt;blockquote&gt;&lt;pre&gt;# &lt;i&gt;ip addr ls eth0&lt;/i&gt;&lt;br /&gt;2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast&lt;br /&gt;state UP qlen 1000&lt;br /&gt;    link/ether 00:ed:cb:a9:87:65 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 10.1.2.3/16 brd 10.1.255.255 scope global eth0&lt;br /&gt;# &lt;i&gt;ip addr add 192.168.253.1/24 dev eth0&lt;/i&gt;&lt;br /&gt;# &lt;i&gt;ip addr ls eth0&lt;/i&gt;&lt;br /&gt;2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast&lt;br /&gt;state UP qlen 1000&lt;br /&gt;    link/ether 00:ed:cb:a9:87:65 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 10.1.2.3/16 brd 10.1.255.255 scope global eth0&lt;br /&gt;    inet 192.168.253.1/24 scope global eth0&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;li&gt;本体の ディップ・スイッチ 2 を ON にします。&lt;/li&gt;&lt;br/&gt;&lt;li&gt;電源を入れます。&lt;/li&gt;待つことしばし&lt;p&gt;&lt;/p&gt;&lt;li&gt;ファームウェアのアップデートが完了しますと本体の緑色の LED が点滅します。&lt;/li&gt;&lt;br/&gt;&lt;li&gt;電源を抜き、ディップ・スイッチ 2 を OFF にします。&lt;/li&gt;&lt;br/&gt;&lt;li&gt;追記 - &lt;b&gt;INIT ボタンを押しながら電源を入れる&lt;/b&gt;&lt;/li&gt;いや、CF 起動でおかしな状態にして数日放置。で tftp ブートでイメージ読み込んだ後、度々忘れるので... &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8067293580321236304?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8067293580321236304/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8067293580321236304' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8067293580321236304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8067293580321236304'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/04/obs600-debian-squeeze-1.html' title='obs600 で 再度 debian squeeze - その 1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1562061572066577357</id><published>2011-03-30T21:05:00.003+09:00</published><updated>2011-03-30T21:39:55.069+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>softdog / CONFIG_WATCHDOG_NOWAYOUT</title><content type='html'>いつも唐突。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;Documentation/watchdog/src/watchdog-simple.c の抜粋&lt;/dt&gt;&lt;dd&gt;&lt;blockquote&gt;&lt;pre&gt;int fd = open("/dev/watchdog", O_WRONLY);&lt;br /&gt;while (1) {&lt;br /&gt;        ret = write(fd, "\0", 1);&lt;br /&gt;        if (ret != 1) {&lt;br /&gt;                ret = -1;&lt;br /&gt;                break;&lt;br /&gt;        }&lt;br /&gt;        ret = fsync(fd);&lt;br /&gt;        if (ret)&lt;br /&gt;                break;&lt;br /&gt;        sleep(10);&lt;br /&gt;}&lt;br /&gt;close(fd);&lt;/pre&gt;&lt;/blockquote&gt;定期的に書き込みがあれば&lt;strong&gt;カーネルが&lt;/strong&gt;大丈夫、問題ないよ。と判断。書き込みがないと...リブート。じゃクローズは? が次&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;Documentation/watchdog/watchdog-api.txt の抜粋意訳&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;モジュールパラメタ nowayout (CONFIG_WATCHDOG_NOWAYOUT)&lt;/dt&gt;&lt;dd&gt;"Magic Close" がサポートされていなければデバイスを close すると watchdog も (何もせず) 終了。watchdog デーモンにバグがあってクラッシュした場合なんか考えるとちょっとマズい。この挙動のためいくつかのドライバでは "Disable watchdog shutdown on close", CONFIG_WATCHDOG_NOWAYOUT&lt;br /&gt;というオプション設定ができる。これを Y としてコンパイルすると一度 watchdog が開始した後に watchdog を無効にする方法がなくなる。つまりは watchdog デーモンがクラッシュするとシステムが指定のタイムアウト後にリブートする&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;Magic Close&lt;/dt&gt;&lt;dd&gt;ドライバが Magic Close をサポートしていると close 直前に特定の文字 'V' が /dev/watchdog に送られないと (書き込まれないと)  watchdog が無効にならない。ユーザスペースのデーモンが、この特定の文字を送らずに close するとドライバはデーモンが watchdog を無効にする前に亡くなったと見なす。で、時間内に再度 open しないとリブート。softdog も &lt;blockquote&gt;&lt;pre&gt;if (c == 'V')&lt;br /&gt;        expect_close = 42;&lt;br /&gt;...&lt;br /&gt;static long softdog_ioctl(struct file *file, unsigned int cmd,&lt;br /&gt;                          unsigned long arg)&lt;br /&gt;...&lt;br /&gt;        static const struct watchdog_info ident = {&lt;br /&gt;                .options =              WDIOF_SETTIMEOUT |&lt;br /&gt;                                        WDIOF_KEEPALIVEPING |&lt;br /&gt;                                        WDIOF_MAGICCLOSE,&lt;br /&gt;...&lt;/pre&gt;&lt;/blockquote&gt; なんてあったりする&lt;/dd&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;ha.cf のサンプルコメントから&lt;/dt&gt;&lt;dd&gt;ソフトウェア watchdog を使っているならモジュールロードのパラメタに nowayout=0 あるいは CONFIG_WATCHDOG_NOWAYOUT を無効にしてコンパイルするんじゃないかな。さもないと heartbeat をマトモに終了させたとしてもリブートしてしまうって挙動はお望みじゃないと思う&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;うーん... heartbeat の watchdog か、別立て watchdog デーモンか...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1562061572066577357?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1562061572066577357/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1562061572066577357' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1562061572066577357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1562061572066577357'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/03/softdog-configwatchdognowayout.html' title='softdog / CONFIG_WATCHDOG_NOWAYOUT'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5293362853752304808</id><published>2011-03-28T13:37:00.001+09:00</published><updated>2011-03-28T14:06:17.798+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>TIPS: squeeze on raw format KVM</title><content type='html'>&lt;p&gt;さっき作ったイメージ drbd1.img は最初に / 用の sda1 次が何も手を加えていない sda2。最後が swap の sda3。これをホスト側で見るには qcow2 の場合 nbd として扱えるらしけど -f raw でイメージを作成したので...要 root&lt;blockquote&gt;&lt;pre&gt;# file drbd1.img &lt;br /&gt;drbd1.img: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector &lt;strong&gt;2048&lt;/strong&gt;, 11716608 sectors; partition 2: ID=0x83, starthead 115, startsector 11718656, 3905536 sectors; partition 3: ID=0x82, starthead 143, startsector 15624192, 1150976 sectors, code offset 0x63&lt;br /&gt;# losetup -o $((512 * &lt;strong&gt;2048&lt;/strong&gt;)) /dev/loop1 drbd1.img &lt;br /&gt;# mkdir mnt_drbd1&lt;br /&gt;# mount /dev/loop1 mnt_drbd1/&lt;br /&gt;# ls mnt_drbd1/&lt;br /&gt;bin  boot  dev etc  home  initrd.img  lib  lib32  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var  vmlinuz&lt;br /&gt;# chroot mnt_drbd1/&lt;br /&gt;root@parent:/# ls&lt;br /&gt;bin  boot  dev etc  home  initrd.img  lib  lib32  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var  vmlinuz&lt;br /&gt;root@parent:/# cat /etc/hostname&lt;br /&gt;drbd1&lt;br /&gt;root@parent:/# exit&lt;br /&gt;exit&lt;br /&gt;# umount mnt_drbd1&lt;br /&gt;# losetup -d /dev/loop1 &lt;/pre&gt;&lt;/blockquote&gt; とまぁ、ホスト側でも操作可能。なので /etc/inittab 書き換え忘れたとか、/etc/default/grub 書き換えたけど update-grub 忘れたとかも後になってでもできる&lt;/p&gt;&lt;p&gt;他ネットワーク周りは...現況は tap 使うが良さげ。ホスト側で適当にブリッジ作っておいて...毎度手は面倒なので /etc/network/interface に&lt;blockquote&gt;&lt;pre&gt;auto br0&lt;br /&gt;iface br0 inet static&lt;br /&gt;    address 192.168.1.254&lt;br /&gt;    netmask 255.255.255.0&lt;br /&gt;    network 192.168.1.0&lt;br /&gt;    broadcast 192.168.1.255&lt;br /&gt;&lt;br /&gt;    bridge_ports none&lt;br /&gt;    bridge_fd 0&lt;br /&gt;    bridge_stp off&lt;/pre&gt;&lt;/blockquote&gt; とか書いといて、KVM (に限らず、仮想ゲストマシン全て) 最初のブリッジに足のばすとすると /etc/kvm/kvm-ifup はこんな感じ&lt;blockquote&gt;&lt;pre&gt;#! /bin/sh&lt;br /&gt;BRCTL=/usr/sbin/brctl&lt;br /&gt;&lt;br /&gt;uplinks=$(ip link ls | awk -F: '/^[1-9].*UP&gt; / { print $2; }')&lt;br /&gt;for switch in $uplinks; do&lt;br /&gt;    if [ -d /sys/class/net/$switch/bridge/. ]; then&lt;br /&gt; $BRCTL addif $switch $1&lt;br /&gt; break&lt;br /&gt;    fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;ip link set $1 up&lt;/pre&gt;&lt;/blockquote&gt; でホスト側で isc-dhcp-server を動かすとゆー... 面倒だね&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5293362853752304808?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5293362853752304808/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5293362853752304808' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5293362853752304808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5293362853752304808'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/03/tips-squeeze-on-raw-format-kvm.html' title='TIPS: squeeze on raw format KVM'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8924724686833282782</id><published>2011-03-28T12:41:00.002+09:00</published><updated>2011-03-28T13:24:53.668+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>ターミナルで kvm, debian squeeze</title><content type='html'>obs600 休憩。間違いもあるので、後日直すコト &amp;gt; 自分&lt;br/&gt;&lt;br /&gt;で、唐突めいているけど、あちこち調べながら X なしで squeeze を KVM にてインストールする方法。あちこち調べたのは良いけど、ポロポロ忘れるので...&lt;br/&gt;&lt;br /&gt;目的としては DRBD や heartbeat 試したく lxc 使おうとしたけど、今々は lxc 上で DRBD 動かず。&lt;a href="http://old.nabble.com/DRBD-on-container,-lxc-tc31198640.html"&gt;ちょっと挑戦した&lt;/a&gt; けど、8.4 で connector 止めて genetlink 使う予定だそうなので、素直に? 挫折、待たせてもらうことに。d-i をイジる手もあるそうだけど、素の netinst.iso で何度か試してみて忘れがちなコト &lt;ul&gt;&lt;li&gt;真っ黒画面でスペース &amp;amp; linux test&lt;/li&gt;&lt;li&gt;/etc/default/grub の編集 &amp;amp; update-grub&lt;/li&gt;&lt;li&gt;/etc/inittab の編集&lt;/li&gt;&lt;/ul&gt;イメージの作成&lt;blockquote&gt;&lt;pre&gt;$ kvm-img create -f raw drbd1.img 8G&lt;br /&gt;Formatting 'drbd1.img', fmt=raw size=8589934592&lt;br /&gt;$ ls&lt;br /&gt;debian-6.0.0-amd64-netinst.iso  drbd1.img&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;-f qcow2 が正統? なのだろうけど、後々ホスト側からイジるにあたって&lt;br /&gt;kvm-nbd とか面倒なので...で起動&lt;blockquote&gt;&lt;pre&gt;$ kvm -cdrom debian-6.0.0-amd64-netinst.iso -hda drbd1.img -boot d -curses&lt;/pre&gt;&lt;/blockquote&gt;真っ黒画面の真ん中に&lt;pre&gt;    640x480&lt;/pre&gt;で、何も表示されないけどスペース一回押した後に (ここ何押下するかよく忘れる)&lt;pre&gt;    linux text&lt;/pre&gt;とすると...&lt;blockquote&gt;&lt;pre&gt;                           Welcome to Debian GNU/Linux!                                F1&lt;br /&gt;&lt;br /&gt;                                                                                             &lt;br /&gt;         This is a Debian 6.0 (squeeze) installation CD-ROM.                             &lt;br /&gt;         It was built 20110205-14:31; d-i 20110106+b1.                                   &lt;br /&gt;                                                                                         &lt;br /&gt;         HELP INDEX                                                                      &lt;br /&gt;                                                                                         &lt;br /&gt;         KEY    TOPIC                                                                    &lt;br /&gt;                                                                                         &lt;br /&gt;         &amp;lt;F1&amp;gt;   This page, the help index.                                               &lt;br /&gt;         &amp;lt;F2&amp;gt;   Prerequisites for installing Debian.                                     &lt;br /&gt;         &amp;lt;F3&amp;gt;   Boot methods for special ways of using this CD-ROM                       &lt;br /&gt;         &amp;lt;F4&amp;gt;   Additional boot methods; rescue mode.                                    &lt;br /&gt;         &amp;lt;F5&amp;gt;   Special boot parameters, overview.                                       &lt;br /&gt;         &amp;lt;F6&amp;gt;   Special boot parameters for special machines.                            &lt;br /&gt;         &amp;lt;F7&amp;gt;   Special boot parameters for selected disk controllers.                   &lt;br /&gt;         &amp;lt;F8&amp;gt;   Special boot parameters for the install system.                          &lt;br /&gt;         &amp;lt;F9&amp;gt;   How to get help.                                                         &lt;br /&gt;         &amp;lt;F10&amp;gt;  Copyrights and warranties.                                               &lt;br /&gt;                                                                                         &lt;br /&gt;                                                                                         &lt;br /&gt;                                                                                         &lt;br /&gt;         Press F2 through F10 for details, or ENTER to boot:&lt;/pre&gt;&lt;/blockquote&gt;こんな画面。ここで F8&lt;blockquote&gt;&lt;pre&gt;            SPECIAL BOOT PARAMETERS - INSTALLATION SYSTEM                                 F8&lt;br /&gt;                                                                                                                               &lt;br /&gt;                                                                                                                               &lt;br /&gt;         You can use the following boot parameters at the boot: prompt,                  &lt;br /&gt;         in combination with the boot method (see &amp;lt;F3&amp;gt;). These parameters                &lt;br /&gt;         control how the installer works.                                                &lt;br /&gt;                                                                                         &lt;br /&gt;         RESULT                                  PARAMETER                               &lt;br /&gt;         Disable framebuffer                     vga=normal fb=false                     &lt;br /&gt;         Don't start PCMCIA                      hw-detect/start_pcmcia=false            &lt;br /&gt;         Force static network config             netcfg/disable_dhcp=true                &lt;br /&gt;         Set keyboard map                        bootkbd=es                              &lt;br /&gt;         Select the kde or xfce desktops         desktop=kde                             &lt;br /&gt;                                                                                         &lt;br /&gt;         Accessibility options (last 2 options not available for all images):            &lt;br /&gt;           Use high contrast theme               theme=dark                              &lt;br /&gt;           Use Braille tty                       brltty=driver,device,texttable          &lt;br /&gt;           Use Speakup                           speakup.synth=driver                    &lt;br /&gt;                                                                                                                            &lt;br /&gt;                                                                                                                            &lt;br /&gt;         For example:                                                                    &lt;br /&gt;          boot: install vga=normal fb=false                                             &lt;br /&gt;                                                                                           &lt;br /&gt;         Press F1 for the help index, or ENTER to boot: &lt;/pre&gt;&lt;/blockquote&gt;For example そのまま&lt;blockquote&gt;&lt;pre&gt;    install vga=normal fb=false&lt;/pre&gt;&lt;/blockquote&gt;で進む。イメージファイル名の通り DRBD を試したかったのでパーティションは 6G を / に 2G は何もせず残りを swap として。Software Selection では Standard と SSH。GRUB のインストールまで終ってリブートするから CD 外してね。になったところ&lt;blockquote&gt;&lt;pre&gt;               [!!] Finish the installation&lt;br /&gt;                                                                  &lt;br /&gt;                        Installation complete                        &lt;br /&gt;         Installation is complete, so it is time to boot into your new system.&lt;br /&gt;         Make sure to remove the installation media (CD-ROM, floppies), so    &lt;br /&gt;         that you boot into the new system rather than restarting the         &lt;br /&gt;         installation.                                                        &lt;br /&gt;                                                                  &lt;br /&gt;            &amp;lt;Go Back&amp;gt;                                          &amp;lt;Continue&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;で Go Back。Execute Shell を選択して、ちょっと面倒だけど&lt;blockquote&gt;&lt;pre&gt;BusyBox v1.17.1 (Debian 1:1.17.1-8) built-in shell (ash)&lt;br /&gt;Enter 'help' for a list of built-in commands.                                   &lt;br /&gt;&lt;br /&gt;~ # mount                                                                       &lt;br /&gt;rootfs on / type rootfs (rw)                                                    &lt;br /&gt;none on /proc type proc (rw,relatime)                                           &lt;br /&gt;none on /sys type sysfs (rw,relatime)                                           &lt;br /&gt;tmpfs on /dev type tmpfs (rw,relatime,mode=755)                                 &lt;br /&gt;none on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)          &lt;br /&gt;none on /sys/kernel/debug type debugfs (rw,relatime)                            &lt;br /&gt;/dev/sda1 on /target type ext3 (rw,relatime,errors=remount-ro,data=ordered)     &lt;br /&gt;/dev/sda1 on /dev/.static/dev type ext3 (rw,relatime,errors=remount-ro,data=orde&lt;br /&gt;red)                                                                            &lt;br /&gt;tmpfs on /target/dev type tmpfs (rw,relatime,mode=755)                          &lt;br /&gt;~ # chroot /target                                                              &lt;br /&gt;# cd /etc/default                                                               &lt;br /&gt;# cp grub grub.dpkg-dist                                                        &lt;br /&gt;# vi grub&lt;br /&gt;....&lt;br /&gt;# diff -uw grub.dpkg-dist grub                                                  &lt;br /&gt;--- grub.dpkg-dist      2011-03-28 11:49:36.000000000 +0900                     &lt;br /&gt;+++ grub        2011-03-28 11:45:39.000000000 +0900                             &lt;br /&gt;@@ -4,8 +4,8 @@                                                                 &lt;br /&gt; GRUB_DEFAULT=0                                                                 &lt;br /&gt; GRUB_TIMEOUT=5                                                                 &lt;br /&gt; GRUB_DISTRIBUTOR=`lsb_release -i -s 2&gt; /dev/null || echo Debian`               &lt;br /&gt;-GRUB_CMDLINE_LINUX_DEFAULT="quiet"                                             &lt;br /&gt;-GRUB_CMDLINE_LINUX=""                                                          &lt;br /&gt;+GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8r"                      &lt;br /&gt;+GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop&lt;br /&gt;=1"                                                                             &lt;br /&gt;                                                                                &lt;br /&gt; # Uncomment to enable BadRAM filtering, modify to suit your needs              &lt;br /&gt; # This works with Linux (no patch required) and with any kernel that obtains   &lt;br /&gt;@@ -13,7 +13,7 @@                                                               &lt;br /&gt; #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"                     &lt;br /&gt;                                                                                &lt;br /&gt; # Uncomment to disable graphical terminal (grub-pc only)                       &lt;br /&gt;-#GRUB_TERMINAL=console                                                         &lt;br /&gt;+GRUB_TERMINAL="serial console"                                                 &lt;br /&gt;                                                                                &lt;br /&gt; # The resolution used on graphical terminal                                    &lt;br /&gt; # note that you can use only modes which your graphic card supports via VBE    &lt;br /&gt;# update-grub&lt;br /&gt;Generating grub.cfg ...&lt;br /&gt;Found linux image: /boot/vmlinuz-2.6.32-5-amd64&lt;br /&gt;Found initrd image: /boot/initrd.img-2.6.32-5-amd64&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;もう一つ /etc/inittab も&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;# cd /etc                                                                       &lt;br /&gt;# cp inittab inittab.dpkg-dist                                                  &lt;br /&gt;# vi inittab&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;# diff -uw inittab.dpkg-dist inittab | head                                     &lt;br /&gt;--- inittab.dpkg-dist   2011-03-28 11:52:02.000000000 +0900                     &lt;br /&gt;+++ inittab     2011-03-28 11:53:16.000000000 +0900                             &lt;br /&gt;@@ -52,15 +52,15 @@                                                             &lt;br /&gt; # so if you want to add more getty's go ahead but skip tty7 if you run X.      &lt;br /&gt; #                                                                              &lt;br /&gt; 1:2345:respawn:/sbin/getty 38400 tty1                                          &lt;br /&gt;-2:23:respawn:/sbin/getty 38400 tty2                                            &lt;br /&gt;-3:23:respawn:/sbin/getty 38400 tty3                                            &lt;br /&gt;-4:23:respawn:/sbin/getty 38400 tty4                                            &lt;br /&gt;-5:23:respawn:/sbin/getty 38400 tty5                                            &lt;br /&gt;-6:23:respawn:/sbin/getty 38400 tty6                                            &lt;br /&gt;+#2:23:respawn:/sbin/getty 38400 tty2                                           &lt;br /&gt;+#3:23:respawn:/sbin/getty 38400 tty3                                           &lt;br /&gt;+#4:23:respawn:/sbin/getty 38400 tty4                                           &lt;br /&gt;+#5:23:respawn:/sbin/getty 38400 tty5                                           &lt;br /&gt;+#6:23:respawn:/sbin/getty 38400 tty6                                           &lt;br /&gt;                                                                                &lt;br /&gt; # Example how to put a getty on a serial line (for a terminal)                 &lt;br /&gt; #                                                                              &lt;br /&gt;-#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100                                 &lt;br /&gt;+T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100                                &lt;br /&gt; #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100                                 &lt;br /&gt;                                                                                &lt;br /&gt; # Example how to put a getty on a modem line.                                  &lt;br /&gt;# sync&lt;br /&gt;# exit                                                                          &lt;br /&gt;~ # sync                                                                        &lt;br /&gt;~ # exit&lt;/pre&gt;&lt;/blockquote&gt;でメニューの Finish the Inistallation &amp; Continue... で再起動しないので、他コンソールから kill して再起動。今度は -curses じゃなくて -nographic で&lt;pre&gt;&lt;blockquote&gt;    kvm -nographic drbd1.img&lt;/pre&gt;&lt;/blockquote&gt; でクライアントとして使う分にはソレナリ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8924724686833282782?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8924724686833282782/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8924724686833282782' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8924724686833282782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8924724686833282782'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/03/kvm-debian-squeeze.html' title='ターミナルで kvm, debian squeeze'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-454111799420863625</id><published>2011-02-21T21:29:00.003+09:00</published><updated>2011-02-21T22:04:01.221+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><title type='text'>obs600 で debian squeeze - その 2</title><content type='html'>uImage.initrd-cfboot の作成。src.tgz 展開して (bmake の?) Makefile を眺めると u-boot というパッケージの mkimage とゆーコマンドで三つのファイルを合わせている模様。最初がカーネル、次が ramdisk で最後が obs600.dtd。最初は先に make-kpkg したときにできた vmlinux を objcopy、最後はカーネルソースディレクトリで make のターゲットになってる。で真ん中の抽出。file コマンドの magic どこにあるか知らないので...&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;echo test | gzip &amp;gt; test.gz&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;hexdump test.gz&lt;/b&gt;&lt;br /&gt;0000000 8b1f 0008 e2ea 4d5c 0300 492b 2e2d 02e1&lt;br /&gt;0000010 c600 b935 053b 0000 0000&lt;br /&gt;0000019&lt;/pre&gt;&lt;/blockquote&gt;で uImage.initrd-cfboot 持ってきて眺めてみると&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;wget http://ftp.plathome.co.jp/pub/OBS600/LATEST/powerpc-obs600/installation/uImage.initrd-cfboot&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;mkimage -l uImage.initrd-cfboot&lt;/b&gt;&lt;br /&gt;Image Name:   0.5-RELEASE-20101206-cfboot&lt;br /&gt;Created:      Sat Dec 11 23:23:08 2010&lt;br /&gt;Image Type:   PowerPC Linux Multi-File Image (gzip compressed)&lt;br /&gt;Data Size:    2118162 Bytes = 2068.52 kB = 2.02 MB&lt;br /&gt;Load Address: 00000000&lt;br /&gt;Entry Point:  00000000&lt;br /&gt;Contents:&lt;br /&gt;   Image 0: 1694842 Bytes = 1655.12 kB = 1.62 MB&lt;br /&gt;   Image 1: 415397 Bytes = 405.66 kB = 0.40 MB&lt;br /&gt;   Image 2: 7902 Bytes = 7.72 kB = 0.01 MB&lt;br /&gt;$ &lt;b&gt;hexdump uImage.initrd-cfboot | head -n8&lt;/b&gt;&lt;br /&gt;0000000 0527 5619 57d2 dc0f 034d 4c89 2000 1252&lt;br /&gt;0000010 0000 0000 0000 0000 8ea3 d3c5 0705 0104&lt;br /&gt;0000020 2e30 2d35 4552 454c 5341 2d45 3032 3031&lt;br /&gt;0000030 3231 3630 632d 6266 6f6f 0074 0000 0000&lt;br /&gt;0000040 1900 7adc 0600 a556 0000 de1e 0000 0000&lt;br /&gt;0000050 8b1f 0808 dfa9 4d01 0302 6d76 696c 756e&lt;br /&gt;0000060 2e78 6962 2e6e 3432 3532 0033 5be4 707d&lt;br /&gt;0000070 5554 3f96 bbaf 1d03 4388 0d03 0483 63a1&lt;/pre&gt;&lt;/blockquote&gt;0x50 あたりからがカーネルの gz らしい。mkimage -l の出力に素直に従って&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;dd if=uImage.initrd-cfboot bs=1 skip=$((0x50)) count=1694842 of=Image.0&lt;/b&gt;&lt;br /&gt;1694842+0 records in                                   &lt;br /&gt;1694842+0 records out&lt;br /&gt;1694842 bytes (1.7 MB) copied, 7.09509 s, 239 kB/s&lt;br /&gt;$ &lt;b&gt;file Image.0&lt;/b&gt;                                        &lt;br /&gt;Image.0: gzip compressed data, was "vmlinux.bin.24253", from Unix, last modified: Fri Dec 10 17:07:05 2010, max compression&lt;/pre&gt;&lt;/blockquote&gt;おぉ。調子にのって&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;dd if=uImage.initrd-cfboot bs=1 skip=$((0x50 + 1694842)) count=415397 of=Image.1&lt;/b&gt;&lt;br /&gt;415397+0 records in&lt;br /&gt;415397+0 records out&lt;br /&gt;415397 bytes (415 kB) copied, 1.6545 s, 251 kB/s&lt;br /&gt;$ &lt;b&gt;file Image.1&lt;/b&gt;&lt;br /&gt;Image.1: data&lt;/pre&gt;&lt;/blockquote&gt;むーんと、再度 0x1f 0x8b 0x08 を探して&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;hexdump Image.1 | head -n 8&lt;/b&gt;&lt;br /&gt;0000000 0000 8b1f 0808 8922 4d03 0302 6172 646d&lt;br /&gt;0000010 7369 2e6b 6d69 6761 2d65 6663 6f62 746f&lt;br /&gt;0000020 ec00 099d 1c7c 7d57 47c7 3abb b5ac 3893&lt;br /&gt;0000030 0877 7924 e496 8e43 d0f7 964a 396d 2c72&lt;br /&gt;0000040 72db c4ec 2257 39c7 271c 9d9e d59d b44e&lt;br /&gt;0000050 b3bb 9999 91d5 25c4 b694 9694 dc33 8e10&lt;br /&gt;0000060 29b4 a16d 69b4 e108 204a 82f4 d0b6 5a16&lt;br /&gt;0000070 3d08 d028 b693 6850 bd0b f4db e6ff 4690&lt;br /&gt;$ &lt;b&gt;dd if=uImage.initrd-cfboot bs=1 skip=$((0x50 + 1694842 + 2)) count=415397 of=Image.1&lt;/b&gt;&lt;br /&gt;415397+0 records in&lt;br /&gt;415397+0 records out&lt;br /&gt;415397 bytes (415 kB) copied, 1.71914 s, 242 kB/s&lt;br /&gt;$ &lt;b&gt;file Image.1&lt;/b&gt;&lt;br /&gt;Image.1: gzip compressed data, was "ramdisk.image-cfboot", from Unix, last modified: Sat Dec 11 23:22:26 2010, max compression&lt;/pre&gt;&lt;/blockquote&gt;何か力技っぽいけど、まぁ。試しに&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;gzip -cd &amp;lt; Image.1 &amp;gt; ramdisk.image-cfboot&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;file ramdisk.image-cfboot&lt;/b&gt;&lt;br /&gt;ramdisk.image-cfboot: Linux rev 1.0 ext2 filesystem data, UUID=79b27492-4074-4633-a1e1-9094c7a4eccd&lt;br /&gt;$ &lt;b&gt;su&lt;/b&gt;&lt;br /&gt;Password:&lt;br /&gt;# &lt;b&gt;mkdir tmp&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;mount -o loop ramdisk.image-cfboot tmp&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ls tmp&lt;/b&gt;&lt;br /&gt;bin  dev  etc  home  lib  linuxrc  lost+found  mnt  proc  root  sbin  sys  tmp  usr  var&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;あとは前後の二つ&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;cd linux-source-2.6.32&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;make ARCH=powerpc obs600.dtb&lt;/b&gt;&lt;br /&gt;/home/chamaken/obs600/linux-source-2.6.32/scripts/dtc/dtc -O dtb -o arch/powerpc/boot/obs600.dtb -b 0 -p 1024 /home/chamaken/obs600/linux-s\&lt;br /&gt;ource-2.6.32/arch/powerpc/boot/dts/obs600.dts&lt;br /&gt;DTC: dts-&amp;gt;dtb  on file "/home/chamaken/obs600/linux-source-2.6.32/arch/powerpc/boot/dts/obs600.dts"&lt;br /&gt;$ &lt;b&gt;cp arch/powerpc/boot/obs600.dtb ..&lt;/b&gt;&lt;/pre&gt;&lt;/blockquote&gt;正直よくわかってないけど先の通り Makefile 眺めたところの結果&lt;blockquote&gt;&lt;pre&gt;$ &lt;b&gt;powerpc-linux-gnu-objcopy -O binary vmlinux ../vmlinux.bin&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;cd ..&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;gzip vmlinux.bin&lt;/b&gt;&lt;br /&gt;$ &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;Image.0  linux-image-2.6.32_0.9_powerpc.deb  obs600.dtb            src.tgz  uImage.initrd-cfboot  vmlinux.bin.gz&lt;br /&gt;Image.1  linux-source-2.6.32                 ramdisk.image-cfboot  test.gz  usr&lt;br /&gt;$ &lt;b&gt;mkimage -n "original.$(date +'%FT%T')" -A ppc -O linux -T multi -C gzip -d vmlinux.bin.gz:Image.1:obs600.dtb myImage.initrd-cfboot&lt;/b&gt;&lt;br /&gt;Image Name:   original.2011-02-20T18:18:09&lt;br /&gt;Created:      Sun Feb 20 18:18:09 2011&lt;br /&gt;Image Type:   PowerPC Linux Multi-File Image (gzip compressed)&lt;br /&gt;Data Size:    2304477 Bytes = 2250.47 kB = 2.20 MB&lt;br /&gt;Load Address: 00000000&lt;br /&gt;Entry Point:  00000000&lt;br /&gt;Contents:&lt;br /&gt;   Image 0: 1881007 Bytes = 1836.92 kB = 1.79 MB&lt;br /&gt;   Image 1: 415397 Bytes = 405.66 kB = 0.40 MB&lt;br /&gt;   Image 2: 8053 Bytes = 7.86 kB = 0.01 MB&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;えぇ、モチロン、コレはチラシのウラ、備忘録。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-454111799420863625?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/454111799420863625/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=454111799420863625' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/454111799420863625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/454111799420863625'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/02/obs600-debian-squeeze-2.html' title='obs600 で debian squeeze - その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2818490440265001035</id><published>2011-02-20T20:45:00.002+09:00</published><updated>2011-02-20T21:39:19.723+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obs600'/><title type='text'>obs600 で debian squeeze - その 1</title><content type='html'>squeeze がリリースされたので「&lt;a href="http://blog.yellowback.net/archives/468-20100909.html"&gt;OBS600でlinux-2.6.35.4 + Debian squeeze&lt;/a&gt;」と同じようなコトしてみた。ただ ssdlinux を走らせるのが面倒だったので極力 amd64 からのクロス環境でダーティハック込み。まずは「&lt;a href="http://openblocks.plathome.co.jp/products/600/faq.html#faq-517"&gt;ファームウェアアップデートを実行したら起動しなくなりました。どうすれば復旧できますか。&lt;/a&gt;」の準備&lt;blockquote&gt;&lt;pre&gt;# apt-get install tftpd-hpa&lt;br /&gt;....&lt;br /&gt;# cd /srv/tftp&lt;br /&gt;# wget http://ftp.plathome.co.jp/pub/OBS600/0.5-LATEST/powerpc-obs600/installation/uImage.initrd&lt;br /&gt;....&lt;br /&gt;# ip addr add 192.168.253.1/24 dev eth0&lt;br /&gt;# /etc/init.d/tftpd-hpa restart&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;ディップスイッチ操作が必要になる --- であろうとフタは外しておく。&lt;br/&gt;順序はどうでもよいけど「&lt;a href="http://openblocks.plathome.co.jp/support/documentation/other_os.html"&gt;他OSのインストール方法 (OBS600)&lt;/a&gt;」見つつ obs600 側の CF フォーマット。&lt;blockquote&gt;&lt;pre&gt;# fdisk /dev/sda&lt;br /&gt;# mke2fs -j -b 4096 -L / /dev/sda1&lt;br /&gt;# mount LABEL=/ /mnt# cd /mnt/&lt;/pre&gt;&lt;/blockquote&gt;また&lt;a href="http://openblocks.plathome.co.jp/support/obs600d/setup_develop_environment.html"&gt; 開発環境の構築&lt;/a&gt;の中「クロス開発 (VMware等のx86環境上での開発)」の 3. 必要なパッケージを追加します。までやっとく。&lt;p&gt;&lt;/p&gt;で amd64 側でのカーネルのコンパイルヘ。obs600 のパッチは ssdlinux のソースから&lt;blockquote&gt;&lt;pre&gt;$ mkdir obs600&lt;br /&gt;$ cd obs600&lt;br /&gt;$ wget http://ftp.plathome.co.jp/pub/ssdlinux/0.5-LATEST/source/src.tgz&lt;br /&gt;$ tar xzf src.tgz&lt;br /&gt;$ ls usr/src/mkdist/kernel&lt;br /&gt;2.4.20  2.4.26  2.4.37  2.6.16  2.6.26  2.6.29  2.6.32  2.6.33  2.6.35  2.6.36  Makefile&lt;/pre&gt;&lt;/blockquote&gt;2.6.36 も動くけど、ここは squeeze ソース使って&lt;blockquote&gt;&lt;pre&gt;$ sudo apt-get install linux-source-2.6.32&lt;br /&gt;$ tar xjf /usr/src/linux-source-2.6.32.tar.bz2 -C .&lt;br /&gt;$ ls&lt;br /&gt;linux-source-2.6.32  src.tgz  usr&lt;/pre&gt;&lt;/blockquote&gt;2.6.32 のパッチあて&lt;blockquote&gt;&lt;pre&gt;$ cd linux-source-2.6.32&lt;br /&gt;$ for i in ../usr/src/mkdist/kernel/2.6.32/patches/*.patch; do patch -p1 &amp;lt; $i; done&lt;br /&gt;....&lt;br /&gt;patching file Makefile&lt;br /&gt;Reversed (or previously applied) patch detected!  Assume -R? [n]&lt;br /&gt;Apply anyway? [n]&lt;br /&gt;Skipping patch.&lt;br /&gt;4 out of 4 hunks ignored -- saving rejects to file Makefile.rej&lt;br /&gt;patching file scripts/Makefile.modinst&lt;/pre&gt;&lt;/blockquote&gt;この Makefile の rej はムシしても OK な範囲。カーネルモジュールを gzip してくれなくてもよいので scripts.patch は除外。その他必要なファイルをコピーしておく&lt;blockquote&gt;&lt;pre&gt;$ patch -p1 -R &lt;  ../usr/src/mkdist/kernel/2.6.32/patches/scripts.patch&lt;br /&gt;$ cp ../usr/src/mkdist/kernel/2.6.32/obs600.dts arch/powerpc/boot/dts/&lt;br /&gt;$ cp ../usr/src/mkdist/kernel/2.6.32/dot.config.powerpc-obs600 .config&lt;br /&gt;$ make ARCH=powerpc menuconfig&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;$ CONCURRENCY_LEVEL=4 fakeroot make-kpkg --arch=powerpc --revision 0.9 kernel_image&lt;br /&gt;....&lt;br /&gt;$ cd ..&lt;br /&gt;$ ls&lt;br /&gt;linux-image-2.6.32_0.9_powerpc.deb  linux-source-2.6.32  src.tgz  usr&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt; と、その 1 はここまで。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2818490440265001035?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2818490440265001035/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2818490440265001035' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2818490440265001035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2818490440265001035'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2011/02/obs600-debian-squeeze-1.html' title='obs600 で debian squeeze - その 1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4384759115127538412</id><published>2009-12-14T20:14:00.004+09:00</published><updated>2009-12-14T21:48:37.735+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>lisp の quicksort</title><content type='html'>まぁ、まだ元気だよ。と言うことで、とっても久しぶり。&lt;br /&gt;&lt;br /&gt;年に一度位。歳と共に頻度が少なくなる気がするけど &lt;a href="http://mitpress.mit.edu/sicp/"&gt;SICP&lt;/a&gt; を中途半端なまま眺めたりすることがある。少し前くらいかな。関数型言語が流行ったらしくていくつか入門書らしきものも購入したり。その中に Haskell の quick ソートがあった。&lt;a href="http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell"&gt;3.1 Quicksort in Haskell&lt;/a&gt;&lt;quote&gt;&lt;pre&gt;qsort []     = []&lt;br /&gt;qsort (x:xs) = qsort (filter (&lt; x) xs) ++ [x] ++ qsort (filter (&gt;= x) xs)&lt;/pre&gt;&lt;/quote&gt;すんごいシンプル。&lt;ul&gt;&lt;li&gt;遅延評価&lt;/li&gt;&lt;li&gt;副作用はモナドが引き受ける&lt;/li&gt;&lt;/ul&gt;あたりが魅力的。同じようなものは...と探したところ、Lisp のものもあった。&lt;a href="http://swisspig.net/r/post/blog-200603301157"&gt;swisspig.net - The Beauty of a Lisp Quicksort&lt;/a&gt;&lt;quote&gt;&lt;pre&gt;(defun quicksort (lis) (if (null lis) nil&lt;br /&gt;  (let* ((x (car lis)) (r (cdr lis)) (fn (lambda (a) (&lt; a x))))&lt;br /&gt;    (append (quicksort (remove-if-not fn r)) (list x)&lt;br /&gt;      (quicksort (remove-if fn r))))))&lt;/pre&gt;&lt;/quote&gt;で、拙い Scheme では....&lt;quote&gt;&lt;pre&gt;(use srfi-1)&lt;br /&gt;&lt;br /&gt;(define (qsort lst)&lt;br /&gt;  (if (null? lst) '()&lt;br /&gt;      (let* ((x (car lst))&lt;br /&gt;             (r (cdr lst)))&lt;br /&gt;        (append&lt;br /&gt;         (qsort (filter (lambda (a) (&lt; a x)) r))&lt;br /&gt;         (list x)&lt;br /&gt;         (qsort (filter (lambda (a) (&gt;= a x)) r))))))&lt;/pre&gt;&lt;/quote&gt;さらに &lt;a href="http://practical-scheme.net/wiliki/wiliki2.cgi?Shiro"&gt;Shiro さん&lt;/a&gt; の続きを早く読みたい &lt;a href="http://practical-scheme.net/docs/cont-j.html"&gt;なんでも継続&lt;/a&gt;を眺めつつ.... こんな感じなのかなぁ。&lt;quote&gt;&lt;pre&gt;(define (qsort/cps lst cont)&lt;br /&gt;  (if (null? lst) (cont '())&lt;br /&gt;      (let* ((x (car lst))&lt;br /&gt;             (r (cdr lst)))&lt;br /&gt;        (qsort/cps (filter (lambda (a) (&lt; a x)) r)&lt;br /&gt;                   (lambda (n)&lt;br /&gt;                     (qsort/cps (filter (lambda (a) (&gt;= a x)) r)&lt;br /&gt;                                (lambda (m) (cont (append n (list x) m)))))))))&lt;/pre&gt;&lt;/quote&gt;メジャーどころの Python でも同じようにするには、こんなん?&lt;quote&gt;&lt;pre&gt;def qsort(lst):&lt;br /&gt;    if len(lst) &lt; 1: return []&lt;br /&gt;&lt;br /&gt;    x = lst[0]&lt;br /&gt;    r = lst[1:]&lt;br /&gt;&lt;br /&gt;    return qsort([i for i in r if i &lt; x]) \&lt;br /&gt;           + [x] \&lt;br /&gt;           + qsort([i for i in r if i &gt;= x])&lt;/pre&gt;&lt;/quote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4384759115127538412?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4384759115127538412/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4384759115127538412' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4384759115127538412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4384759115127538412'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/12/lisp-quicksort.html' title='lisp の quicksort'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4961883817340493867</id><published>2009-06-30T21:10:00.003+09:00</published><updated>2009-06-30T21:38:16.265+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>lxc の (今までの) ごめんなさい</title><content type='html'>いくつか嘘ついていました。&lt;dl&gt;&lt;dt&gt;&lt;b&gt;devpts&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;lxc.mount に指定する fstab にて devpts を&lt;blockquote&gt;&lt;pre&gt;/dev/pts /opt/lxc/sshd/rootfs/dev/pts none bind,newinstance 0 0&lt;/pre&gt;&lt;/blockquote&gt;なんて書いていましたが、意図した正しくは&lt;blockquote&gt;&lt;pre&gt;lxcpts /opt/lxc/sshd/rootfs/dev/pts devpts newinstance,ptmxmode=0666 0 0&lt;/pre&gt;&lt;/blockquote&gt;でした。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;quagga のユーザ、グループ&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;ホスト側とコンテナ内の uid gid が一致しないと動きませんでした。修正しましたので、良ろしかったらお試し下さい。quagga は&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/lxc/quagga.tgz"&gt;こちら&lt;/a&gt;。sshd は&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/lxc/sshd.tgz"&gt;こちら&lt;/a&gt;です。debian/lenny の amd64 です。i386 の方は fstab から /lib64 削除すれば動くと思います。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;/usr/local/lib の liblxc-*.so&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;やっぱ /usr/lib にコピーした方が良さげです。相変わらずの勉強不足で ld.so.cache のフォーマットが x86_64 と i386 が同じで良いかわからず、動かせませんでした&lt;/dd&gt;&lt;/dl&gt;付き合ってくれた人、ごめんなさい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4961883817340493867?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4961883817340493867/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4961883817340493867' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4961883817340493867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4961883817340493867'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/lxc_30.html' title='lxc の (今までの) ごめんなさい'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2090875958005574408</id><published>2009-06-23T22:23:00.001+09:00</published><updated>2009-06-23T23:43:19.996+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>veth に ping</title><content type='html'>lxc で使っている veth は &lt;a href="http://wiki.openvz.org/Virtual_Ethernet_device"&gt;OpenVZ 由来だそうだ&lt;/a&gt;。何かちょっと不思議に思って veth 作って ping 投げてみた。&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ip link add type veth&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip link ls veth0&lt;/b&gt;&lt;br /&gt;11: veth0: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN qlen 1000&lt;br /&gt;    link/ether 9a:87:c9:92:6b:91 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;# &lt;b&gt;ip link ls veth1&lt;/b&gt;&lt;br /&gt;12: veth1: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN qlen 1000&lt;br /&gt;    link/ether 42:01:93:00:97:d9 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;# &lt;b&gt;ip link set veth0 up&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip link set veth1 up&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip addr add 192.168.1.10/24 dev veth0&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip addr add 192.168.1.11/24 dev veth1&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ping -c 4 192.168.1.10&lt;/b&gt;&lt;br /&gt;PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.074 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.073 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=3 ttl=64 time=0.070 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=4 ttl=64 time=0.072 ms&lt;br /&gt;&lt;br /&gt;--- 192.168.1.10 ping statistics ---&lt;br /&gt;4 packets transmitted, 4 received, 0% packet loss, time 2999ms&lt;br /&gt;rtt min/avg/max/mdev = 0.070/0.072/0.074/0.006 ms&lt;br /&gt;# &lt;b&gt;ping -c 4 192.168.1.11&lt;/b&gt;&lt;br /&gt;PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.&lt;br /&gt;64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.094 ms&lt;br /&gt;64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.026 ms&lt;br /&gt;64 bytes from 192.168.1.11: icmp_seq=3 ttl=64 time=0.078 ms&lt;br /&gt;64 bytes from 192.168.1.11: icmp_seq=4 ttl=64 time=0.069 ms&lt;br /&gt;&lt;br /&gt;--- 192.168.1.11 ping statistics ---&lt;br /&gt;4 packets transmitted, 4 received, 0% packet loss, time 2999ms&lt;br /&gt;rtt min/avg/max/mdev = 0.026/0.066/0.094/0.027 ms&lt;/pre&gt;&lt;/blockquote&gt;まぁ loopback みたいな感じ。で veth0 から veth1 - 192.168.1.11 に ping 投げてみると&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ping -I veth0 192.168.1.11&lt;/b&gt;&lt;br /&gt;PING 192.168.1.11 (192.168.1.11) from 192.168.1.10 veth0: 56(84) bytes of data.&lt;br /&gt;From 192.168.1.10 icmp_seq=2 Destination Host Unreachable&lt;br /&gt;From 192.168.1.10 icmp_seq=3 Destination Host Unreachable&lt;br /&gt;From 192.168.1.10 icmp_seq=4 Destination Host Unreachable&lt;/pre&gt;&lt;/blockquote&gt;音沙汰なしっ。tcpdump で眺めてみると&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;tcpdump -ntei veth0&lt;/b&gt;&lt;br /&gt;tcpdump: verbose output suppressed, use -v or -vv for full protocol decode&lt;br /&gt;listening on veth0, link-type EN10MB (Ethernet), capture size 96 bytes&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;^C&lt;br /&gt;3 packets captured&lt;br /&gt;3 packets received by filter&lt;br /&gt;0 packets dropped by kernel&lt;br /&gt;# &lt;b&gt;tcpdump -ntei veth1&lt;/b&gt;&lt;br /&gt;tcpdump: verbose output suppressed, use -v or -vv for full protocol decode&lt;br /&gt;listening on veth1, link-type EN10MB (Ethernet), capture size 96 bytes&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;9a:87:c9:92:6b:91 &gt; ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.11 tell 192.168.1.10&lt;br /&gt;^C&lt;br /&gt;4 packets captured&lt;br /&gt;4 packets received by filter&lt;br /&gt;0 packets dropped by kernel&lt;/pre&gt;&lt;/blockquote&gt;lxc 追って調べてみるのは面倒だなぁ。と Google 先生に相談したところ lxc の前、ns_exec なるソースを見つけた。既に昔のものになっているらしく&lt;ul&gt;&lt;li&gt;&lt;a href=" http://legoater.free.fr/patches/2.6.27/2.6.27-rc1-mm1/ns_exec.c"&gt;ここから持ってきた&lt;/a&gt;けど無くなりそうなので&lt;/li&gt;&lt;li&gt;ちょっと変更して&lt;blockquote&gt;&lt;pre&gt;--- ns_exec.c.orig 2009-06-21 23:02:41.000000000 +0900&lt;br /&gt;+++ ns_exec.c 2009-06-21 23:03:08.000000000 +0900&lt;br /&gt;@@ -12,7 +12,7 @@&lt;br /&gt; #include &amp;lt;sys/wait.h&amp;gt;&lt;br /&gt; #include &amp;lt;sys/mount.h&amp;gt;&lt;br /&gt; &lt;br /&gt;-#include "clone.h"&lt;br /&gt;+#include &amp;lt;linux/sched.h&amp;gt;&lt;br /&gt; &lt;br /&gt; extern pid_t getpgid(pid_t pid);&lt;br /&gt; extern pid_t getsid(pid_t pid);&lt;/pre&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/lxc/ns_exec.c"&gt;ローカルコピー&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;コンパイルして起動してみる&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;cc -o ns_exec ns_exec.c&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;echo $$&lt;/b&gt;&lt;br /&gt;30530&lt;br /&gt;# &lt;b&gt;./ns_exec -c -n /bin/bash&lt;/b&gt;&lt;br /&gt;about to clone with 40000000&lt;br /&gt;# &lt;b&gt;echo $$&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;30549&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip link ls&lt;/b&gt;&lt;br /&gt;28: lo: &amp;lt;LOOPBACK&amp;gt; mtu 16436 qdisc noop state DOWN &lt;br /&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;29: gre0: &amp;lt;NOARP&amp;gt; mtu 1476 qdisc noop state DOWN &lt;br /&gt;    link/gre 0.0.0.0 brd 0.0.0.0&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;で PID 30549 に veth1 を渡してあげる &lt;br /&gt;(って言い回しが正しいかわからないけど - 別ターミナルから)&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ip link set veth1 netns &lt;i&gt;30549&lt;/i&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/blockquote&gt; ns_exec したターミナルに戻ってみると&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ip link ls&lt;/b&gt;&lt;br /&gt;28: lo: &amp;lt;LOOPBACK&amp;gt; mtu 16436 qdisc noop state DOWN &lt;br /&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;29: gre0: &amp;lt;NOARP&amp;gt; mtu 1476 qdisc noop state DOWN &lt;br /&gt;    link/gre 0.0.0.0 brd 0.0.0.0&lt;br /&gt;31: veth1: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN qlen 1000&lt;br /&gt;    link/ether 1e:cf:fa:8f:a4:4b brd ff:ff:ff:ff:ff:ff&lt;/pre&gt;&lt;/blockquote&gt;おぉ、わたってる。リンク上げたりアドレス設定すると期待通り&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ip link set veth1 up&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip addr ls&lt;/b&gt;&lt;br /&gt;28: lo: &amp;lt;LOOPBACK&amp;gt; mtu 16436 qdisc noop state DOWN &lt;br /&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;29: gre0: &amp;lt;NOARP&amp;gt; mtu 1476 qdisc noop state DOWN &lt;br /&gt;    link/gre 0.0.0.0 brd 0.0.0.0&lt;br /&gt;31: veth1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;br /&gt;    link/ether 1e:cf:fa:8f:a4:4b brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet6 fe80::1ccf:faff:fe8f:a44b/64 scope link &lt;br /&gt;       valid_lft forever preferred_lft forever&lt;br /&gt;# &lt;b&gt;ip addr add 192.168.1.11/24 dev veth1&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ping -I veth1 192.168.1.10&lt;/b&gt;&lt;br /&gt;PING 192.168.1.10 (192.168.1.10) from 192.168.1.11 veth1: 56(84) bytes of data.&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=3.72 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.131 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=3 ttl=64 time=0.108 ms&lt;br /&gt;64 bytes from 192.168.1.10: icmp_seq=4 ttl=64 time=0.111 ms&lt;br /&gt;^C&lt;br /&gt;--- 192.168.1.10 ping statistics ---&lt;br /&gt;4 packets transmitted, 4 received, 0% packet loss, time 2999ms&lt;br /&gt;rtt min/avg/max/mdev = 0.108/1.019/3.727/1.563 ms&lt;/pre&gt;&lt;/blockquote&gt;&lt;center&gt;&lt;h3&gt;なぜ?&lt;/h3&gt;&lt;/center&gt;例のごとく深く追ってないけど....ARP については&lt;blockquote&gt;&lt;pre&gt;veth_xmit()::driver/net/veth.c&lt;br /&gt;  netif_rx()::net/core/dev.c&lt;br /&gt;    net_rx_action()::net/core/dev.c - softirq&lt;br /&gt;      process_backlog()::net/core/dev.c - dev-&gt;poll()&lt;br /&gt;        netif_receive_skb()::net/core/dev.c&lt;br /&gt;          arp_rcv()::net/ipv4/arp.c&lt;br /&gt;            arp_process()::net/ipv4/arp.c&lt;br /&gt;              arp_ignore()::net/ipv4/arp.c&lt;br /&gt;                inet_confirm_addr()::net/ipv4/devinet.c&lt;br /&gt;                  confirm_addr_indev()::net/ipv4/devinet.c&lt;/pre&gt;&lt;/blockquote&gt;この内 inet_confir_addr() から引用&lt;pre&gt;&lt;blockquote&gt;        struct net *net;&lt;br /&gt;....&lt;br /&gt;        net = dev_net(in_dev-&amp;gt;dev);&lt;br /&gt;....&lt;br /&gt;        for_each_netdev(net, dev) {&lt;br /&gt;                if ((in_dev = __in_dev_get_rcu(dev))) {&lt;br /&gt;                        addr = confirm_addr_indev(in_dev, dst, local, scope);&lt;/blockquote&gt;&lt;/pre&gt;struct net は &lt;file&gt;include/net/net_namespace.h&lt;/file&gt; で定義されている。上記はネットワークの&lt;b&gt;「名前空間毎に」&lt;/b&gt; net_device / in dev を保持していて、これを加味した上で指定された IP アドレスがローカルか否か判断しているらしい。&lt;br /&gt;&lt;br /&gt;ローカルだよ (って表現も上手くないと思うけど) って判断が下り通常は arp_process() にて ARP に応答しない。ns_exec で CLONE_NEWNET してあると、ローカルと判断しない... ``らしい'' ばかりでごめんなさい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2090875958005574408?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2090875958005574408/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2090875958005574408' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2090875958005574408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2090875958005574408'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/veth-ping.html' title='veth に ping'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5582390571763246605</id><published>2009-06-15T19:51:00.002+09:00</published><updated>2009-06-15T21:10:56.978+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>rt73usb rt2500usb で hostapd</title><content type='html'>&lt;dl&gt;&lt;dt&gt;&lt;b&gt;相変わらずの TXDONE_UNKNOWN&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;2.6.30 がリリースされたけど &lt;file&gt;/drivers/net/wireless/rt2x00/rt2x00usb&lt;/file&gt; の TXDONE_UNKNOWN については以前のまま。チェックしている辺を grep すると何となく....&lt;blockquote&gt;&lt;pre&gt;$ fgrep -C 4 'test_bit(TXDONE' *.c&lt;br /&gt;rt2x00dev.c- /*&lt;br /&gt;rt2x00dev.c-  * Update TX statistics.&lt;br /&gt;rt2x00dev.c-  */&lt;br /&gt;rt2x00dev.c- rt2x00dev-&amp;gt;link.qual.tx_success +=&lt;br /&gt;rt2x00dev.c:     test_bit(TXDONE_SUCCESS, &amp;amp;txdesc-&amp;gt;flags);&lt;br /&gt;rt2x00dev.c- rt2x00dev-&amp;gt;link.qual.tx_failed +=&lt;br /&gt;rt2x00dev.c:     test_bit(TXDONE_FAILURE, &amp;amp;txdesc-&amp;gt;flags);&lt;br /&gt;rt2x00dev.c-&lt;br /&gt;rt2x00dev.c- rate_idx = skbdesc-&gt;tx_rate_idx;&lt;br /&gt;rt2x00dev.c- rate_flags = skbdesc-&amp;gt;tx_rate_flags;&lt;br /&gt;rt2x00dev.c-&lt;br /&gt;--&lt;br /&gt;rt2x00dev.c- tx_info-&amp;gt;status.rates[0].count = txdesc-&amp;gt;retry + 1;&lt;br /&gt;rt2x00dev.c- tx_info-&amp;gt;status.rates[1].idx = -1; /* terminate */&lt;br /&gt;rt2x00dev.c-&lt;br /&gt;rt2x00dev.c- if (!(tx_info-&amp;gt;flags &amp;amp; IEEE80211_TX_CTL_NO_ACK)) {&lt;br /&gt;rt2x00dev.c:  if (test_bit(TXDONE_SUCCESS, &amp;amp;txdesc-&amp;gt;flags))&lt;br /&gt;rt2x00dev.c-   tx_info-&amp;gt;flags |= IEEE80211_TX_STAT_ACK;&lt;br /&gt;rt2x00dev.c:  else if (test_bit(TXDONE_FAILURE, &amp;amp;txdesc-&amp;gt;flags))&lt;br /&gt;rt2x00dev.c-   rt2x00dev-&amp;gt;low_level_stats.dot11ACKFailureCount++;&lt;br /&gt;rt2x00dev.c- }&lt;br /&gt;rt2x00dev.c-&lt;br /&gt;rt2x00dev.c- if (rate_flags &amp;amp; IEEE80211_TX_RC_USE_RTS_CTS) {&lt;br /&gt;rt2x00dev.c:  if (test_bit(TXDONE_SUCCESS, &amp;amp;txdesc-&amp;gt;flags))&lt;br /&gt;rt2x00dev.c-   rt2x00dev-&amp;gt;low_level_stats.dot11RTSSuccessCount++;&lt;br /&gt;rt2x00dev.c:  else if (test_bit(TXDONE_FAILURE, &amp;amp;txdesc-&amp;gt;flags))&lt;br /&gt;rt2x00dev.c-   rt2x00dev-&amp;gt;low_level_stats.dot11RTSFailureCount++;&lt;br /&gt;rt2x00dev.c- }&lt;br /&gt;rt2x00dev.c-&lt;br /&gt;rt2x00dev.c- /*&lt;/pre&gt;&lt;/blockquote&gt;上の方はリンク品質、結果送信レートに。下の方が肝心の hostapd で送信可否の判断材料&lt;b&gt;IEEE80211_RADIOTAP_F_TX_FAIL&lt;/b&gt;になるらしい&lt;blockquote&gt;&lt;pre&gt;$ cd net/mac80211/&lt;br /&gt;$ fgrep -C 2 IEEE80211_RADIOTAP_F_TX_FAIL *.c&lt;br /&gt;main.c- if (!(info-&amp;gt;flags &amp;amp; IEEE80211_TX_STAT_ACK) &amp;amp;&amp;amp;&lt;br /&gt;main.c-     !is_multicast_ether_addr(hdr-&amp;gt;addr1))&lt;br /&gt;main.c:  rthdr-&amp;gt;tx_flags |= cpu_to_le16(IEEE80211_RADIOTAP_F_TX_FAIL);&lt;br /&gt;main.c-&lt;br /&gt;main.c- /*&lt;/pre&gt;&lt;/blockquote&gt;で、仕方が無いと言うか無理矢理稼働させるがための二行パッチ&lt;blockquote&gt;&lt;pre&gt;$ cd drivers/net/wireless/rt2x00/&lt;br /&gt;$ diff -ubB rt2x00usb.c.orig rt2x00usb.c&lt;br /&gt;--- rt2x00usb.c.orig    2009-06-15 20:14:27.000000000 +0900&lt;br /&gt;+++ rt2x00usb.c 2009-06-15 20:14:53.000000000 +0900&lt;br /&gt;@@ -200,7 +200,7 @@&lt;br /&gt;         */&lt;br /&gt;        txdesc.flags = 0;&lt;br /&gt;        if (!urb-&amp;gt;status)&lt;br /&gt;-               __set_bit(TXDONE_UNKNOWN, &amp;txdesc.flags);&lt;br /&gt;+               __set_bit(TXDONE_SUCCESS, &amp;txdesc.flags);&lt;br /&gt;        else&lt;br /&gt;                __set_bit(TXDONE_FAILURE, &amp;txdesc.flags);&lt;br /&gt;        txdesc.retry = 0;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;コンパイル&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;hostapd を &lt;a href="http://hostap.epitest.fi/cvs.html"&gt; git やら CVS やらで持って来て&lt;/a&gt;l.... 後出しじゃんけんだけど &lt;blockquote&gt;&lt;pre&gt;$ ldd /usr/local/sbin/hostapd&lt;br /&gt;        linux-vdso.so.1 =&gt;  (0x00007fff06b95000)&lt;br /&gt;        libnl.so.1 =&gt; /usr/lib/libnl.so.1 (0x00007f8916e67000)&lt;br /&gt;        libssl.so.0.9.8 =&gt; /usr/lib/libssl.so.0.9.8 (0x00007f8916c16000)&lt;br /&gt;        libcrypto.so.0.9.8 =&gt; /usr/lib/libcrypto.so.0.9.8 (0x00007f891687b000)&lt;br /&gt;        libc.so.6 =&gt; /lib/libc.so.6 (0x00007f8916528000)&lt;br /&gt;        libm.so.6 =&gt; /lib/libm.so.6 (0x00007f89162a5000)&lt;br /&gt;        libdl.so.2 =&gt; /lib/libdl.so.2 (0x00007f89160a1000)&lt;br /&gt;        libz.so.1 =&gt; /usr/lib/libz.so.1 (0x00007f8915e8a000)&lt;br /&gt;        /lib64/ld-linux-x86-64.so.2 (0x00007f89170b6000)&lt;/pre&gt;&lt;/blockquote&gt;openssl と libz ほか &lt;a href="http://www.infradead.org/~tgr/libnl/"&gt;libnl&lt;/a&gt; が必要。debian/lenny では libnl1 libnl-dev でバージョンが 1。どうも新しい方が良さそうなので git で持って来た方が吉。以前の $HOSTAPD/defconfig には CONFIG_LIBNL20 なんてあったけど、今は無し。まとめて&lt;br /&gt;&lt;ul&gt;&lt;li&gt;git などで &lt;a href="http://hostap.epitest.fi/cvs.html"&gt;hostapd&lt;/a&gt; と &lt;a href="http://www.infradead.org/~tgr/libnl/"&gt;libnl&lt;/a&gt; 持ってくる&lt;/li&gt;&lt;li&gt;lib〜-dev は libc6-dev zlib1g-dev libssl-dev&lt;/li&gt;&lt;li&gt;libnl を ./configure --prefix=/usr/local でコンパイル &amp;amp; ld.so.conf 周りに /usr/local/lib が含まれていること確認して ldconfig&lt;/li&gt;&lt;li&gt;hostap/hostapd に移って defconfig を .config に変更。適当に変更するも &lt;b&gt;CONFIG_DRIVER_NL80211=y&lt;/b&gt; は忘れずに&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;その他&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;やべ、面倒になってきた....国によって異なる利用可能な無線スペクトラム? に従うために、&lt;a href="http://linuxwireless.org/en/developers/Regulatory#Code_releases"&gt;この辺りも、多分最近のものは必須。&lt;/a&gt;これらコンパイルに必要な追加パッケージは crda の README に書かれている通り python-m2crypto。&lt;br /&gt;同じく crda の方で make install すると udev の rule が &lt;file&gt;/usr/lib/udev/rules.d/85-regulatory.rules&lt;/file&gt; にコピーされてしまうので &lt;file&gt;/etc/udev/rules.d/&lt;/file&gt; に移してあげるコト。 &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;おまけ&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4125"&gt;It&amp;apos;s All Text&lt;/a&gt; なるもの試してみました。ラクチンだけど考えまとめてないと、こんな風にとりとめなくウダウダは相変わらず。&lt;/li&gt;&lt;li&gt;Wikipedia の &lt;a href="http://en.wikipedia.org/wiki/Category:IEEE_802.11"&gt;802.11 カテゴリ&lt;/a&gt;がまとまっている。&lt;/li&gt;&lt;li&gt;&lt;a href="http://labs.adobe.com/downloads/"&gt;Adobe labs&lt;/a&gt; からの 64bit 版 &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;Adobe Flash Player 10&lt;/a&gt; でも Googlel/検察ツール/ワンダーホイールで落ちる....&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;# チラシの裏 &lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5582390571763246605?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5582390571763246605/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5582390571763246605' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5582390571763246605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5582390571763246605'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/rt73usb-rt2500usb-hostapd.html' title='rt73usb rt2500usb で hostapd'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-148799927887129944</id><published>2009-06-09T23:12:00.003+09:00</published><updated>2009-06-09T23:49:05.975+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>quagga on lxc</title><content type='html'>T/O debian/lenny amd64 でやってみました。&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/lxc/quagga.tgz"&gt;こちらに&lt;/a&gt;イメージ? 置いときます。/opt/lxc 配下に展開仮定なので fstab を適宜直して使ってやって下さい。# レイノゴトクルートデ....&lt;blockquote&gt;&lt;pre&gt;# seq とゆーもの覚えた。&lt;br /&gt;# &lt;b&gt;for i in `seq 0 7`; do &lt;br /&gt;&gt; br=br${i}&lt;br /&gt;&gt; brctl addbr $br&lt;br /&gt;&gt; brctl setfd $br 0&lt;br /&gt;&gt; brctl stp $br off&lt;br /&gt;&gt; ip link set $br up&lt;br /&gt;&gt; done&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ip link ls | grep "br[0-7]"&lt;/b&gt;&lt;br /&gt;630: br0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;631: br1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;632: br2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;633: br3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;634: br4: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;635: br5: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;636: br6: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;637: br7: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;# &lt;b&gt;ip addr add 192.168.200.1/24 dev br0&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;pwd&lt;/b&gt;&lt;br /&gt;/opt/lxc/quagga&lt;br /&gt;# &lt;b&gt;lxc-execute -n quagga -f lxc-quagga.conf -- /etc/init.d/quagga start &amp;&lt;/b&gt;&lt;br /&gt;[1] 5417&lt;br /&gt;# Loading capability module if not yet done.&lt;br /&gt;Starting Quagga daemons (prio:10): zebra ospfd ospf6d.&lt;br /&gt;&lt;br /&gt;# &lt;/pre&gt;&lt;/blockquote&gt;で稼働。起動の仕方がイマイチの気もするけど、まぁ。zebra と ospfd、 ospf6d が起動しているハズです。ホスト側のアドレスはこんな感じ。&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;ip addr ls | egrep "(^[0-9]|inet )"&lt;/b&gt;&lt;br /&gt;1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue state UNKNOWN &lt;br /&gt;    inet 127.0.0.1/8 scope host lo&lt;br /&gt;2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;br /&gt;3: sit0: &lt;NOARP&gt; mtu 1480 qdisc noop state DOWN &lt;br /&gt;4: ip6tnl0: &lt;NOARP&gt; mtu 1460 qdisc noop state DOWN &lt;br /&gt;5: wmaster0: &lt;&gt; mtu 0 qdisc noop state DOWN qlen 1000&lt;br /&gt;6: wlan0: &lt;BROADCAST,MULTICAST&gt; mtu 1500 qdisc noop state DOWN qlen 1000&lt;br /&gt;7: vlan10@eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP &lt;br /&gt;    inet 172.27.129.2/24 brd 172.27.129.255 scope global vlan10&lt;br /&gt;8: vlan11@eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP &lt;br /&gt;    inet 192.168.1.3/24 brd 192.168.1.255 scope global vlan11&lt;br /&gt;630: br0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;    inet 192.168.200.1/24 scope global br0&lt;br /&gt;631: br1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;632: br2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN &lt;br /&gt;....&lt;/pre&gt;&lt;/blockquote&gt;やっぱりホスト側でも ospfd 動いているので、寂しい経路数ですが....&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;telnet 192.168.200.10 zebra&lt;/b&gt;&lt;br /&gt;Trying 192.168.200.10...&lt;br /&gt;Connected to 192.168.200.10.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Hello, this is Quagga (version 0.99.10).&lt;br /&gt;Copyright 1996-2005 Kunihiro Ishiguro, et al.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Access Verification&lt;br /&gt;&lt;br /&gt;Password: &lt;br /&gt;zebra@quagga&gt; &lt;b&gt;en&lt;/b&gt;&lt;br /&gt;Password: &lt;br /&gt;zebra@quagga# show ip route&lt;br /&gt;Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,&lt;br /&gt;       I - ISIS, B - BGP, &gt; - selected route, * - FIB route&lt;br /&gt;&lt;br /&gt;C&gt;* 127.0.0.0/8 is directly connected, lo&lt;br /&gt;C&gt;* 192.168.200.0/24 is directly connected, eth0&lt;br /&gt;C&gt;* 192.168.201.0/24 is directly connected, eth1&lt;br /&gt;C&gt;* 192.168.202.0/24 is directly connected, eth2&lt;br /&gt;C&gt;* 192.168.203.0/24 is directly connected, eth3&lt;br /&gt;C&gt;* 192.168.204.0/24 is directly connected, eth4&lt;br /&gt;C&gt;* 192.168.205.0/24 is directly connected, eth5&lt;br /&gt;C&gt;* 192.168.206.0/24 is directly connected, eth6&lt;br /&gt;C&gt;* 192.168.207.0/24 is directly connected, eth7&lt;br /&gt;zebra@quagga# &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;申し遅れましたが、パスワードは共に zebra です。&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;telnet 192.168.200.10 ospfd&lt;/b&gt;&lt;br /&gt;Trying 192.168.200.10...&lt;br /&gt;Connected to 192.168.200.10.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Hello, this is Quagga (version 0.99.10).&lt;br /&gt;Copyright 1996-2005 Kunihiro Ishiguro, et al.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Access Verification&lt;br /&gt;&lt;br /&gt;Password: &lt;br /&gt;ospfd@quagga&gt; &lt;b&gt;en&lt;/b&gt;&lt;br /&gt;Password: &lt;br /&gt;ospfd@quagga# &lt;b&gt;conf t&lt;/b&gt;&lt;br /&gt;ospfd@quagga(config)# &lt;b&gt;router ospf&lt;/b&gt;&lt;br /&gt;ospfd@quagga(config-router)# &lt;b&gt;network 192.168.200.0/24 area 0.0.0.128&lt;/b&gt;&lt;br /&gt;ospfd@quagga(config-router)# &lt;/pre&gt;&lt;/blockquote&gt;で再度 zebra に&lt;blockquote&gt;&lt;pre&gt;# &lt;b&gt;telnet 192.168.200.10 zebra&lt;/b&gt;&lt;br /&gt;Trying 192.168.200.10...&lt;br /&gt;Connected to 192.168.200.10.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Hello, this is Quagga (version 0.99.10).&lt;br /&gt;Copyright 1996-2005 Kunihiro Ishiguro, et al.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Access Verification&lt;br /&gt;&lt;br /&gt;Password: &lt;br /&gt;zebra@quagga&gt; &lt;b&gt;en&lt;/b&gt;&lt;br /&gt;Password: &lt;br /&gt;zebra@quagga# &lt;b&gt;show ip route&lt;/b&gt;&lt;br /&gt;Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,&lt;br /&gt;       I - ISIS, B - BGP, &gt; - selected route, * - FIB route&lt;br /&gt;&lt;br /&gt;C&gt;* 127.0.0.0/8 is directly connected, lo&lt;br /&gt;O&gt;* 172.27.1.0/24 [110/40] via 192.168.200.1, eth0, 00:00:58&lt;br /&gt;O&gt;* 172.27.68.0/24 [110/40] via 192.168.200.1, eth0, 00:00:58&lt;br /&gt;O&gt;* 172.27.129.0/24 [110/20] via 192.168.200.1, eth0, 00:00:59&lt;br /&gt;O&gt;* 172.27.193.0/24 [110/30] via 192.168.200.1, eth0, 00:00:59&lt;br /&gt;O   192.168.200.0/24 [110/10] is directly connected, eth0, 00:00:59&lt;br /&gt;C&gt;* 192.168.200.0/24 is directly connected, eth0&lt;br /&gt;C&gt;* 192.168.201.0/24 is directly connected, eth1&lt;br /&gt;C&gt;* 192.168.202.0/24 is directly connected, eth2&lt;br /&gt;C&gt;* 192.168.203.0/24 is directly connected, eth3&lt;br /&gt;C&gt;* 192.168.204.0/24 is directly connected, eth4&lt;br /&gt;C&gt;* 192.168.205.0/24 is directly connected, eth5&lt;br /&gt;C&gt;* 192.168.206.0/24 is directly connected, eth6&lt;br /&gt;C&gt;* 192.168.207.0/24 is directly connected, eth7&lt;/pre&gt;&lt;/blockquote&gt;をぉ....後片付けは&lt;blockquote&gt;&lt;pre&gt;# lxc-stop -n quagga&lt;br /&gt;# &lt;br /&gt;[1]+  Exit 137                lxc-execute -n quagga -f lxc-quagga.conf -- /etc/init.d/quagga start&lt;br /&gt;# lxc-destroy -n quagga&lt;/pre&gt;&lt;/blockquote&gt;最近のものを git で持ってこないと、後が何かおかしくなるコトあり。&lt;br /&gt;&lt;br /&gt;# 沢山稼働させる場合は、きちんと絵を描いてから。って自分に言いきかせる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-148799927887129944?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/148799927887129944/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=148799927887129944' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/148799927887129944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/148799927887129944'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/quagga-on-lxc.html' title='quagga on lxc'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2304324827447464391</id><published>2009-06-09T22:54:00.002+09:00</published><updated>2009-06-09T22:58:36.120+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>/dev/pts -o newinstance,ptmxmode= その 2</title><content type='html'>udev やっぱわかってない。ごめんなさい....当面、こんなんで繕っていますが udev 絡めた方法や、イカンと思った方は教えてやって下さい。udev 周りイジらず &lt;file&gt;/etc/init.d&lt;/file&gt; 配下のファイルだけ。正統派で無い気がする。&lt;blockquote&gt;&lt;pre&gt;~# diff -ubB /etc/init.d/mountdevsubfs.sh.orig /etc/init.d/mountdevsubfs.sh&lt;br /&gt;--- /etc/init.d/mountdevsubfs.sh.orig   2009-05-27 21:40:09.000000000 +0900&lt;br /&gt;+++ /etc/init.d/mountdevsubfs.sh        2009-06-09 21:06:46.000000000 +0900&lt;br /&gt;@@ -60,7 +60,8 @@&lt;br /&gt;                fi&lt;br /&gt;                if [ -d /dev/pts ]&lt;br /&gt;                then&lt;br /&gt;-                       if [ ! -c /dev/ptmx ]&lt;br /&gt;+                       domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE,newinstance,ptmxmode=0666&lt;br /&gt;+                       if [ ! -c /dev/ptmx -a ! -c /dev/pts/ptmx ]&lt;br /&gt;                        then&lt;br /&gt;                                mknod --mode=666 /dev/ptmx c 5 2&lt;br /&gt;                                ES=$?&lt;br /&gt;@@ -69,8 +70,9 @@&lt;br /&gt;                                        log_warning_msg "Failed making node /dev/ptmx with error code ${ES}."&lt;br /&gt;                                fi&lt;br /&gt;                                [ -x /sbin/restorecon ] &amp;&amp; /sbin/restorecon /dev/ptmx&lt;br /&gt;+                       else&lt;br /&gt;+                               ln -sf /dev/pts/ptmx /dev/ptmx&lt;br /&gt;                        fi&lt;br /&gt;-                       domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE&lt;br /&gt;                fi&lt;br /&gt;        fi&lt;br /&gt; }&lt;br /&gt;diff -ubB /etc/init.d/mtab.sh.orig /etc/init.d/mtab.sh         &lt;br /&gt;--- /etc/init.d/mtab.sh.orig    2009-06-01 22:25:45.000000000 +0900&lt;br /&gt;+++ /etc/init.d/mtab.sh 2009-06-01 23:18:15.000000000 +0900&lt;br /&gt;@@ -137,7 +137,7 @@&lt;br /&gt;        SHM_OPT=&lt;br /&gt;        [ "${SHM_SIZE:=$TMPFS_SIZE}" ] &amp;&amp; SHM_OPT=",size=$SHM_SIZE"&lt;br /&gt;        domtab tmpfs /dev/shm tmpfs -onosuid,nodev$SHM_OPT&lt;br /&gt;-       domtab devpts /dev/pts "devpts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE&lt;br /&gt;+       domtab devpts /dev/pts "devpts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE,newinstance,ptmxmode=0666&lt;br /&gt; &lt;br /&gt;        # Add everything else in /proc/mounts into /etc/mtab, with&lt;br /&gt;        # special exceptions.&lt;/pre&gt;&lt;/blockquote&gt;むーん....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2304324827447464391?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2304324827447464391/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2304324827447464391' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2304324827447464391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2304324827447464391'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/devpts-o-newinstanceptmxmode-2.html' title='/dev/pts -o newinstance,ptmxmode= その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5147673384391666721</id><published>2009-06-04T23:28:00.003+09:00</published><updated>2009-06-04T23:40:48.404+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>lxc のインストール 4</title><content type='html'>まとめてみると&lt;ul&gt;&lt;li&gt;debian/lenny で git から持ってきた &lt;command&gt;lxc-sshd&lt;/command&gt; はそのままは動きそうになさげ。&lt;br /&gt;動かすにあたっては....&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;file&gt;/usr/local/&lt;/file&gt; 配下などにインストールする場合はコンテナ内で liblxc.*.so が見付けられるようにする&lt;/li&gt;&lt;br /&gt;&lt;li&gt;コンテナ側での /dev/pts マウント&lt;/li&gt;&lt;br /&gt;&lt;li&gt;より独立したコンテナを望むのであればホスト側で devpts を newinstance オプション付でマウントする。&lt;br /&gt;(詳細は &lt;file&gt;/usr/src/linux/Documentation/filesystems/devpts.txt&lt;/file&gt;参照)&lt;/li&gt;&lt;/ul&gt;ってコトでしょうか。&lt;br /&gt;&lt;br /&gt;lxc のインストールと言うより lxc-sshd を動かすまでの道のりになってしまいました。&lt;br /&gt;ごめんなさい....おやすみなさい....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5147673384391666721?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5147673384391666721/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5147673384391666721' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5147673384391666721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5147673384391666721'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/lxc-4.html' title='lxc のインストール 4'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7562684374237698342</id><published>2009-06-04T21:44:00.003+09:00</published><updated>2009-06-04T23:27:49.514+09:00</updated><title type='text'>lxc のインストール 3</title><content type='html'>続き。別ターミナルから&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;killall slogin&lt;/b&gt;&lt;/pre&gt;&lt;/blockquote&gt;戻って&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;lxc-stop -n tetest&lt;/b&gt;&lt;br /&gt;# &lt;br /&gt;[1]+  Exit 137                lxc-execute -n tetest /usr/sbin/sshd&lt;br /&gt;# &lt;b&gt;lxc-execute -n tetest /bin/bash&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;/usr/sbin/sshd -dD&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;Server listening on 0.0.0.0 port 22.&lt;/pre&gt;&lt;/blockquote&gt;また別ターミナル行って&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;slogin -v 192.168.1.100&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;debug1: Next authentication method: password&lt;br /&gt;root@192.168.1.100's password: &lt;br /&gt;....&lt;br /&gt;debug1: permanently_set_uid: 0/0&lt;br /&gt;Environment:&lt;br /&gt;              LANG=en_US&lt;br /&gt;                          USER=root&lt;br /&gt;                                     LOGNAME=root&lt;/pre&gt;&lt;/blockquote&gt;戻ってみると&lt;pre&gt;&lt;blockquote&gt;debug1: Allocating pty.&lt;br /&gt;openpty: No such file or directory&lt;br /&gt;session_pty_req: session 0 alloc failed&lt;br /&gt;....&lt;br /&gt;debug1: session_input_channel_req: session 0 req shell&lt;br /&gt;&lt;b&gt;^C&lt;/b&gt;Exiting on signal 2&lt;br /&gt;debug1: do_cleanup&lt;br /&gt;# exit&lt;/pre&gt;&lt;/blockquote&gt;わかる人には、わかるのでしょうが、この後のコンテナで &lt;command&gt;strace&lt;/command&gt; したり、&lt;a href="http://ascii.asciimw.jp/books/books/detail/4-7561-4415-2.shtml"&gt;デーモン君のソース探検&lt;/a&gt;読んだり。で、結果 &lt;file&gt;/dev/pts&lt;/file&gt; が マウントされていないため。に気付くに至る....&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;lxc-execute -n tetest /bin/bash &lt;/b&gt;&lt;br /&gt;# &lt;b&gt;mount -t devpts none /dev/pts &lt;/b&gt;&lt;br /&gt;# &lt;b&gt;mount&lt;/b&gt;&lt;br /&gt;none on /dev/pts type devpts (rw)&lt;br /&gt;# /usr/sbin/sshd&lt;br /&gt;#&lt;/pre&gt;&lt;/blockquote&gt;で、別ターミナルから&lt;pre&gt;&lt;blockquote&gt;# slogin 192.168.1.100&lt;br /&gt;root@192.168.1.100's password: &lt;br /&gt;-bash-3.2# &lt;/pre&gt;&lt;/blockquote&gt;おぉ....。ひとしきり遊んだ後で止めて、更にターミナル戻って # 変なところで試していてごめんなさい&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;cat /usr/local/var/lib/lxc/tetest/fstab &lt;/b&gt;&lt;br /&gt;/lib /opt/src/lxc/./rootfs.tetest/lib none ro,bind 0 0&lt;br /&gt;/bin /opt/src/lxc/./rootfs.tetest/bin none ro,bind 0 0&lt;br /&gt;/usr /opt/src/lxc/./rootfs.tetest/usr none ro,bind 0 0&lt;br /&gt;/sbin /opt/src/lxc/./rootfs.tetest/sbin none ro,bind 0 0&lt;br /&gt;/opt/src/lxc/rootfs.tetest /usr/local/var/lib/lxc/tetest/rootfs none rbind 0 0&lt;br /&gt;# &lt;b&gt;vi !$&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;# cat /usr/local/var/lib/lxc/tetest/fstab &lt;br /&gt;/lib /opt/src/lxc/./rootfs.tetest/lib none ro,bind 0 0&lt;br /&gt;/bin /opt/src/lxc/./rootfs.tetest/bin none ro,bind 0 0&lt;br /&gt;/usr /opt/src/lxc/./rootfs.tetest/usr none ro,bind 0 0&lt;br /&gt;/sbin /opt/src/lxc/./rootfs.tetest/sbin none ro,bind 0 0&lt;br /&gt;&lt;i&gt;&lt;b&gt;/dev/pts /opt/src/lxc/./rootfs.tetest/dev/pts none bind 0 0&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;# none /opt/src/lxc/./rootfs.tetest/dev/pts devpts defaults 0 0 も同じようなモン&lt;/i&gt;&lt;br /&gt;/opt/src/lxc/rootfs.tetest /usr/local/var/lib/lxc/tetest/rootfs none rbind 0 0&lt;br /&gt;# lxc-execute -n tetest /usr/sbin/sshd &amp;&lt;br /&gt;[1] 30491&lt;/pre&gt;&lt;/blockquote&gt;で OK なんだけど....&lt;blockquote&gt;&lt;pre&gt;# echo $$&lt;br /&gt;29056&lt;br /&gt;# ls -l /proc/29056/fd/&lt;br /&gt;total 0&lt;br /&gt;lrwx------ 1 root root 64 2009-06-04 22:31 0 -&gt; /dev/pts/1&lt;br /&gt;lrwx------ 1 root root 64 2009-06-04 22:31 1 -&gt; /dev/pts/1&lt;br /&gt;lrwx------ 1 root root 64 2009-06-04 22:31 2 -&gt; /dev/pts/1&lt;br /&gt;lrwx------ 1 root root 64 2009-06-04 22:31 255 -&gt; /dev/pts/1&lt;/pre&gt;&lt;/blockquote&gt;別ターミナルで&lt;pre&gt;&lt;blockquote&gt;# slogin 192.168.1.100&lt;br /&gt;root@192.168.1.100's password: &lt;br /&gt;-bash-3.2# echo hogehoge &gt; /dev/pts/1&lt;/pre&gt;&lt;/blockquote&gt;として、ターミナル戻ってみると... がイカンと言うことで newinstance という devpts マウントのオプションができたらしいです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7562684374237698342?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7562684374237698342/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7562684374237698342' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7562684374237698342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7562684374237698342'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/lxc-3.html' title='lxc のインストール 3'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5115996480160212713</id><published>2009-06-04T21:16:00.003+09:00</published><updated>2009-06-04T21:44:28.942+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>lxc のインストール 2</title><content type='html'>続き。&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;lxc-execute -n tetest /bin/bash&lt;/b&gt;&lt;br /&gt;/usr/local/libexec/lxc-init: error while loading shared libraries: liblxc-0.6.2.so: cannot open shared object file: No such file or directory&lt;br /&gt;# &lt;b&gt;ldd /usr/local/libexec/lxc-init &lt;/b&gt;&lt;br /&gt;        linux-gate.so.1 =&gt;  (0xb8070000)&lt;br /&gt;        libutil.so.1 =&gt; /lib/i686/cmov/libutil.so.1 (0xb8060000)&lt;br /&gt;        liblxc-0.6.2.so =&gt; /usr/local/lib/liblxc-0.6.2.so (0xb804a000)&lt;br /&gt;        libc.so.6 =&gt; /lib/i686/cmov/libc.so.6 (0xb7eef000)&lt;br /&gt;        /lib/ld-linux.so.2 (0xb8071000)&lt;br /&gt;# &lt;b&gt;ls -l /usr/local/lib/liblxc-0.6.2.so &lt;/b&gt;&lt;br /&gt;-rwxr-xr-x 1 root staff 271005 2009-06-04 20:48 /usr/local/lib/liblxc-0.6.2.so&lt;/pre&gt;&lt;/blockquote&gt;って何よ何。で Google 様に尋ねたところ chroot 先 ldconfig の問題との事。&lt;file&gt;liblxc-0.6.2.so&lt;/file&gt; を &lt;file&gt;/usr/lib&lt;/file&gt; にコピーしてあげれば OK でこだわる必要無いけど....&lt;br /&gt;&lt;command&gt;lxc-create&lt;/command&gt;した後 chroot 先は &lt;file&gt;var/lib/lxc&lt;/file&gt;。今回の場合は &lt;file&gt;/usr/local/var/lxc&lt;/file&gt; なので&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;cd /usr/local/var/lib/lxc/&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;tetest&lt;br /&gt;# cd tetest   &lt;br /&gt;# &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;config  fstab  network  rootfs  state  utsname&lt;br /&gt;# cd rootfs &lt;br /&gt;# &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;rootfs&lt;br /&gt;# cd rootfs&lt;br /&gt;# &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;bin  dev  etc  lib  lib64  proc  root  sbin  sys  tmp  usr  var&lt;br /&gt;# cd etc&lt;br /&gt;# &lt;b&gt;ls&lt;/b&gt;&lt;br /&gt;group  gshadow  passwd  shadow  ssh&lt;br /&gt;# &lt;b&gt;cat &amp;gt; ld.so.conf&lt;/b&gt;&lt;br /&gt;&lt;b&gt;/usr/local/lib&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;cp /usr/local/lib/liblxc-0.6.2.so /usr/lib/&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;lxc-execute -n tetest /sbin/ldconfig &lt;/b&gt;&lt;br /&gt;# &lt;b&gt;pwd&lt;/b&gt;&lt;br /&gt;/usr/local/var/lib/lxc/tetest/rootfs/rootfs/etc&lt;br /&gt;# &lt;b&gt;ls -l ld.so.cache &lt;/b&gt;&lt;br /&gt;-rw-r--r-- 1 root root 37669 2009-06-04 21:29 ld.so.cache&lt;br /&gt;# &lt;b&gt;rm /usr/lib/liblxc-0.6.2.so &lt;/b&gt;&lt;br /&gt;# cd&lt;br /&gt;# &lt;b&gt;lxc-execute -n tetest /bin/bash&lt;/b&gt;&lt;br /&gt;# &lt;b&gt;hostname&lt;/b&gt;&lt;br /&gt;tetest&lt;/pre&gt;&lt;/blockquote&gt;鶏卵だけど /usr/local にインストールした場合、chroot 先に &lt;file&gt;/usr/local/lib&lt;/file&gt; 含んだ &lt;file&gt;/etc/ld.so.cache&lt;/file&gt; が必要。で 本筋に戻って&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;lxc-execute -n tetest /usr/sbin/sshd &lt;/b&gt;&lt;br /&gt;&lt;b&gt;^Z&lt;/b&gt;&lt;br /&gt;[1]+  Stopped                 lxc-execute -n tetest /usr/sbin/sshd&lt;br /&gt;# &lt;b&gt;bg&lt;/b&gt;&lt;br /&gt;[1]+ lxc-execute -n tetest /usr/sbin/sshd &amp;&lt;br /&gt;# &lt;b&gt;ping 192.168.1.100&lt;/b&gt;&lt;br /&gt;PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.&lt;br /&gt;64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=1.08 ms&lt;br /&gt;64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.157 ms&lt;br /&gt;64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.159 ms&lt;br /&gt;&lt;b&gt;^C&lt;/b&gt;&lt;br /&gt;--- 192.168.1.100 ping statistics ---&lt;br /&gt;3 packets transmitted, 3 received, 0% packet loss, time 2000ms&lt;br /&gt;rtt min/avg/max/mdev = 0.157/0.466/1.082/0.435 ms&lt;/pre&gt;&lt;/blockquote&gt;おぉ....&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;slogin 192.168.1.100&lt;/b&gt;&lt;br /&gt;The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.&lt;br /&gt;RSA key fingerprint is ff:9e:86:97:0e:98:44:23:98:44:93:b0:2e:2c:a8:ee.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;Warning: Permanently added '192.168.1.100' (RSA) to the list of known hosts.&lt;br /&gt;root@192.168.1.100's password: &lt;br /&gt;PTY allocation request failed on channel 0&lt;br /&gt;# 応答なし&lt;/pre&gt;&lt;/blockquote&gt;もぉ....&lt;br /&gt;# あと二つ三つつづく。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5115996480160212713?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5115996480160212713/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5115996480160212713' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5115996480160212713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5115996480160212713'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/lxc-2.html' title='lxc のインストール 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3203319406793920805</id><published>2009-06-04T20:33:00.002+09:00</published><updated>2009-06-04T21:16:37.640+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>lxc のインストール</title><content type='html'>順序がおかしいけど debian/lenny で git リポジトリからのインストールをちょっと jot。&lt;br /&gt;&lt;a href="http://packages.debian.org/ja/sid/lxc"&gt;debian/sid&lt;/a&gt; ではパッケージ化されていて、依存関係眺めると libc6-dev の他は libcap2-dev と libcap2-bin があれば OK。マニュアル作成に docbook-utils が必要だけど tex 関連の依存大きいので割愛。カーネルは 2.6.30-rc では&lt;blockquote&gt;&lt;pre&gt;CONFIG_CGROUP_NS=y&lt;br /&gt;....&lt;br /&gt;CONFIG_NAMESPACES=y&lt;br /&gt;CONFIG_UTS_NS=y&lt;br /&gt;CONFIG_IPC_NS=y&lt;br /&gt;CONFIG_USER_NS=y&lt;br /&gt;CONFIG_PID_NS=y&lt;br /&gt;CONFIG_NET_NS=y&lt;br /&gt;....&lt;br /&gt;CONFIG_DEVPTS_MULTIPLE_INSTANCES=y&lt;/pre&gt;&lt;/blockquote&gt;最後は先日の &lt;file&gt;/dev/pts&lt;/file&gt; のお話。git リポジトリは&lt;a href="http://lxc.sourceforge.net/"&gt;大元&lt;/a&gt;参考にして....&lt;blockquote&gt;&lt;pre&gt;&lt;b&gt;#  git-clone git://lxc.git.sourceforge.net/gitroot/lxc &lt;/b&gt;&lt;br /&gt;Initialized empty Git repository in /opt/src/lxc/.git/&lt;br /&gt;remote: Counting objects: 2234, done.&lt;br /&gt;remote: Compressing objects: 100% (1099/1099), done.&lt;br /&gt;remote: Total 2234 (delta 1740), reused 1461 (delta 1123)&lt;br /&gt;Receiving objects: 100% (2234/2234), 559.49 KiB | 125 KiB/s, done.&lt;br /&gt;Resolving deltas: 100% (1740/1740), done.&lt;br /&gt;# ls&lt;br /&gt;lxc&lt;br /&gt;# cd lxc&lt;br /&gt;# ls&lt;br /&gt;AUTHORS     configure.ac  doc      lxc.spec.in  NEWS           scripts  TODO&lt;br /&gt;autogen.sh  CONTRIBUTING  etc      MAINTAINERS  README         src&lt;br /&gt;config      COPYING       INSTALL  Makefile.am  RELEASE-NOTES  test&lt;br /&gt;# &lt;b&gt;./autogen.sh&lt;/b&gt; &lt;br /&gt;....&lt;br /&gt;# &lt;b&gt;./configure --prefix=/usr/local &amp;&amp; make &amp;&amp; make install&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;# &lt;b&gt;lxc-setcap -h&lt;/b&gt;&lt;br /&gt;lxc-setcap [-d] : set or remove capabilities on the lxc tools&lt;/pre&gt;&lt;/blockquote&gt;libcap2 関係入れある &lt;command&gt;lxc-setcap&lt;/command&gt; で root でなくても動かせるらしいけど、面倒なのでそのまま。先にネットワーク周り。後の &lt;command&gt;lxc-sshd&lt;/command&gt; にて名称 br0 は固定なので&lt;pre&gt;&lt;blockquote&gt;# brctl addbr br0&lt;br /&gt;# brctl stp br0 off&lt;br /&gt;# ip addr add 192.168.1.1/24 dev br0&lt;br /&gt;# ip link set br0 up&lt;/pre&gt;&lt;/blockquote&gt;その後 &lt;command&gt;lxc-sshd&lt;/command&gt;&lt;pre&gt;&lt;blockquote&gt;# &lt;b&gt;lxc-sshd -h&lt;/b&gt;&lt;br /&gt;Usage: /usr/local/bin/lxc-sshd {create|destroy|help}&lt;br /&gt;# &lt;b&gt;lxc-sshd create&lt;/b&gt;&lt;br /&gt;What is the container name ? [sshd] &lt;b&gt;tetest&lt;/b&gt;&lt;br /&gt;What hostname do you wish for this container ? [tetest] &lt;b&gt;tetest&lt;/b&gt;&lt;br /&gt;What IP address do you wish for this container ? [172.20.0.20/24] &lt;b&gt;192.168.1.100/24&lt;/b&gt;&lt;br /&gt;Done.&lt;br /&gt;&lt;br /&gt;You can run your container with: &lt;br /&gt; 'lxc-execute -n tetest /usr/sbin/sshd &amp;'&lt;br /&gt;&lt;br /&gt;# &lt;b&gt;lxc-execute -n tetest /usr/sbin/sshd&lt;/b&gt;&lt;br /&gt;/usr/local/libexec/lxc-init: error while loading shared libraries: liblxc-0.6.2.so: cannot open shared object file: No such file or directory&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;むーん、見事に動かず。長くなったので続きは次のエントリで。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3203319406793920805?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3203319406793920805/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3203319406793920805' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3203319406793920805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3203319406793920805'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/lxc.html' title='lxc のインストール'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6435769214450726860</id><published>2009-06-01T23:23:00.002+09:00</published><updated>2009-06-01T23:42:29.084+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxc'/><title type='text'>/dev/pts -o newinstance,ptmxmode=</title><content type='html'>唐突に &lt;a href="http://lxc.sourceforge.net/"&gt;lxc&lt;/a&gt; を試し始めてみました。&lt;a href="https://www.ibm.com/developerworks/jp/linux/library/l-lxc-containers/"&gt; IBM dw の記事&lt;/a&gt; が詳しいです。で、唐突ついでに &lt;file&gt;/dev/pts&lt;/file&gt; のお話。&lt;blockquote&gt;&lt;pre&gt;lxc.mount = ./fstab&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;/dev/pts /opt/lxc/rootfs/dev/pts none bind 0 0&lt;/pre&gt;&lt;/blockquote&gt;ではコンテナを root で実行して、コンテナ内で&lt;pre&gt;&lt;blockquote&gt;echo hogehoge &gt; /dev/pts/0&lt;/pre&gt;&lt;/blockquote&gt;なんてすると、見事? ホスト側の &lt;file&gt;/dev/pts/0&lt;/file&gt; に hogehoge と出力されてしまうのはイカンでしょ。で &lt;file&gt;devpts&lt;/file&gt; を mount するオプションで &lt;b&gt;newinstance&lt;/b&gt; なるモノが登場。こちらで &lt;file&gt;/dev/pts/&lt;/file&gt; についても別空間にしましょう。というコトらしい。詳しくは &lt;file&gt;/usr/src/linux/Documentation/filesystems/devpts.txt&lt;/file&gt; を参照してみて下さい。こちら有効するために格闘。etch からのバージョンアップなので、未確認の部分もあるけど&lt;blockquote&gt;&lt;pre&gt;--- /etc/init.d/mountdevsubfs.sh.orig 2009-05-27 21:40:09.000000000 +0900&lt;br /&gt;+++ /etc/init.d/mountdevsubfs.sh 2009-06-01 23:35:42.000000000 +0900&lt;br /&gt;@@ -70,7 +70,7 @@&lt;br /&gt;     fi&lt;br /&gt;     [ -x /sbin/restorecon ] &amp;&amp; /sbin/restorecon /dev/ptmx&lt;br /&gt;    fi&lt;br /&gt;-   domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE&lt;br /&gt;+   domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE,newinstance,ptmxmode=0666&lt;br /&gt;   fi&lt;br /&gt;  fi&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;--- /etc/init.d/mtab.sh.orig 2009-06-01 22:25:45.000000000 +0900&lt;br /&gt;+++ /etc/init.d/mtab.sh 2009-06-01 23:18:15.000000000 +0900&lt;br /&gt;@@ -137,7 +137,7 @@&lt;br /&gt;  SHM_OPT=&lt;br /&gt;  [ "${SHM_SIZE:=$TMPFS_SIZE}" ] &amp;&amp; SHM_OPT=",size=$SHM_SIZE"&lt;br /&gt;  domtab tmpfs /dev/shm tmpfs -onosuid,nodev$SHM_OPT&lt;br /&gt;- domtab devpts /dev/pts "devpts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE&lt;br /&gt;+ domtab devpts /dev/pts "devpts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE,newinstance,ptmxmode=0666&lt;br /&gt; &lt;br /&gt;  # Add everything else in /proc/mounts into /etc/mtab, with&lt;br /&gt;  # special exceptions.&lt;br /&gt;&lt;br /&gt;--- /etc/udev/rules.d/50-udev.rules.orig 2009-06-01 23:37:47.000000000 +0900&lt;br /&gt;+++ /etc/udev/rules.d/50-udev.rules 2009-06-01 23:05:15.000000000 +0900&lt;br /&gt;@@ -99,3 +99,5 @@&lt;br /&gt; SUBSYSTEM=="aoe",  NAME="etherd/%k"&lt;br /&gt; &lt;br /&gt; KERNEL=="device-mapper", NAME="mapper/control"&lt;br /&gt;+&lt;br /&gt;+KERNEL=="ptmx",   NAME="pts/ptmx"&lt;/pre&gt;&lt;/blockquote&gt;&lt;file&gt;/dev/pts/ptmx&lt;/file&gt; をイキナリ 0666 にしてはイカンらしいが、まぁ X でターミナルも開いたし、ssh でログインもできた。&lt;br /&gt;&lt;br /&gt;つづきはまた後日。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6435769214450726860?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6435769214450726860/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6435769214450726860' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6435769214450726860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6435769214450726860'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/06/devpts-o-newinstanceptmxmode.html' title='/dev/pts -o newinstance,ptmxmode='/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3025680669842224541</id><published>2009-05-06T12:41:00.008+09:00</published><updated>2009-05-06T13:03:36.905+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>ralink USB で hostapd</title><content type='html'>どこで何を調べていたか定かではないけど hostapd での nl80211 ドライバはつい最近、2.6.30 からだよ。といった ML のアーカイブを見かけた... はさて置き。&lt;br /&gt;&lt;br /&gt;ralink 謹製のドライバが、&lt;a href="http://www.ralinktech.com/ralink/Home/Support/Linux.html"&gt;この辺り&lt;/a&gt; にあるので ``RT2501USB(RT73:RT2571W/RT2573/RT2671)'' を持ってきて眺めてみた。が、送信については ACK のチェックは無いようで、USB - urb? のステータスがエラーで無ければ送信 OK というスタンス。一方 linux では SUCCESS は送信フレームの ACK が返ってきたときだけ。と厳しいためrt2x00usb.c にてエラーだったら FAILURE。それ以外はエラーじゃないけど ACK が確認できないので UNKNOWN。この UNKNOWN が enum mac80211_tx_control_flags::include/net/mac80211.h の IEEE80211_TX_STAT_ACK か否か。で否との結果送信できなかったぁ。で動かない。&lt;br /&gt;&lt;br /&gt;ralink で OK。に従うならば TXDONE_UNKNOWN を TXDONE_SUCCESS にするのもアリかと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3025680669842224541?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3025680669842224541/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3025680669842224541' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3025680669842224541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3025680669842224541'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/05/ralink-usb-hostapd.html' title='ralink USB で hostapd'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-115033830366460883</id><published>2009-05-06T11:57:00.003+09:00</published><updated>2009-05-06T12:33:59.922+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>tcpdump で wlan - 復習</title><content type='html'>にっ、二年前ですか。&lt;a href="http://chamaken.blogspot.com/2007/06/tcpdump-wlan.html"&gt;こんなこと&lt;/a&gt;ちょっと調べた後も進歩なし。もう一度 MAC フレームの先頭、フレームコントロールフィールドについて。tcpdump でフィルタする時には wlan[0] あるいは wlan[1] で指定。&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;wlan[0]&lt;/dt&gt;&lt;dd&gt;&lt;li&gt;sub type: 4bit&lt;/li&gt;&lt;li&gt;type: 2bit&lt;/li&gt;&lt;li&gt;version: 2bit&lt;/li&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;wlan[1]: すべて 1bit&lt;/dt&gt;&lt;dd&gt;&lt;li&gt;ToDS&lt;/li&gt;&lt;li&gt;FromDS&lt;/li&gt;&lt;li&gt;MoreFragment&lt;/li&gt;&lt;li&gt;Retry&lt;/li&gt;&lt;li&gt;PowerManagement&lt;/li&gt;&lt;li&gt;MoreData&lt;/li&gt;&lt;li&gt;WEP&lt;/li&gt;&lt;li&gt;Order&lt;/li&gt;&lt;/dd&gt;&lt;/dl&gt;先日の tcpdump-workers へのリンクが切れていたので、&lt;a href="http://www.mail-archive.com/tcpdump-workers@lists.tcpdump.org/msg01023.html"&gt;こちら&lt;/a&gt;参照しつつ、バージョンは 0。管理フレームの type は 0。subtype は&lt;ul&gt;&lt;li&gt;0000 association request&lt;/li&gt;&lt;li&gt;0001 association response&lt;/li&gt;&lt;li&gt;0010 reassociation request&lt;/li&gt;&lt;li&gt;0011 reassociation response&lt;/li&gt;&lt;li&gt;0100 probe request&lt;/li&gt;&lt;li&gt;0101 probe response&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;1000 beacon&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;1010 deassociation&lt;/li&gt;&lt;li&gt;1011 authentication&lt;/li&gt;&lt;li&gt;1100 deauthentication&lt;/li&gt;&lt;/ul&gt;を踏まえるとビーコンフレームは&lt;blockquote&gt;&lt;pre&gt;# iw dev wlan0 interface add mon0 type monitor flags none&lt;br /&gt;# ip link set mon0 up&lt;br /&gt;# ip link ls&lt;br /&gt;5: mon0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000&lt;br /&gt;    link/ieee802.11/radiotap xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff&lt;br /&gt;# tcpdump -ntvvi mon0 '(wlan[0] &amp; 0xff) == 0x80'&lt;br /&gt;tcpdump: WARNING: mon0: no IPv4 address assigned&lt;br /&gt;tcpdump: listening on mon0, link-type IEEE802_11_RADIO (802.11 plus BSD radio information header), capture size 96 bytes&lt;br /&gt;157275684377us tsft 1.0 Mb/s 2472 MHz (0x00a0) -33dB signal antenna 1 [0x0000000e] 0us Beacon (foobar) [1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 Mbit] ESS, PRIVACY&lt;br /&gt;157275945495us tsft 1.0 Mb/s 2472 MHz (0x00a0) -34dB signal antenna 1 [0x0000000e] 0us Beacon (foobar) [1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 Mbit] ESS, PRIVACY&lt;br /&gt;....&lt;/pre&gt;&lt;/blockquote&gt;radiotap でも wlan[] 指定は OK。も一つ良くリンク忘れるので備忘録&lt;blockquote&gt;&lt;a href="http://standards.ieee.org/getieee802/download/802.11-2007.pdf"&gt;IEEE 802.11-2007 IEEE Standard for Information technology-Telecommunications and information exchange between systems-Local and metropolitan area networks-Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications&lt;/a&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-115033830366460883?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/115033830366460883/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=115033830366460883' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/115033830366460883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/115033830366460883'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/05/tcpdump-wlan.html' title='tcpdump で wlan - 復習'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-824509390316074802</id><published>2009-04-20T20:57:00.003+09:00</published><updated>2009-04-20T21:38:34.869+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>USB デバイスで hostapd</title><content type='html'># 半年以上放置....&lt;br /&gt;&lt;br /&gt;2.6.29 から AP モードサポートっ! で試してみた。&lt;a href="http://linuxwireless.org/en/users/Drivers/"&gt;こちら&lt;/a&gt;参照すると ralink の USB デバイスが OK とのことで&lt;blockquote&gt;&lt;pre&gt;$ lsusb&lt;br /&gt;Bus 001 Device 002: ID 0411:00d8 MelCo., Inc. WLI-U2-SG54HP&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;で挑戦するも今一つと言うか、中途ハンパな状態だけど、チラシのウラ。強い電波で ARP ごにょごにょだったら Linux。なんて言わせないぜっ。か定かではないけど、&lt;a href="http://linuxwireless.org/en/developers/Regulatory/CRDA"&gt;こちら&lt;/a&gt; も&lt;ul&gt;&lt;li&gt;git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git&lt;/li&gt;&lt;li&gt;git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-regdb.git&lt;/li&gt;&lt;/ul&gt;持って来る。debian であれば 85-regulatory.rules は /etc/udev/rules.d の下。libnl や python-crypto もパッケージそのままで OK。hostapd も&lt;ul&gt;&lt;li&gt;git://w1.fi/srv/git/hostap.git&lt;/li&gt;&lt;/ul&gt; で、長くなるけど設定はこんな感じ&lt;blockquote&gt;&lt;pre&gt;interface=wlan0&lt;br /&gt;driver=nl80211&lt;br /&gt;logger_syslog=-1&lt;br /&gt;logger_syslog_level=4&lt;br /&gt;logger_stdout=-1&lt;br /&gt;logger_stdout_level=0&lt;br /&gt;dump_file=/tmp/hostapd.dump&lt;br /&gt;ctrl_interface=/var/run/hostapd&lt;br /&gt;ctrl_interface_group=0&lt;br /&gt;ssid=foobar&lt;br /&gt;country_code=JP&lt;br /&gt;ieee80211d=1&lt;br /&gt;hw_mode=g&lt;br /&gt;channel=2&lt;br /&gt;beacon_int=256&lt;br /&gt;dtim_period=2&lt;br /&gt;max_num_sta=255&lt;br /&gt;macaddr_acl=0&lt;br /&gt;accept_mac_file=/etc/hostapd/mac.accept&lt;br /&gt;deny_mac_file=/etc/hostapd/mac.deny&lt;br /&gt;auth_algs=1&lt;br /&gt;ieee8021x=1&lt;br /&gt;eapol_version=2&lt;br /&gt;own_ip_addr=192.168.1.1&lt;br /&gt;wpa=3&lt;br /&gt;wpa_passphrase=tetest1234&lt;br /&gt;wpa_key_mgmt=WPA-PSK&lt;br /&gt;wpa_pairwise=CCMP TKIP&lt;br /&gt;wpa_group_rekey=600&lt;br /&gt;wpa_strict_rekey=1&lt;br /&gt;wpa_gmk_rekey=86400&lt;br /&gt;wpa_ptk_rekey=600&lt;br /&gt;# とてつもなく適当&lt;/pre&gt;&lt;/blockquote&gt; で動かん...&lt;a href="http://sourceforge.net/mailarchive/forum.php?thread_name=200808151844.13657.IvDoorn%40gmail.com&amp;forum_name=rt2400-devel"&gt;こちら&lt;/a&gt; が未解決の模様。&lt;br /&gt;&lt;br /&gt;rt2x00usb_interrupt_txdone()::drivers/net/wireless/rt2x00/rt2x00usb.c のコメントそのままに、失敗した訳では無いが、成功 (ACK を受信した) 訳でも無いと。曰く hostapd の不備との話を踏まえて、hostapd 側で IEEE80211_RADIOTAP_F_TX_FAIL のチェックを無効にしたら、動くコトは動いたが、むーん。レートが 1M から上がらん。&lt;br /&gt;&lt;br /&gt;で、結局は先の未解決のすったもんだ、そのままに TXDONE_UNKNOWN を TXDONE_SUCCESS にして自宅内運用中。iPhone でひっかかるような感じになることあるけど、まぁ。ralink の USB デバイスは全て (と言っても別系は 2.6.29 では rt2500usb のみ) ブチ当ってしまう模様。&lt;br /&gt;&lt;br /&gt;2.6.30 以降の ar9170 か rt3070 に期待するしか無いのかなぁ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-824509390316074802?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/824509390316074802/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=824509390316074802' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/824509390316074802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/824509390316074802'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2009/04/usb-hostapd.html' title='USB デバイスで hostapd'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-518145780243722775</id><published>2008-11-11T22:53:00.002+09:00</published><updated>2008-11-11T22:58:50.970+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>LIBPCAP 1.0.0</title><content type='html'>&lt;a href="http://www.tcpdump.org/"&gt;10月 27日リリース&lt;/a&gt;。&lt;br /&gt;PACKET_MMAPにも対応。v2 確認未。&lt;br /&gt;ダーティハックで &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/libpcap-1.0.0-lenny.gz"&gt; debian lenny パッケージ作るためのパッチ&lt;/a&gt;。&lt;br /&gt;忙しすぎ。むーん....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-518145780243722775?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/518145780243722775/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=518145780243722775' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/518145780243722775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/518145780243722775'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/11/libpcap-100.html' title='LIBPCAP 1.0.0'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6122956738095265777</id><published>2008-09-03T22:29:00.004+09:00</published><updated>2008-09-03T23:19:35.977+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>PF_PACKET での vlan_tci - 気になるトコロ</title><content type='html'>間違い。&lt;blockquote&gt;&amp;gt; skb-&gt;vlan_tci を設定する __vlan_hwaccel_rx() を呼んでいるのは&lt;/blockquote&gt;じゃなくて、__vlan_hwaccel_rx() を呼び出す netif_rx() や  netif_receive_skb() の wrapper (とコメントに書いてある)  の vlan_hwaccel_rx() や vlan_hwaccel_receive_skb() はいろんなドライバから呼ばれてる。&lt;br /&gt;&lt;br /&gt;その他&lt;ul&gt;&lt;li&gt;(多分 NETIF_F_HW_VLAN_RX でないデバイスで使う) &lt;br/&gt;vlan_skb_recv()::net/8021q/vlan_dev.c で skb-&gt;vlan_tci をセットしてない&lt;/li&gt;&lt;br /&gt;&lt;li&gt;packet_sock.tp_reserve で確保する位置&lt;br/&gt;tpacket_rcv()::net/packet/af_packet.c の中&lt;blockquote&gt;&lt;pre&gt; } else {&lt;br /&gt;  unsigned maclen = skb_network_offset(skb);&lt;br /&gt;  netoff = TPACKET_ALIGN(po-&gt;tp_hdrlen +&lt;br /&gt;           (maclen &lt; 16 ? 16 : maclen)) +&lt;br /&gt;   po-&gt;tp_reserve;&lt;br /&gt;  macoff = netoff - maclen;&lt;br /&gt; }&lt;br /&gt;        ....&lt;br /&gt; skb_copy_bits(skb, 0, h.raw + macoff, snaplen);&lt;br /&gt;        ....&lt;br /&gt; case TPACKET_V2:&lt;br /&gt;  h.h2-&gt;tp_len = skb-&gt;len;&lt;br /&gt;  h.h2-&gt;tp_snaplen = snaplen;&lt;br /&gt;  h.h2-&gt;tp_mac = macoff;&lt;br /&gt;  h.h2-&gt;tp_net = netoff;&lt;/pre&gt;&lt;/blockquote&gt;mac より前に確保してる? できれば mac と net の間に VLAN オプションフィールド入れたいけど、すんごいツラいしそーゆー用途ではない? ユーザスペースで mac ヘッダ前にずらす?&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6122956738095265777?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6122956738095265777/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6122956738095265777' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6122956738095265777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6122956738095265777'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/09/pfpacket-vlantci.html' title='PF_PACKET での vlan_tci - 気になるトコロ'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6175701463618405360</id><published>2008-09-01T22:23:00.002+09:00</published><updated>2008-09-01T22:27:41.697+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dell-studio'/><title type='text'>Dell Studio で Linux</title><content type='html'>8月上旬に &lt;a href="http://www1.jp.dell.com/content/products/productdetails.aspx/laptop_studio_17?c=jp&amp;cs=jpdhs1&amp;l=ja&amp;s=dhs"&gt;Dell Studio 17 ノートパソコン&lt;/a&gt;なるものを購入。CPU が T9300 (2.5GHz) メモリが 4G という我が家一番の高スペックマシンとなった。お盆休みもあって Linux - debian/lenny 入れてみた。やっぱり? 無線 LAN と GPU で手間取ったので...この位なら切り貼りで良いや。とパッチなど。 CONFIG_DRM は組み込まないように。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6175701463618405360?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6175701463618405360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6175701463618405360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6175701463618405360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6175701463618405360'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/09/dell-studio-linux.html' title='Dell Studio で Linux'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3848872239336017416</id><published>2008-09-01T22:14:00.002+09:00</published><updated>2008-09-01T22:23:29.368+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dell-studio'/><title type='text'>Dell Studio の Radeon HD3650</title><content type='html'>ドライバは&lt;a href="http://ati.amd.com/support/driver.html"&gt;ここ&lt;/a&gt;。カーネルモジュールはいらないかも。と思っていたが、スクロールが遅すぎ。で 2.6.27-rc でコンパイルするためのパッチは以下。GPL なモジュールしか呼び出せない __rcu_read_lock() など&lt;a href="http://d.hatena.ne.jp/moriyoshi/20070623/1182579726"&gt;こちらを参照しつつ&lt;/a&gt;回避しているので注意。&lt;blockquote&gt;&lt;pre&gt;diff -ubBrN fglrx/Makefile fglrx-27/Makefile&lt;br /&gt;--- fglrx/Makefile      2008-08-24 08:47:58.000000000 +0900&lt;br /&gt;+++ fglrx-27/Makefile   2008-08-30 20:27:22.000000000 +0900&lt;br /&gt;@@ -2,6 +2,11 @@&lt;br /&gt; &lt;br /&gt; LIBIP_PREFIX   ?= ..&lt;br /&gt; &lt;br /&gt;+RCU_READ_LOCK := $(shell grep "T __rcu_read_lock" $(SYSMAP) | colrm 9)&lt;br /&gt;+RCU_READ_UNLOCK := $(shell grep "T __rcu_read_unlock" $(SYSMAP) | colrm 9)&lt;br /&gt;+EXTRA_LDFLAGS := --defsym __rcu_read_lock=0x$(RCU_READ_LOCK) \&lt;br /&gt;+                --defsym __rcu_read_unlock=0x$(RCU_READ_UNLOCK)&lt;br /&gt;+&lt;br /&gt; obj-m           += fglrx.o&lt;br /&gt; fglrx-libs      += libfglrx_ip.a.GCC$(GCC_VER_MAJ)&lt;br /&gt; fglrx-c-objs    += firegl_public.o&lt;br /&gt;diff -ubBrN fglrx/firegl_public.c fglrx-27/firegl_public.c&lt;br /&gt;--- fglrx/firegl_public.c       2008-08-24 08:47:58.000000000 +0900&lt;br /&gt;+++ fglrx-27/firegl_public.c    2008-08-31 21:07:45.000000000 +0900&lt;br /&gt;@@ -3077,7 +3077,7 @@&lt;br /&gt; {&lt;br /&gt; #ifdef __SMP__&lt;br /&gt;     /* write back invalidate all other CPUs (exported by kernel) */&lt;br /&gt;-       if (smp_call_function(deferred_flush, NULL, 1, 0) != 0)&lt;br /&gt;+       if (smp_call_function(deferred_flush, NULL, 0) != 0)&lt;br /&gt;                panic("timed out waiting for the other CPUs!\n");&lt;br /&gt; &lt;br /&gt;     /* invalidate this CPU */&lt;br /&gt;@@ -4796,7 +4796,7 @@&lt;br /&gt; void ATI_API_CALL KCL_CallFuncOnOtherCpus(firegl_void_routine_t func_to_call) &lt;br /&gt; {&lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;-       smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );&lt;br /&gt;+       smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 1 );&lt;br /&gt; #endif&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;@@ -4910,7 +4910,7 @@&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;-   if (smp_call_function(KCL_setup_pat, NULL, 0, 1) != 0)&lt;br /&gt;+   if (smp_call_function(KCL_setup_pat, NULL, 1) != 0)&lt;br /&gt;        return 0;&lt;br /&gt; #endif&lt;br /&gt;    KCL_setup_pat(NULL);&lt;br /&gt;@@ -4929,7 +4929,7 @@&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;-    if (smp_call_function(KCL_restore_pat, NULL, 0, 1) != 0)&lt;br /&gt;+    if (smp_call_function(KCL_restore_pat, NULL, 1) != 0)&lt;br /&gt;        return;&lt;br /&gt; #endif&lt;br /&gt;     KCL_restore_pat(NULL);&lt;/pre&gt;&lt;/blockquote&gt;コンパイルは&lt;blockquote&gt;&lt;pre&gt;make SYSMAP=/boot/System.map-2.6.27-rc5-git1 -C /usr/src/testing SUBDIRS=`pwd` clean&lt;br /&gt;make SYSMAP=/boot/System.map-2.6.27-rc5-git1 -C /usr/src/testing SUBDIRS=`pwd` modules&lt;/pre&gt;&lt;/blockquote&gt;で。SYSMAP に、そのまま... System.map を指定して。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3848872239336017416?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3848872239336017416/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3848872239336017416' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3848872239336017416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3848872239336017416'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/09/dell-studio-radeon-hd3650.html' title='Dell Studio の Radeon HD3650'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-521750497589129814</id><published>2008-09-01T22:07:00.003+09:00</published><updated>2008-09-01T22:14:26.701+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dell-studio'/><title type='text'>Dell Studio の WLAN</title><content type='html'>ドライバは&lt;a href="http://ja.broadcom.com/support/802.11/linux_sta.php"&gt;ここ&lt;/a&gt;。残念なことに mac80211 で deprecated になってしまった  CONFIG_IEEE80211。2.6.27-rc でコンパイルするためのパッチは以下&lt;blockquote&gt;&lt;pre&gt;diff -ubBrN hybrid-portsrc-x86_32_5_10_27_6/Makefile hybrid-portsrc-x86_32_5_10_27_6-27/Makefile&lt;br /&gt;--- hybrid-portsrc-x86_32_5_10_27_6/Makefile    2008-07-02 13:32:20.000000000 +0900&lt;br /&gt;+++ hybrid-portsrc-x86_32_5_10_27_6-27/Makefile 2008-08-13 13:29:51.000000000 +0900&lt;br /&gt;@@ -38,3 +38,14 @@&lt;br /&gt; EXTRA_CFLAGS       += -I$(src)/src/wl/sys&lt;br /&gt; &lt;br /&gt; EXTRA_LDFLAGS      := $(src)/lib/wlc_hybrid.o_shipped&lt;br /&gt;+&lt;br /&gt;+KERNEL_PATH ?= /lib/modules/`uname -r`/source&lt;br /&gt;+&lt;br /&gt;+default:&lt;br /&gt;+       make -C $(KERNEL_PATH) M=`pwd` modules&lt;br /&gt;+&lt;br /&gt;+clean:&lt;br /&gt;+       make -C $(KERNEL_PATH) M=`pwd` clean&lt;br /&gt;+&lt;br /&gt;+install:&lt;br /&gt;+       make -C $(KERNEL_PATH) M=`pwd` modules_install&lt;br /&gt;\ No newline at end of file&lt;br /&gt;diff -ubBrN hybrid-portsrc-x86_32_5_10_27_6/src/wl/sys/wl_iw.c hybrid-portsrc-x86_32_5_10_27_6-27/src/wl/sys/wl_iw.c&lt;br /&gt;--- hybrid-portsrc-x86_32_5_10_27_6/src/wl/sys/wl_iw.c  2008-07-02 13:31:02.000000000 +0900&lt;br /&gt;+++ hybrid-portsrc-x86_32_5_10_27_6-27/src/wl/sys/wl_iw.c       2008-08-13 13:28:33.000000000 +0900&lt;br /&gt;@@ -931,12 +931,12 @@&lt;br /&gt;                iwe.cmd = SIOCGIWAP;&lt;br /&gt;                iwe.u.ap_addr.sa_family = ARPHRD_ETHER;&lt;br /&gt;                memcpy(iwe.u.ap_addr.sa_data, &amp;bi-&gt;BSSID, ETHER_ADDR_LEN);&lt;br /&gt;-               event = iwe_stream_add_event(event, end, &amp;iwe, IW_EV_ADDR_LEN);&lt;br /&gt;+               event = iwe_stream_add_event(info, event, end, &amp;iwe, IW_EV_ADDR_LEN);&lt;br /&gt; &lt;br /&gt;                iwe.u.data.length = dtoh32(bi-&gt;SSID_len);&lt;br /&gt;                iwe.cmd = SIOCGIWESSID;&lt;br /&gt;                iwe.u.data.flags = 1;&lt;br /&gt;-               event = iwe_stream_add_point(event, end, &amp;iwe, bi-&gt;SSID);&lt;br /&gt;+               event = iwe_stream_add_point(info, event, end, &amp;iwe, bi-&gt;SSID);&lt;br /&gt; &lt;br /&gt;                if (dtoh16(bi-&gt;capability) &amp; (DOT11_CAP_ESS | DOT11_CAP_IBSS)) {&lt;br /&gt;                        iwe.cmd = SIOCGIWMODE;&lt;br /&gt;@@ -944,7 +944,7 @@&lt;br /&gt;                                iwe.u.mode = IW_MODE_INFRA;&lt;br /&gt;                        else&lt;br /&gt;                                iwe.u.mode = IW_MODE_ADHOC;&lt;br /&gt;-                       event = iwe_stream_add_event(event, end, &amp;iwe, IW_EV_UINT_LEN);&lt;br /&gt;+                       event = iwe_stream_add_event(info, event, end, &amp;iwe, IW_EV_UINT_LEN);&lt;br /&gt;                }&lt;br /&gt; &lt;br /&gt;                iwe.cmd = SIOCGIWFREQ;&lt;br /&gt;@@ -952,13 +952,13 @@&lt;br /&gt;                        CHSPEC_CHANNEL(bi-&gt;chanspec) &lt;= CH_MAX_2G_CHANNEL ?&lt;br /&gt;                        WF_CHAN_FACTOR_2_4_G : WF_CHAN_FACTOR_5_G);&lt;br /&gt;                iwe.u.freq.e = 6;&lt;br /&gt;-               event = iwe_stream_add_event(event, end, &amp;iwe, IW_EV_FREQ_LEN);&lt;br /&gt;+               event = iwe_stream_add_event(info, event, end, &amp;iwe, IW_EV_FREQ_LEN);&lt;br /&gt; &lt;br /&gt;                iwe.cmd = IWEVQUAL;&lt;br /&gt;                iwe.u.qual.qual = rssi_to_qual(dtoh16(bi-&gt;RSSI));&lt;br /&gt;                iwe.u.qual.level = 0x100 + dtoh16(bi-&gt;RSSI);&lt;br /&gt;                iwe.u.qual.noise = 0x100 + bi-&gt;phy_noise;&lt;br /&gt;-               event = iwe_stream_add_event(event, end, &amp;iwe, IW_EV_QUAL_LEN);&lt;br /&gt;+               event = iwe_stream_add_event(info, event, end, &amp;iwe, IW_EV_QUAL_LEN);&lt;br /&gt; &lt;br /&gt; #if WIRELESS_EXT &gt; 17&lt;br /&gt; &lt;br /&gt;@@ -970,7 +970,7 @@&lt;br /&gt;                        if ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_RSN_ID))) {&lt;br /&gt;                                iwe.cmd = IWEVGENIE;&lt;br /&gt;                                iwe.u.data.length = ie-&gt;len + 2;&lt;br /&gt;-                               event = iwe_stream_add_point(event, end, &amp;iwe, (char *)ie);&lt;br /&gt;+                               event = iwe_stream_add_point(info, event, end, &amp;iwe, (char *)ie);&lt;br /&gt;                        }&lt;br /&gt;                        ptr = ((uint8 *)bi) + sizeof(wl_bss_info_t);&lt;br /&gt;                        while ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_WPA_ID))) {&lt;br /&gt;@@ -978,7 +978,7 @@&lt;br /&gt;                            if (ie_is_wps_ie(((uint8 **)&amp;ie), &amp;ptr, &amp;ptr_len)) {&lt;br /&gt;                                iwe.cmd = IWEVGENIE;&lt;br /&gt;                                iwe.u.data.length = ie-&gt;len + 2;&lt;br /&gt;-                               event = iwe_stream_add_point(event, end, &amp;iwe, (char *)ie);&lt;br /&gt;+                               event = iwe_stream_add_point(info, event, end, &amp;iwe, (char *)ie);&lt;br /&gt;                                break;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;@@ -989,7 +989,7 @@&lt;br /&gt;                                if (ie_is_wpa_ie(((uint8 **)&amp;ie), &amp;ptr, &amp;ptr_len)) {&lt;br /&gt;                                        iwe.cmd = IWEVGENIE;&lt;br /&gt;                                        iwe.u.data.length = ie-&gt;len + 2;&lt;br /&gt;-                                       event = iwe_stream_add_point(event, end, &amp;iwe, (char *)ie);&lt;br /&gt;+                                       event = iwe_stream_add_point(info, event, end, &amp;iwe, (char *)ie);&lt;br /&gt;                                        goto done;&lt;br /&gt;                                }&lt;br /&gt;                        }&lt;br /&gt;@@ -1003,7 +1003,7 @@&lt;br /&gt;                else&lt;br /&gt;                        iwe.u.data.flags = IW_ENCODE_DISABLED;&lt;br /&gt;                iwe.u.data.length = 0;&lt;br /&gt;-               event = iwe_stream_add_point(event, end, &amp;iwe, (char *)event);&lt;br /&gt;+               event = iwe_stream_add_point(info, event, end, &amp;iwe, (char *)event);&lt;br /&gt; &lt;br /&gt;                if (bi-&gt;rateset.count) {&lt;br /&gt;                        value = event + IW_EV_LCP_LEN;&lt;br /&gt;@@ -1012,7 +1012,7 @@&lt;br /&gt;                        iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;&lt;br /&gt;                        for (j = 0; j &lt; bi-&gt;rateset.count &amp;&amp; j &lt; IW_MAX_BITRATES; j++) {&lt;br /&gt;                                iwe.u.bitrate.value = (bi-&gt;rateset.rates[j] &amp; 0x7f) * 500000;&lt;br /&gt;-                               value = iwe_stream_add_value(event, value, end, &amp;iwe,&lt;br /&gt;+                               value = iwe_stream_add_value(info, event, value, end, &amp;iwe,&lt;br /&gt;                                        IW_EV_PARAM_LEN);&lt;br /&gt;                        }&lt;br /&gt;                        event = value;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-521750497589129814?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/521750497589129814/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=521750497589129814' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/521750497589129814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/521750497589129814'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/09/dell-studio-wlan.html' title='Dell Studio の WLAN'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8855460525974496959</id><published>2008-08-26T22:04:00.003+09:00</published><updated>2008-08-26T22:27:53.098+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>PF_PACKET での vlan_tci</title><content type='html'>&lt;a href="http://chamaken.blogspot.com/2007/11/tcpdump-8021q.html"&gt;tcpdump で 802.1q&lt;/a&gt; の続きになるのか? &lt;a href="http://lwn.net/Articles/290961/"&gt;2.6.27 にマージされるネットワーク周りのお話&lt;/a&gt;で Patrick McHardy さんのいくつか&lt;ul&gt;&lt;li&gt;vlan: uninline __vlan_hwaccel_rx&lt;/li&gt;&lt;li&gt;packet: deliver VLAN TCI to userspace&lt;/li&gt;&lt;li&gt;packet: add PACKET_RESERVE sockopt&lt;/li&gt;&lt;/ul&gt;あたりが該当しそうだけど...inline ではない、skb-&amp;gt;vlan_tci を設定する __vlan_hwaccel_rx() を呼んでいるのは "Chelsio T3-based" なるドライバのみ?&lt;br /&gt;&lt;br /&gt;例の &lt;a href="http://www.scaramanga.co.uk/code-fu/lincap.c"&gt;lincap.c&lt;/a&gt; に新しい setsockopt() してみたが&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;        /* set VERSION 2 - before pg_vec has set */&lt;br /&gt;        val = TPACKET_V2;&lt;br /&gt; if ((setsockopt(fd, SOL_PACKET, PACKET_VERSION, (void *)&amp;val, sizeof(val))) != 0) {&lt;br /&gt;                perror("setsockopt(PACKET_VERSION)");&lt;br /&gt;                close(fd);&lt;br /&gt;                return 1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        val = 4; /* __be16  0x8100, __be16  h_vlan_TCI - before pg_vec has set, too */&lt;br /&gt;        if ((setsockopt(fd, SOL_PACKET, PACKET_RESERVE, (void *)&amp;val, sizeof(val))) != 0) {&lt;br /&gt;                perror("setsockopt(PACKET_RESERVE)");&lt;br /&gt;  close(fd);&lt;br /&gt;                return 1;&lt;br /&gt; }&lt;br /&gt;.... &lt;br /&gt;        for (i = 0;;) {&lt;br /&gt;         while (*(unsigned long*)ring[i].iov_base) {&lt;br /&gt;                 struct tpacket2_hdr *h = ring[i].iov_base;&lt;br /&gt;                 struct sockaddr_ll *sll = (void *)h + TPACKET_ALIGN(sizeof(*h));&lt;br /&gt;                        unsigned char *bp = (unsigned char *)h + h-&gt;tp_mac;&lt;br /&gt;&lt;br /&gt;                        printf("%u.%.6u: if: %u, vid: %u, type: %s, len: %u\n",&lt;br /&gt;                               h-&gt;tp_sec, h-&gt;tp_nsec,&lt;br /&gt;                 sll-&gt;sll_ifindex,&lt;br /&gt;                 h-&gt;tp_vlan_tci,&lt;br /&gt;                 names[sll-&gt;sll_pkttype],&lt;br /&gt;                        h-&gt;tp_len);&lt;/pre&gt;&lt;/blockquote&gt;まぁ、nsec が取れるようになったのみ。 VLAN ID 取れたら PACKET_RESERVED のところにコピーしてあげるのかな? でも RESERVE されるのは mac よりも前っぽいので、思い違い?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8855460525974496959?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8855460525974496959/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8855460525974496959' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8855460525974496959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8855460525974496959'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/08/pfpacket-vlantci.html' title='PF_PACKET での vlan_tci'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5652619894167355963</id><published>2008-08-25T22:24:00.003+09:00</published><updated>2008-08-25T22:33:48.236+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>hostapd の snapshot</title><content type='html'>&lt;a href="http://hostap.epitest.fi/cvs.html"&gt;こちら&lt;/a&gt;を参照しつつ...git かぁ。libnl1.1 以上が必要っぽく debian であれば lenny で &lt;command&gt;apt-get install libnl-dev&lt;/command&gt;。更に &lt;file&gt;/usr/include/linux&lt;/file&gt; は linux.dpkg-dist か何かに変更して 2.6.27-rc の &lt;file&gt;/usr/src/linux/include/linux&lt;/file&gt; を /usr/include に symlink。&lt;br /&gt;&lt;br /&gt;defconfig を .config にコピーして &lt;span style="font-weight:bold;"&gt;CONFIG_DRIVER_NL80211&lt;/span&gt; を有効にして make。WPA だけの最小? config は&lt;blockquote&gt;&lt;pre&gt;interface=wlan0&lt;br /&gt;driver=nl80211&lt;br /&gt;hw_mode=g&lt;br /&gt;channel=6&lt;br /&gt;ssid=tetest&lt;br /&gt;wpa=1&lt;br /&gt;wpa_passphrase=hogehogemogemoge_foobarbar&lt;/pre&gt;&lt;/blockquote&gt;で良い? ./hostapd -dd tetest.conf とした後、別から probe 投げると tetest と返すところまで。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5652619894167355963?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5652619894167355963/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5652619894167355963' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5652619894167355963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5652619894167355963'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/08/hostapd-snapshot.html' title='hostapd の snapshot'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1820262468972671127</id><published>2008-08-25T21:33:00.002+09:00</published><updated>2008-08-25T22:10:49.170+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>mac80211 の Master mode</title><content type='html'>2.6.27-rc にて mac80211_hwsim なる WLAN デバイスのシミュレータが入ったとのお話。Documentation/networking/mac80211_hwsim/README を眺めると&lt;blockquote&gt;&lt;pre&gt;Please note that the current Linux kernel does not enable AP mode, so a&lt;br /&gt;simple patch is needed to enable AP mode selection:&lt;br /&gt;http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch&lt;/pre&gt;&lt;/blockquote&gt;&lt;a href="http://johannes.sipsolutions.net/patches/kernel/all/LATEST/"&gt;ここ&lt;/a&gt;にある###-allow-ap-vlan-modes.patch がソレなのだが、コメントが...&lt;blockquote&gt;&lt;pre&gt;Don't allow doing it with wext because then&lt;br /&gt;people will just attempt to do it manually (without hostapd) and&lt;br /&gt;complain that it doesn't work.&lt;/pre&gt;&lt;/blockquote&gt;あー...オレオレ。該当。文句言う言う。なんて話はさておき。&lt;br /&gt;&lt;br /&gt;とは言え mac80211 なデバイス全てで hostapd が動くわけではなさげ。と言うか IEEE80211_IF_TYPE_AP が有効なわけではなさげ。手元にあるデバイス...zd1211rw, ath5k, rtl8187, rt2x00 内 2.6.27-rc にて動作するのは rt2x00 のみ。また ath5k は&lt;a href="http://kerneltrap.org/mailarchive/linux-ath5k-devel/2008/8/18/2982954"&gt;近々&lt;/a&gt; という感じ。で rt2x00 の何を使っているかと言えば&lt;blockquote&gt;&lt;pre&gt;$ lsusb&lt;br /&gt;...&lt;br /&gt;Bus 003 Device 003: ID 0411:0067 MelCo., Inc. WLI-U2-KG54-AI WLAN&lt;br /&gt;...&lt;/pre&gt;&lt;/blockquote&gt;バッファローの製品。他は?&lt;blockquote&gt;&lt;pre&gt;fgrep "USB_DEVICE(" /usr/src/testing/drivers/net/wireless/rt2x00/*.c&lt;/pre&gt;&lt;/blockquote&gt;なんてたたくと山ほど。USB_DEVICE の中、例えば rt73usb.c に、こんな行&lt;blockquote&gt;&lt;pre&gt;        /* Buffalo */&lt;br /&gt;        { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&amp;rt73usb_ops) },&lt;/pre&gt;&lt;/blockquote&gt; があったら、Google 様に &lt;a href="http://www.google.co.jp/search?q=%220411%3A00f4%22&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rls=GGGL,GGGL:2006-36,GGGL:ja"&gt;"0411:00f4"&lt;/a&gt;と尋ねると、&lt;a href="http://foro.seguridadwireless.net/index.php/topic,5504.0.html"&gt;ヒント&lt;/a&gt;が見付かることもアリ。&lt;br /&gt;&lt;br /&gt;ところで WPA や RSN ではない Master mode とするために、こんな抜粋してみたけど...最初のドキュメント通り、Master mode になるも ip link set 〜 up あるいは ifconfig 〜 up なんてしてもリンクアップしているように見えますが、動きませんっ。ええ、理解してませんっ。&lt;blockquote&gt;&lt;pre&gt;#include &amp;lt;stdio.h&gt;&lt;br /&gt;#include &amp;lt;linux/nl80211.h&gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;netlink/genl/genl.h&gt;&lt;br /&gt;#include &amp;lt;netlink/genl/ctrl.h&gt;&lt;br /&gt;#include &amp;lt;netlink/genl/mngt.h&gt;&lt;br /&gt;#include &amp;lt;netlink/route/link.h&gt;&lt;br /&gt;&lt;br /&gt;int name2ifindex(char *ifname)&lt;br /&gt;{&lt;br /&gt;        struct nl_handle *nlh;&lt;br /&gt;        struct nl_cache *link_cache;&lt;br /&gt;        int ifindex = -1;&lt;br /&gt;&lt;br /&gt;        if (!ifname)&lt;br /&gt;                return -1;&lt;br /&gt;&lt;br /&gt;        nlh = nl_handle_alloc();&lt;br /&gt;        if (!nlh)&lt;br /&gt;                return -1;&lt;br /&gt;&lt;br /&gt;        if (nl_connect(nlh, NETLINK_ROUTE) &lt; 0)&lt;br /&gt;                goto errout;&lt;br /&gt;&lt;br /&gt;        link_cache = rtnl_link_alloc_cache(nlh);&lt;br /&gt;        if (!link_cache)&lt;br /&gt;                goto errout;&lt;br /&gt;&lt;br /&gt;        ifindex = rtnl_link_name2i(link_cache, ifname);&lt;br /&gt;&lt;br /&gt;        nl_cache_free(link_cache);&lt;br /&gt;errout:&lt;br /&gt;        nl_close(nlh);&lt;br /&gt;        nl_handle_destroy(nlh);&lt;br /&gt;&lt;br /&gt;        return ifindex;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;        struct nl_handle *h;&lt;br /&gt;        struct nl_msg *msg;&lt;br /&gt;        struct nl_cache *cache;&lt;br /&gt;        struct genl_family *family;&lt;br /&gt;        int ifindex = name2ifindex(argv[1]);&lt;br /&gt;&lt;br /&gt;        if (ifindex &lt; 0) {&lt;br /&gt;                fprintf(stderr, "could not get ifindex: %s\n", argv[1]);&lt;br /&gt;                return -1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        h = nl_handle_alloc();&lt;br /&gt;        if (!h) {&lt;br /&gt;                nl_perror("nl_handle_alloc");&lt;br /&gt;                return -1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if (genl_connect(h) &lt; 0) {&lt;br /&gt;                nl_perror("genl_connect");&lt;br /&gt;                goto nla_handle_failure_2;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        cache = genl_ctrl_alloc_cache(h);&lt;br /&gt;        if (!cache) {&lt;br /&gt;                nl_perror("genl_ctrl_alloc_cache");&lt;br /&gt;                goto nla_handle_failure_1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        family = genl_ctrl_search_by_name(cache, "nl80211");&lt;br /&gt;        if (!family) {&lt;br /&gt;                nl_perror("search nl80211 family");&lt;br /&gt;                goto nla_cache_failure;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        msg = nlmsg_alloc();&lt;br /&gt;        if (!msg) {&lt;br /&gt;                nl_perror("nlmsg_alloc");&lt;br /&gt;                goto nla_cache_failure;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        genlmsg_put(msg, 0, 0, genl_family_get_id(family), 0,&lt;br /&gt;                    0, NL80211_CMD_SET_INTERFACE, 0);&lt;br /&gt;        NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, ifindex);&lt;br /&gt;        NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, NL80211_IFTYPE_AP);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        if (nl_send_auto_complete(h, msg) &lt; 0 || nl_wait_for_ack(h) &lt; 0)&lt;br /&gt;                nl_perror("Failed to set interface to master mode");&lt;br /&gt;&lt;br /&gt;nla_put_failure:&lt;br /&gt;        nlmsg_free(msg);&lt;br /&gt;nla_cache_failure:&lt;br /&gt;        nl_cache_free(cache);&lt;br /&gt;nla_handle_failure_1:&lt;br /&gt;        nl_close(h);&lt;br /&gt;nla_handle_failure_2:&lt;br /&gt;        nl_handle_destroy(h);&lt;br /&gt;&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1820262468972671127?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1820262468972671127/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1820262468972671127' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1820262468972671127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1820262468972671127'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/08/mac80211-master-mode.html' title='mac80211 の Master mode'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5859990984374593660</id><published>2008-08-25T21:01:00.002+09:00</published><updated>2008-08-25T21:06:54.368+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian #2</title><content type='html'>いっ...一ヶ月以上放置。&lt;br /&gt;&lt;br /&gt;&gt; いや、ここに張る意味あんまり無いけど&lt;br /&gt;&lt;br /&gt;で、こちら。&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/wlan/freeradius/etch.patch"&gt;etch 用&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/wlan/freeradius/lenny.patch"&gt;lenny 用&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;etch 用は TTLS 作っていなかったけど修正。ロクに試さないでいて、ごめんなさい。&lt;br /&gt;例のごとくですが、おかしなトコありましたら一報もらえると嬉しいです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5859990984374593660?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5859990984374593660/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5859990984374593660' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5859990984374593660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5859990984374593660'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/08/freeradius-eaptls-eapttls-eappeap-linux.html' title='FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian #2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-34945945152848524</id><published>2008-07-08T22:00:00.002+09:00</published><updated>2008-07-08T22:17:28.338+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Lenny</title><content type='html'>いや、ここに張る意味あんまり無いけどチラシの裏、ちょっと jot。rules に&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if dh_shlibdeps -p $$pkg -- -O 2&gt;/dev/null | grep -q libssl; then&lt;br /&gt;    echo "$$pkg links to openssl"&lt;br /&gt;    exit 1&lt;br /&gt;fi&lt;/pre&gt;&lt;/blockquote&gt;ここまでやってあると、イカンことのように思えてくるけど....&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/control freeradius-2.0.4+dfsg/debian/control&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/control   2008-05-19 11:47:18.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/control        2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -1,5 +1,5 @@&lt;br /&gt; Source: freeradius&lt;br /&gt;-Build-Depends: autotools-dev, debhelper (&gt;= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, lib&lt;br /&gt;pcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev&lt;br /&gt;+Build-Depends: autotools-dev, debhelper (&gt;= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, lib&lt;br /&gt;pcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev libssl-dev&lt;br /&gt; Section: net&lt;br /&gt; Priority: optional&lt;br /&gt; Maintainer: Stephen Gran &lt;sgran@debian.org&gt;&lt;br /&gt;@@ -11,7 +11,7 @@&lt;br /&gt; Depends: lsb-base (&gt;= 3.0-6), ${shlibs:Depends}, freeradius-common, libfreeradius2 (= ${binary:Version})&lt;br /&gt; Provides: radius-server&lt;br /&gt; Recommends: freeradius-utils&lt;br /&gt;-Suggests: freeradius-ldap, freeradius-mysql, freeradius-krb5, freeradius-postgresql&lt;br /&gt;+Suggests: freeradius-ldap, freeradius-mysql, freeradius-krb5, freeradius-postgresql, freeradius-tls, freeradius-peap&lt;br /&gt; Description: a high-performance and highly configurable RADIUS server&lt;br /&gt;  A high-performance RADIUS server with support for...&lt;br /&gt;   - many vendor-specific attributes&lt;br /&gt;@@ -121,3 +121,26 @@&lt;br /&gt;  This package contains the detached debugging symbols for the Debian freeradius&lt;br /&gt;  packages&lt;br /&gt; &lt;br /&gt;+Package: freeradius-tls&lt;br /&gt;+Architecture: any&lt;br /&gt;+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}&lt;br /&gt;+Description: eap-tls module for FreeRADIUS server&lt;br /&gt;+ Debian will not provide a binary version of the rlm_eap_tls.so library. This&lt;br /&gt;+ module is required if you want to use EAP/TLS authentication, commonly used&lt;br /&gt;+ for WiFi access points&lt;br /&gt;+&lt;br /&gt;+Package: freeradius-ttls&lt;br /&gt;+Architecture: any&lt;br /&gt;+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}&lt;br /&gt;+Description: eap-ttls module for FreeRADIUS server&lt;br /&gt;+ Debian will not provide a binary version of the rlm_eap_ttls.so library. This&lt;br /&gt;+ module is required if you want to use EAP/TLS authentication, commonly used&lt;br /&gt;+ for WiFi access points&lt;br /&gt;+&lt;br /&gt;+Package: freeradius-peap&lt;br /&gt;+Architecture: any&lt;br /&gt;+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}&lt;br /&gt;+Description: eap-peap module for FreeRADIUS server&lt;br /&gt;+ Debian will not provide a binary version of the rlm_eap_peap.so library. This&lt;br /&gt;+ module is required if you want to use EAP/PEAP authentication, commonly used&lt;br /&gt;+ for WiFi access points&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.install freeradius-2.0.4+dfsg/debian/freeradius-peap.install&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.install   1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-peap.install        2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1 @@&lt;br /&gt;+usr/lib/freeradius/rlm_eap_peap*.so&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.postinst freeradius-2.0.4+dfsg/debian/freeradius-peap.postinst&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.postinst  1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-peap.postinst       2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1,21 @@&lt;br /&gt;+#! /bin/sh&lt;br /&gt;+&lt;br /&gt;+set -e&lt;br /&gt;+&lt;br /&gt;+case "$1" in&lt;br /&gt;+ configure)&lt;br /&gt;+       if [ -x "`which invoke-rc.d 2&gt;/dev/null`" ]; then&lt;br /&gt;+         invoke-rc.d freeradius restart&lt;br /&gt;+       else&lt;br /&gt;+         /etc/init.d/freeradius restart&lt;br /&gt;+       fi&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-upgrade)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-remove)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-deconfigure)&lt;br /&gt;+       ;;&lt;br /&gt;+esac&lt;br /&gt;+&lt;br /&gt;+#DEBHELPER#&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.install freeradius-2.0.4+dfsg/debian/freeradius-tls.install&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.install    1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-tls.install 2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1 @@&lt;br /&gt;+usr/lib/freeradius/rlm_eap_tls*.so&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.postinst freeradius-2.0.4+dfsg/debian/freeradius-tls.postinst&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.postinst   1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-tls.postinst        2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1,21 @@&lt;br /&gt;+#! /bin/sh&lt;br /&gt;+&lt;br /&gt;+set -e&lt;br /&gt;+&lt;br /&gt;+case "$1" in&lt;br /&gt;+ configure)&lt;br /&gt;+       if [ -x "`which invoke-rc.d 2&gt;/dev/null`" ]; then&lt;br /&gt;+         invoke-rc.d freeradius restart&lt;br /&gt;+       else&lt;br /&gt;+         /etc/init.d/freeradius restart&lt;br /&gt;+       fi&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-upgrade)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-remove)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-deconfigure)&lt;br /&gt;+       ;;&lt;br /&gt;+esac&lt;br /&gt;+&lt;br /&gt;+#DEBHELPER#&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.install freeradius-2.0.4+dfsg/debian/freeradius-ttls.install&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.install   1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-ttls.install        2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1 @@&lt;br /&gt;+usr/lib/freeradius/rlm_eap_ttls*.so&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.postinst freeradius-2.0.4+dfsg/debian/freeradius-ttls.postinst&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.postinst  1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/freeradius-ttls.postinst       2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -0,0 +1,21 @@&lt;br /&gt;+#! /bin/sh&lt;br /&gt;+&lt;br /&gt;+set -e&lt;br /&gt;+&lt;br /&gt;+case "$1" in&lt;br /&gt;+ configure)&lt;br /&gt;+       if [ -x "`which invoke-rc.d 2&gt;/dev/null`" ]; then&lt;br /&gt;+         invoke-rc.d freeradius restart&lt;br /&gt;+       else&lt;br /&gt;+         /etc/init.d/freeradius restart&lt;br /&gt;+       fi&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-upgrade)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-remove)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-deconfigure)&lt;br /&gt;+       ;;&lt;br /&gt;+esac&lt;br /&gt;+&lt;br /&gt;+#DEBHELPER#&lt;br /&gt;diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/rules freeradius-2.0.4+dfsg/debian/rules&lt;br /&gt;--- freeradius-2.0.4+dfsg.orig/debian/rules     2008-05-19 11:47:18.000000000 +0900&lt;br /&gt;+++ freeradius-2.0.4+dfsg/debian/rules  2008-07-08 22:13:50.000000000 +0900&lt;br /&gt;@@ -26,7 +26,7 @@&lt;br /&gt; pkgdocdir       = /usr/share/doc/$(package)&lt;br /&gt; raddbdir        = /etc/$(package)&lt;br /&gt; &lt;br /&gt;-modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql&lt;br /&gt;+modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql eap_peap eap_tls eap_ttls&lt;br /&gt; pkgs=$(shell dh_listpackages)&lt;br /&gt; &lt;br /&gt; # This has to be exported to make some magic below work.&lt;br /&gt;@@ -80,14 +80,10 @@&lt;br /&gt;                --with-large-files --with-udpfromto --with-edir \&lt;br /&gt;                --enable-developer \&lt;br /&gt;                --config-cache \&lt;br /&gt;-               --without-rlm_eap_tls \&lt;br /&gt;-               --without-rlm_eap_ttls \&lt;br /&gt;-               --without-rlm_eap_peap \&lt;br /&gt;                --without-rlm_eap_tnc \&lt;br /&gt;                --without-rlm_otp \&lt;br /&gt;                --with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \&lt;br /&gt;                --with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \&lt;br /&gt;-               --without-openssl \&lt;br /&gt;                --without-rlm_eap_ikev2 \&lt;br /&gt;                --without-rlm_sql_oracle \&lt;br /&gt;                --without-rlm_sql_unixodbc \&lt;br /&gt;@@ -164,6 +160,7 @@&lt;br /&gt; &lt;br /&gt;        for mod in ${modulelist}; do \&lt;br /&gt;          pkg=$${mod##sql_} ; \&lt;br /&gt;+         pkg=$${mod##eap_} ; \&lt;br /&gt;          dh_install --sourcedir=$(freeradius_dir) -p freeradius-$$pkg ; \&lt;br /&gt;          rm -f $(freeradius_dir)/usr/lib/freeradius/rlm_$$mod*.so ; \&lt;br /&gt;        done&lt;br /&gt;@@ -174,12 +171,6 @@&lt;br /&gt;        dh_strip -a --dbg-package=freeradius-dbg&lt;br /&gt; &lt;br /&gt;        dh_makeshlibs -a -n&lt;br /&gt;-       for pkg in ${pkgs} ; do \&lt;br /&gt;-         if dh_shlibdeps -p $$pkg -- -O 2&gt;/dev/null | grep -q libssl; then \&lt;br /&gt;-           echo "$$pkg links to openssl" ;\&lt;br /&gt;-           exit 1 ;\&lt;br /&gt;-         fi ;\&lt;br /&gt;-       done&lt;br /&gt;        dh_shlibdeps&lt;br /&gt; &lt;br /&gt; binary-common:&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;apt-get source freeradius して上記パッチあてて fakeroot debian/rules binary すると、上位のディレクトリに freeradius-peap freeradius-tls freeradius-ttls というパッケージが出来上がると思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-34945945152848524?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/34945945152848524/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=34945945152848524' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/34945945152848524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/34945945152848524'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/07/freeradius-eaptls-eapttls-eappeap-linux.html' title='FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Lenny'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1029905663449437899</id><published>2008-07-03T22:20:00.004+09:00</published><updated>2008-07-03T22:57:55.078+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>netflow # 2</title><content type='html'>ながーい寄り道をしてやっと 2。何のことは無い libpcap 入れるんだけど、ノーマル以外にもいくつかありますよ。という閑話が終って本題。ミラーポートをキャプチャして netflow として export するもの。&lt;ul&gt;&lt;li&gt;GPL だけど有償の &lt;a href="http://www.ntop.org/nProbe.html"&gt;nprobe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;古い nprobe の &lt;a href="http://www.jp.netbsd.org/ja/JP/Documentation/Packages/list/net/nprobe/README.html"&gt;NetBSD パッケージ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fprobe.sourceforge.net/"&gt;fprobe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mindrot.org/projects/softflowd/"&gt;softflowd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;古い nprobe にイタズラした悪趣味な &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/lprobe.tgz"&gt;lprobe&lt;/a&gt;&lt;/ul&gt;などがあるようです。fprobe の -ulog なるものは netfilter の ulog (今は nflog に取って代わった?) を。lprobe は素の CONFIG_PACKET_MMAP を。以外は libpcap を使っているようです。ただし nprobe は ノーマルでも使えますが、勿論 PF_RING な libpcap を期待しています。&lt;br /&gt;&lt;br /&gt;# netfilter メンテナの人は nprobe を NF_CT_ACCT 紹介で挙げていた覚えが....&lt;br /&gt;&lt;br /&gt;コレクタ側もいくつかあると思いますが、両方共に debian パッケージにある fprobe と flow-tools を使ってみませう。lenny の例ですが etch も大差ないと思います。&lt;blockquote&gt;&lt;pre&gt;# apt-get install fprobe&lt;br /&gt;....&lt;br /&gt;Setting up fprobe (1.1-7) ...&lt;br /&gt;Starting fprobe: fprobe.&lt;br /&gt;# /etc/init.d/fprobe stop&lt;br /&gt;Stopping fprobe: fprobe.&lt;/pre&gt;&lt;/blockquote&gt;キャプチャするインターフェースとコレクタのホスト、ポートを尋ねられますが、後で変更できますので、適当にそのまま。&lt;blockquote&gt;&lt;pre&gt;# apt-get install flow-tools&lt;br /&gt;....&lt;br /&gt;Setting up flow-tools (1:0.68-12) ...&lt;br /&gt;Starting flow-capture: flow-capture.&lt;br /&gt;# /etc/init.d/flow-capture stop&lt;br /&gt;Stopping flow-capture: flow-capture.&lt;/pre&gt;&lt;/blockquote&gt;で勢い衰えたので、設定からはまた後日、近日....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1029905663449437899?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1029905663449437899/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1029905663449437899' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1029905663449437899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1029905663449437899'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/07/netflow-2.html' title='netflow # 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5032463000931944763</id><published>2008-07-03T21:35:00.005+09:00</published><updated>2008-07-03T22:17:19.375+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>netflow # 1.6</title><content type='html'>カーネルパッチあててコンパイルするのが嫌で &lt;a href="http://public.lanl.gov/cpw/"&gt;MMAP mode on&lt;/a&gt;使っている。あるいは、&lt;a href="http://www.h3.dion.ne.jp/~chamas"&gt;イタズラ&lt;/a&gt;に付き合ってくれている奇特な人の内、キャプチャオンリーのデバイスにて、もうほんの一声だけ性能上げたい。かつ不具合と戦える。という方に。&lt;br /&gt;&lt;br /&gt;カーネルが 2.6.16 と 2.6.24, 2.6.25。debian の etch, lenny で試して何となく動いている &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/mod_ingnore.tgz"&gt;こちら sch_ingnore&lt;/a&gt; を試してみて下さい。etch, lenny 共にカーネルがコンパイルできるパッケージ群と iproute-dev パッケージが必要です。&lt;br /&gt;&lt;br /&gt;# 面倒クサがって実質 libnetlink.h 参照しているだけですが....&lt;blockquote&gt;&lt;pre&gt;$ tar xzf mod_ingnore.tgz &lt;br /&gt;$ cd mod_ingnore&lt;br /&gt;$ make&lt;br /&gt;make -C /lib/modules/`uname -r`/source M=`pwd` modules&lt;br /&gt;make[1]: Entering directory `/usr/src/linux'&lt;br /&gt;  CC [M]  /home/jot/src/mod_ingnore/sch_ingnore.o&lt;br /&gt;  Building modules, stage 2.&lt;br /&gt;  MODPOST 1 modules&lt;br /&gt;  CC      /home/jot/src/mod_ingnore/sch_ingnore.mod.o&lt;br /&gt;  LD [M]  /home/jot/src/mod_ingnore/sch_ingnore.ko&lt;br /&gt;make[1]: Leaving directory `/usr/src/linux'&lt;br /&gt;cc -I./include -shared -fpic -o q_ingnore.so q_ingnore.c&lt;br /&gt;$ ls&lt;br /&gt;Makefile        include        &lt;b&gt;q_ingnore.so&lt;/b&gt;    sch_ingnore.mod.c&lt;br /&gt;Module.markers  modules.order  sch_ingnore.c   sch_ingnore.mod.o&lt;br /&gt;Module.symvers  q_ingnore.c    &lt;b&gt;sch_ingnore.ko&lt;/b&gt;  sch_ingnore.o&lt;/pre&gt;&lt;/blockquote&gt;ingress qdisc のような面構えですが、ただただパケット落とすだけですので qdisc ではありません。カーネルモジュール &lt;file&gt;sch_ingnore.ko&lt;/file&gt; の方はどこでも良いのですが、まぁ &lt;file&gt;/lib/modules/`uname -r`/kernel/net/sched&lt;/file&gt; の下に。&lt;file&gt;q_ingnore.so&lt;/file&gt; は &lt;file&gt;/usr/lib/tc&lt;/file&gt; の下にコピーして下さい。それなりの場所にカーネルモジュール置いたので&lt;blockquote&gt;&lt;pre&gt;# depmod -a&lt;br /&gt;# tc qdisc add dev eth1 ingnore&lt;br /&gt;# tc qdisc ls dev eth1&lt;br /&gt;qdisc ingnore ffff: parent ffff:fff1&lt;/pre&gt;&lt;/blockquote&gt;これで eth1 はキャプチャはしますが、その後通常よりちょっとだけ早くパケット落とします。&lt;file&gt;net/core/dev.c&lt;/file&gt; の関数 netif_receive_skb() を参照してみて下さい&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;....と書いていて大事なコト忘レタ&lt;/span&gt;。#ifdef されている通りカーネルで CONFIG_NET_CLS_ACT が有効になっていないと意味がありません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5032463000931944763?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5032463000931944763/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5032463000931944763' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5032463000931944763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5032463000931944763'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/07/netflow-16.html' title='netflow # 1.6'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2970392087612695779</id><published>2008-07-03T20:24:00.004+09:00</published><updated>2008-07-03T21:34:12.507+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>netflow # 1.5</title><content type='html'>&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%94%E3%83%BC%E3%83%94%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%88%E3%83%A0#.E3.83.94.E3.83.BC.E3.83.94.E3.83.B3.E3.82.B0.E3.83.BB.E3.83.88.E3.83.A0"&gt;ピーピング・トム&lt;/a&gt;にならなかった方、卒業した方。ようこそ、続きです。&lt;br /&gt;&lt;br /&gt;tcpdump などキャプチャするもの大抵は libpcap を用います。キャプチャする linux box の性能とネットワークの流量に依存してしまいますが、linux でのノーマルの libpcap は性能が芳しくないために結構なパケットを取りこぼしてしまいます。もっと効率良くキャプチャをっ。と&lt;ol&gt;&lt;li&gt;カーネルパッチとユーザランド。勿論 libpcap 込みの&lt;a href="http://www.ntop.org/PF_RING.html"&gt;PF_RING&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;vanilla カーネルに組み込まれている CONFIG_PACKET_MMAP を用いた &lt;a href="http://public.lanl.gov/cpw/"&gt;A libpcap version which supports MMAP mode on&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;2 にイタズラして環境変数付けなくても良い&lt;a href="http://www.h3.dion.ne.jp/~chamas/"&gt;悪趣味 libpcap&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;などがあります。PF_RING にしても CONFIG_PACKET_MMAP にしても、受信したパケットをユーザランドとカーネルスペースで共有した領域にコピーするようです。&lt;br /&gt;&lt;br /&gt;1 か 2 がお勧めですが、ドキュメント眺めたり Google様に尋ねながら so name がディストリビューション標準の libpcap と同じ名前になるよう shared library 作ってみて下さい。適当な...例えば /home/jot/lib に置いて、なかなか難かしい条件ですが、一定の量。あるいはフルフルの量を機器に通して&lt;ul&gt;&lt;li&gt;&lt;pre&gt;tcpdump -ni any &amp;gt; /dev/null&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;LD_LIBRARY_PATH=/home/jot/lib tcpdump -ni any &amp;gt; /dev/null&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;同じ程度の時間経った後 Ctrl-C で終了した後の統計&lt;blockquote&gt;&lt;pre&gt;# tcpdump -ni any &gt; /dev/null&lt;br /&gt;tcpdump: WARNING: Promiscuous mode not supported on the "any" device&lt;br /&gt;tcpdump: verbose output suppressed, use -v or -vv for full protocol decode&lt;br /&gt;listening on any, link-type LINUX_SLL (Linux cooked), capture size 96 bytes&lt;br /&gt;^Ctcpdump: pcap_loop: &lt;br /&gt;n packets captured&lt;br /&gt;n packets received by filter&lt;br /&gt;&lt;b&gt;####&lt;/b&gt; packets dropped by kernel&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;####&lt;/b&gt; の箇所、結構な数減っていません?&lt;br /&gt;&lt;br /&gt;おぉっと唸った。かつ、置き換えた事実を忘れない。かつ、ちょっと位の不具合とは戦える。という方。置き換えましょう。&lt;br /&gt;&lt;br /&gt;余談ですがトラヒック負荷かけるのであれば CONFIG_NET_PKTGEN を &lt;file&gt;Documentation/networking/pktgen.txt&lt;/file&gt; 眺めたり、&lt;a href="http://www.linuxfoundation.org/en/Net:Pktgen"&gt;こちら&lt;/a&gt;を参照したりで &lt;a href="ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples"&gt;pktgen.sh&lt;/a&gt;。あるいは PF_RING の方は &lt;a href="http://www.outpost9.com/exploits/unsorted/01-stream.c"&gt;stream.c&lt;/a&gt; なるものを使っていたらしい。その当時は無かったカーネルスペースの pktgen の方がキョーレツ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2970392087612695779?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2970392087612695779/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2970392087612695779' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2970392087612695779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2970392087612695779'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/07/netflow-15.html' title='netflow # 1.5'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5010896902824935303</id><published>2008-07-03T19:41:00.003+09:00</published><updated>2008-07-03T20:22:47.661+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>netflow # 1</title><content type='html'>exporter はその 5 で終らせてもらって新たに。netflow を喋ることができない機器のポートをミラーしてキャプチャ。netflow に変換? してコレクタに送ってごにょごにょする方法。&lt;br /&gt;&lt;br /&gt;まずは機器の設定ですが、&lt;a href="http://www.google.co.jp/search?q=%E3%83%9D%E3%83%BC%E3%83%88%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rls=GGGL,GGGL:2006-37,GGGL:ja"&gt;「ポートミラーリング」で Google様に尋ねて&lt;/a&gt;下さい。気を付ける点ですが、一つのポートをミラーリングするにあたっては全二重の場合、送信 / 受信それぞれ一つづつ。加えて自身が通信するため。計 3つインターフェースが必要になります。例えば Catalyst で fa0/1 の送信を fa0/11 受信を fa0/12。自身が通信するポートを fa0/21 といった場合&lt;blockquote&gt;&lt;pre&gt;monitor session 1 source int fa0/1 tx&lt;br /&gt;monitor session 2 source int fa0/1 rx&lt;br /&gt;monitor session 1 dest int fa0/11&lt;br /&gt;monitor session 2 dest int fa0/12&lt;br /&gt;int fa0/21&lt;br /&gt;switchport mode access&lt;br /&gt;switchport access vlan 100&lt;br /&gt;spanning-tree portfast&lt;/pre&gt;&lt;/blockquote&gt;手元に機器があるワケでは無いので適当。こんな感じといったところです。&lt;br /&gt;&lt;br /&gt;OpenMicroServer + debian を例えにして、eth0 が自身の通信。eth1 で送信、eth2 で受信のキャプチャをするとして eth0 を fa0/21 と。fa0/11 と eth1、fa0/12 と eth2 をそれぞれ繋ぎます。eth1, 2 でキャプチャするのは NAPI 対応の e1000 だから。&lt;br /&gt;&lt;br /&gt;親切なアプリケーションであれば必要ありませんが、一応 eth1, 2 を promisc にしておきます。&lt;blockquote&gt;&lt;pre&gt;ip link set eth1 promisc on&lt;br /&gt;ip link set eth2 promisc on&lt;/pre&gt;&lt;/blockquote&gt;キャプチャのメジャードコは tcpdump。と言ってしまうとオヤジ? tshark とか使うのかしら? まぁ tcpdump とさせてもらって&lt;blockquote&gt;&lt;pre&gt;tcpdump -ni any&lt;/pre&gt;&lt;/blockquote&gt;とツラツラと流れ行く画面を眺めて下さい。あきたら&lt;file&gt;/var/lib/apt/lists/*_Packages&lt;/file&gt; 内の &lt;command&gt;^Depends:.*libpcap&lt;/command&gt; の怪しそうなパッケージインストールしてニヤニヤと....で止めたら犯罪助長するのかっ。と怒られそうですが、長くなりそうなので #2 で。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5010896902824935303?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5010896902824935303/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5010896902824935303' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5010896902824935303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5010896902824935303'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/07/netflow-1.html' title='netflow # 1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1070761933000153691</id><published>2008-06-17T23:54:00.004+09:00</published><updated>2008-06-18T00:45:32.963+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>PACKET_MMAP #2</title><content type='html'>ごめんなさいっ。libpcap のパッチおかしかった。修正しましたので、以前のものを持って行った方は、取り直して下さい、すいません。でパッチのあて方ですが、debian 前提で etch lenny 共に&lt;blockquote&gt;&lt;pre&gt;apt-get source libpcap0.8&lt;/pre&gt;&lt;/blockquote&gt;して、ソースディレクトリに cd した後&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;etch&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/libpcap0.8-etch.patch"&gt;これ&lt;/a&gt;持って行って&lt;blockquote&gt;&lt;pre&gt;patch -p1 &amp;lt; libpcap0.8-etch.patch&lt;br /&gt;./debian/rules binary&lt;/pre&gt;&lt;/blockquote&gt;で上位ディレクトリに deb パッケージが出来ます。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;lenny&lt;/dt&gt;&lt;dd&gt;持って行くモノが&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/libpcap0.8-lenny.patch"&gt;これ - libpcap0.8-lenny.patch&lt;/a&gt; 以外は etch と同じです。&lt;/dd&gt;&lt;/dl&gt;以前も書きましたが configure で root 権限が必要なシステムコール使っていますので、fakeroot では無効のままです、ご注意下さい。生? の debian/patches はそれぞれ &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/60_ring.dpatch"&gt;etch用&lt;/a&gt;、&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/60_ring.diff"&gt;lenny用&lt;/a&gt;にあります。また修正があったらお知らせしますし、おかしなトコがありましたら教えてやって下さい。&lt;br /&gt;&lt;br /&gt;一つ (だけじゃないけど) イマイチなのが PACKET_RX_RING 使っているか使っていないかがわからない点。見栄えが悪いですが stderr に use PACKET_MMAP, ... なんて出力があれば PACKET_RX_RING 使っています。&lt;file&gt;/proc/net/packet&lt;/file&gt; あたりでわかれば嬉しいけど、理解していない。&lt;br /&gt;&lt;br /&gt;あぁ、また一つ。繰り返しになりますが、デフォルト 8Mbyte mmap します。1514 フルであれば 4096 パケットです。多すぎ? 環境変数 PCAP_MMAP_MEMSIZE をバイト単位で調節して下さい。tcpdump であれば &lt;blockquote&gt;&lt;pre&gt;PCAP_MMAP_MEMSIZE=262144 tcpdump -nevi eth0 'ip and port...&lt;/pre&gt;&lt;/blockquote&gt;あるいは&lt;blockquote&gt;&lt;pre&gt;export PCAP_MMAP_MEMSIZE=524288&lt;br /&gt;tcpdump ...&lt;/pre&gt;&lt;/blockquote&gt;などなど。また ingnore や lprobe については後日、近日。と自分に言いきかせて、今日も夜が更けてくてくてく....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1070761933000153691?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1070761933000153691/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1070761933000153691' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1070761933000153691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1070761933000153691'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/packetmmap-2.html' title='PACKET_MMAP #2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1184538966139463484</id><published>2008-06-10T23:14:00.004+09:00</published><updated>2008-06-10T23:25:31.704+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>PACKET_MMAP #1</title><content type='html'>広告? チラシ? の裏よりタチが悪い。自分でも忘れない内にコンパイルや使い方書かないと....と思いながら、モチベーションというか忙しかったりする。で、チラシの裏。&lt;ul&gt;&lt;li&gt;debian etch libpcap0.8 用の &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/60_ring.dpatch"&gt;PACKET_MMAP パッチ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/mod_ingnore.tgz"&gt;sch_ingnore モジュール&lt;/a&gt;にtc 用の .so を追加。&lt;/li&gt;&lt;/ul&gt;lenny 用も etch に準じないと...。あっ、&lt;command&gt;./debian/rules binary&lt;/command&gt; する前に &lt;command&gt;autoconf&lt;/command&gt; が必要。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1184538966139463484?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1184538966139463484/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1184538966139463484' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1184538966139463484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1184538966139463484'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/packetmmap-1.html' title='PACKET_MMAP #1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4543531206901326299</id><published>2008-06-08T16:48:00.003+09:00</published><updated>2008-06-08T17:06:56.360+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>netflow の exporter その 5</title><content type='html'>その後ですが、PF_RING を使わずに。と NetBSD のパッケージ? にある&lt;a href="ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/nprobe/README.html"&gt;古い nprobe&lt;/a&gt; 持ってきて大幅ダーティハック。稚拙ですが&lt;blockquote&gt;Netflow exporter もどき lprobe として &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/lprobe.tgz"&gt;ここ&lt;/a&gt;&lt;/blockquote&gt;に置いときます。パッチなど送っていただければ幸せです。&lt;br /&gt;&lt;br /&gt;IPv4 だけだし、flow とは名ばかりで TCP のフラグ見ていないし、IP のフラグメンテーションも処理していません。ただノーマル? の libpcap 使った nprobe や fprobe よりはパケット落ちがありません。で、OpenMicroServer にて最高 25kpkt/s 程の中、何とかパケット落ちなく頑張って稼働している様です。&lt;br /&gt;&lt;br /&gt;flow-tools の flow-capture で集めた後、flowscan-cuflow で RRD グラフを作ってみたのですが /24 とかのネットワークが混在しまくっていて、マスクの集合で in と out を追いきれず....utils の下にインターフェースで in out を区別する、ほんのちょっとだけ修正した CUFlow.pm がありますので、こちらも良ろしかったら。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4543531206901326299?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4543531206901326299/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4543531206901326299' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4543531206901326299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4543531206901326299'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/netflow-exporter-5.html' title='netflow の exporter その 5'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3419466631467061129</id><published>2008-06-08T12:02:00.005+09:00</published><updated>2008-06-08T13:14:58.137+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>drop, only drop ingress qdisc</title><content type='html'>例の PF_RING であったり、web を彷徨っていると NET_RX_CONSUMED なるパッチがあったり、キャプチャしている「だけ」のインターフェースでは PF_PACKET socket に届けた後は何もしなくて良いよ。vanilla カーネルに直接手を入れるのを避けるためには...とツラツラソース眺めたところ ingress qdisc の判断が良さげ。&lt;br /&gt;&lt;br /&gt;で、tc で何とかならないか。と&lt;blockquote&gt;&lt;pre&gt;tc qdisc add dev eth1 ingress handle ffff:&lt;br /&gt;tc filter del dev eth1 parent ffff: protocol ip  priority 10 u32 match u8 0 0 police mtu 1 drop flowid :1&lt;/pre&gt;&lt;/blockquote&gt;試してみたところ、かえって遅くなってしまった。恐らく毎度の勉強不足。フィルタではなく、ただただ落とす方法を探せず....とは言え何とかならないか? とダーティハック&lt;blockquote&gt;無視するだけの -&lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/mod_ingnore.tgz"&gt; いんぐのあ (ingnore)&lt;/a&gt;&lt;/blockquote&gt;ネーミングセンス無さすぎ? tc コマンドのソース持って来て ingress 該当部分を ingnore とすれば使えるけど面倒そうなので、ユーザスペースのコマンドは後日予定。&lt;br /&gt;&lt;br /&gt;こちらも毎度正確な測定はしていないけど、&lt;a href="http://www.scaramanga.co.uk/"&gt;こちらの&lt;/a&gt; &lt;file&gt;linpcap.c&lt;/file&gt; にて表示せず、送信側は pktgen で試してみたところ、数パーセントだけど確実に取得量は増えている模様。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3419466631467061129?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3419466631467061129/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3419466631467061129' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3419466631467061129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3419466631467061129'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/drop-only-drop-ingress-qdisc.html' title='drop, only drop ingress qdisc'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1588012513977757720</id><published>2008-06-08T11:35:00.003+09:00</published><updated>2008-06-08T11:55:50.298+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcap'/><title type='text'>mmap'ed libpcap</title><content type='html'>PF_RING ではなくて PACKET_MMAP を使おう。ということで libpcap 試していたが&lt;blockquote&gt;&lt;pre&gt;&amp;gt; おまけと言っては失礼だけど環境変数設定すると様子が眺められたり、挙動を変更できるらしいのも、ちょと嬉し。&lt;/pre&gt;&lt;/blockquote&gt;と言うか環境変数設定「しなくては」動作しない。よく忘れるし、もの珍しげに CONFIG_SLUB としているせいか PCAP_MEMORY=max も怪しげ。細かな時間調整も特段必要なく、理解していないマルチキャストを消したり....&lt;blockquote&gt;で &lt;a href="http://www.h3.dion.ne.jp/~chamas/src/pcap/60_ring.diff"&gt;debian lenny 用のパッチ&lt;/a&gt;&lt;/blockquote&gt;正直試しておらず、tcpdump 動いたぁ。のレベルですが、良かったら使ってやって下さい。何も指定しないと 8Mbyte のメモリを map します。環境変数 PCAP_MMAP_MEMSIZE で変更可ですが、私は忘れるでしょう...&lt;br /&gt;&lt;br /&gt;apt-get source libpcap0.8 した後に debian/patch に上記 60_ring.diff 置いて、同じディレクトリにある series にエントリ追加します。で debian/rules binary なのですが、fakeroot では組み込まれないと思います。&lt;br /&gt;&lt;br /&gt;お付き合いいただける方はパッチとか送っていただけると、幸せです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1588012513977757720?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1588012513977757720/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1588012513977757720' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1588012513977757720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1588012513977757720'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/mmaped-libpcap.html' title='mmap&apos;ed libpcap'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3528085996781932498</id><published>2008-06-03T00:19:00.004+09:00</published><updated>2008-06-03T00:54:53.800+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>kgdb?</title><content type='html'>ただただソース眺めているだけの私に言われたくないだろうが 2.6.26 から kgdb が vanilla にマージされるそーで rc 見ると確かに....驚いた。信念よりも嬉しい人の方が多くなったのかなぁ。十中九点九 私には使いきれない。が、ちょっと jot。&lt;br /&gt;&lt;br /&gt;カーネルコンパイルのオプションで&lt;blockquote&gt;&lt;pre&gt;CONFIG_DEBUG_INFO=y&lt;br /&gt;CONFIG_KGDB=y&lt;br /&gt;CONFIG_KGDB_SERIAL_CONSOLE=y&lt;/pre&gt;&lt;/blockquote&gt;としてコンパイル。VMWare にインストールした後で&lt;file&gt;/boot/grub/menu.lst&lt;/file&gt;にこんな感じで &lt;command&gt;update-grub&lt;/command&gt;&lt;blockquote&gt;&lt;pre&gt;# kopt=root=/dev/sda1 ro kgdbwait kgdboc=ttyS0,115200&lt;/pre&gt;&lt;/blockquote&gt;あっ、その前にありがたく&lt;a href="http://arika.org/diary/20070626"&gt;こちら&lt;/a&gt;を参考にしつつシリアルの設定。一点手元の socat では &lt;blockquote&gt;&lt;pre&gt;socat unix-connect:/tmp/vmware-serial-$1-$PORT \&lt;br /&gt;   pty:link=/tmp/ttyv$1$PORT,raw,echo=0,waitslave&lt;/pre&gt;&lt;/blockquote&gt;では NG で &lt;code&gt;pty,link=...&lt;/code&gt; としなくてはならんかった。その後リブートすると&lt;blockquote&gt;&lt;pre&gt;....&lt;br /&gt;serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A&lt;br /&gt;serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A&lt;br /&gt;00:09 ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A&lt;br /&gt;00:0a ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A&lt;br /&gt;kgdb: Registerd I/O driver kgdboc.&lt;br /&gt;kgdb: Waiting for connection from remote gdb...&lt;/pre&gt;&lt;/blockquote&gt;で止まる。ホスト側で socat して、手元に先の vmlinux 置いて&lt;pre&gt;&lt;blockquote&gt;$ pwd&lt;br /&gt;/usr/src/i386linux&lt;br /&gt;$ gdb -q&lt;br /&gt;(gdb) set remotebaud 115200&lt;br /&gt;(gdb) symbol-file vmlinux&lt;br /&gt;Reading symbols from /usr/src/i386linux/vmlinux...done.&lt;br /&gt;Using host libthread_db library "/lib/libthread_db.so.1".&lt;br /&gt;(gdb) target remote /tmp/ttyvHOST&lt;br /&gt;Remote debugging using /tmp/ttyvHOST&lt;br /&gt;kgdb_breakpoint () at kernel/kgdb.c:1677&lt;br /&gt;1677            wmb(); /* Sync point after breakpoint */&lt;br /&gt;(gdb) n   &lt;br /&gt;[New Thread 1]&lt;br /&gt;1678            atomic_set(&amp;kgdb_setting_breakpoint, 0);&lt;br /&gt;(gdb) n&lt;br /&gt;1679    }&lt;br /&gt;(gdb) list&lt;br /&gt;1674            atomic_set(&amp;kgdb_setting_breakpoint, 1);&lt;br /&gt;1675            wmb(); /* Sync point before breakpoint */&lt;br /&gt;1676            arch_kgdb_breakpoint();&lt;br /&gt;1677            wmb(); /* Sync point after breakpoint */&lt;br /&gt;1678            atomic_set(&amp;kgdb_setting_breakpoint, 0);&lt;br /&gt;1679 }&lt;br /&gt;1680 EXPORT_SYMBOL_GPL(kgdb_breakpoint);&lt;br /&gt;1681 &lt;br /&gt;1682 static int __init opt_kgdb_wait(char *str)&lt;br /&gt;1683 {&lt;br /&gt;(gdb) &lt;/pre&gt;&lt;/blockquote&gt;をぉ.... # こーして夜がふけてくてくてくてく&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3528085996781932498?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3528085996781932498/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3528085996781932498' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3528085996781932498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3528085996781932498'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/06/kgdb.html' title='kgdb?'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3989745718245002886</id><published>2008-05-06T18:32:00.004+09:00</published><updated>2008-06-03T00:19:40.332+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>PF_RING のパッチ</title><content type='html'>2004年 3月と結構以前の話だけど、&lt;a href="http://oss.sgi.com/archives/netdev/2004-04/msg00037.html"&gt;こんなやりとり&lt;/a&gt;があったらしい。jamal さんとしては PACKET_MMAP (と NAPI) で充分。でないならばプロファイル基に相談しましょ。といったところ。確かに大枠の仕組としてはソケットのバッファを mmap するという点で同じ。何が違うのか...&lt;br /&gt;&lt;br /&gt;例のごとく読んでいないが、&lt;file&gt;net/core/dev.c&lt;/file&gt; の &lt;code&gt;netif_receive_skb()&lt;/code&gt; の初っ端で、ハンドラ呼び出して...む〜ん、わからん...で &lt;code&gt;return(NET_RX_SUCCESS);&lt;/code&gt; してる。fragmentation 処理入れたり、forwarding の場合はもう一度 queue に入れたり? わからんのに、こんなことゆーと叱られそうだが、何よりソースが見難い...ごめんなさい。&lt;br /&gt;&lt;br /&gt;という何となくの経過を経て、やっぱ使うの止めた。vanilla にある CONFIG_PACKET_MMAP で戦ってみようと思う今日この頃。こっちも聞きかじっただけだが、キャプチャではなくパケット転送するのであれば &lt;code&gt;NF_CT_ACCT&lt;/code&gt; - &lt;a href="http://www.kernel.org/doc/ols/2005/ols2005v2-pages-273-278.pdf"&gt;この PDF&lt;/a&gt;辺りから始まったお話? とかどうかしら?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3989745718245002886?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3989745718245002886/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3989745718245002886' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3989745718245002886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3989745718245002886'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/05/pfring.html' title='PF_RING のパッチ'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8536628512576875234</id><published>2008-05-06T18:27:00.003+09:00</published><updated>2008-05-06T18:32:24.670+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><title type='text'>X でのキーボード</title><content type='html'>自宅の古い Vaio (PCG-R505R/K) で X を起動すると _(underscore) と ](rightbracket) が使えていない事が今になって判明。と、最近は Web ブラウズしかしていないことも判明。debian lenny の xorg.conf にて&lt;blockquote&gt;&lt;pre&gt;Section "InputDevice"&lt;br /&gt;        Identifier      "Generic Keyboard"&lt;br /&gt;        Driver          "kbd"&lt;br /&gt;        Option          "CoreKeyboard"&lt;br /&gt;        Option          "XkbRules"      "xorg"&lt;br /&gt;        Option          "XkbModel"      "jp106"&lt;br /&gt;        Option          "XkbLayout"     "jp"&lt;br /&gt;        # Option                "XkbVariant"    "106"&lt;br /&gt;        Option          "XkbOptions"    "ctrl:swapcaps"&lt;br /&gt;EndSection&lt;/pre&gt;&lt;/blockquote&gt; で OK。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8536628512576875234?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8536628512576875234/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8536628512576875234' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8536628512576875234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8536628512576875234'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/05/x.html' title='X でのキーボード'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4060954705429135009</id><published>2008-04-24T22:07:00.002+09:00</published><updated>2008-04-24T22:53:30.641+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>netflow の exporter その 4</title><content type='html'>その 5 はその後で...測定せず多々感覚的だけど、いったん自分の中ではオチをつけよう。&lt;br /&gt;&lt;br /&gt;きっかけは....良くある話かわからないけどアカウンティングを取ることができないルータ、スイッチでアカウントを取りたかったと。でインターフェースのミラーをして、キャプチャするんだけど送信、受信で 2つのインターフェースの面倒を見なくちゃイカンと。100Mbit 全二重に流れるパケットをロス少なく (古い) nprobe とぷらっとホームさんの &lt;a href="http://www.plathome.co.jp/products/oms400/"&gt;OpenMicroServer&lt;/a&gt; で取ろう。ってトコ。&lt;br /&gt;&lt;br /&gt;新しい &lt;a href=""&gt;nprobe&lt;/a&gt; も購入してみたが netflow の v9 や VLAN MPLS などが不要であれば古いものでも、まぁ。加えて正確なフローというより、どこと、どこの、どのポート使った通信が多いか。程度がわかれば十分だし。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://public.lanl.gov/cpw/"&gt;MMAPed な libpcap&lt;/a&gt; (って言うのかな?) と &lt;a href="http://www.ntop.org/PF_RING.html"&gt;PF_RING な libpcap&lt;/a&gt; では、PF_RING の方が少し良さげ。ただしデバイスに NULL あるいは any を指定することができず、カーネルパッチも必要。また pcap_hoge を pfring_hoge で実装しているのだけど、何となく pcap_loop に重きを置いて、他が足りない感アリ。&lt;br /&gt;&lt;br /&gt;PF_RING で二つのインターフェースを一つの (nprobe) プロセスで面倒見ようと&lt;a href="http://www.tcpdump.org/lists/workers/2004/03/msg00064.html"&gt;こんなパッチ&lt;/a&gt;眺めながら epollで実装してみたが、一つのインターフェースで二つプロセス稼働させた方が全く良い。PF_RING のカーネルパッチ眺めると epoll ではなく poll の方が良い? 試しておらず。&lt;br /&gt;&lt;br /&gt;むーん。と悩んだ結果....ifenslave で二つのインターフェースをバンディングして、これをデバイスと指定することで良しとした。ring.ko をロードする時に受信のみとするのと ethtool の -G で デバイスの rx ring を大きめに設定してみる。&lt;br /&gt;&lt;br /&gt;で結果は 100M全二重はチト辛い。上下合わせてピーク 150M程度のトラヒックで &lt;file&gt;/proc/net/pf_ring/&amp;lt;プロセスID&amp;gt;-&amp;lt;デバイス名&amp;gt;- &lt;/file&gt;みたいなエントリを覗くと 6〜7% ロスしてる。&lt;br /&gt;&lt;br /&gt;何とかできるか...と無い知恵を絞って画策してみたが nprobe の商用サイト? で販売している筐体 &lt;a href="http://www.nmon.net/nBox_nmon.html"&gt;nBox&lt;/a&gt; のスペック眺めたところ、OpenMicroServer では難かしいカモ。と弱気になったところで...オチ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4060954705429135009?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4060954705429135009/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4060954705429135009' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4060954705429135009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4060954705429135009'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/04/netflow-exporter-4.html' title='netflow の exporter その 4'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2935852303431618603</id><published>2008-04-16T22:17:00.004+09:00</published><updated>2008-04-16T22:47:40.003+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>netflow の exporter その 3</title><content type='html'>先日書き綴ったものの修正。&lt;blockquote&gt;&amp;gt;Documentation/networking/packet_mmap.txt のサイトはアクセスできず&lt;br /&gt;&amp;gt;&lt;a href="http://public.lanl.gov/cpw/"&gt;ここ&lt;/a&gt;からソース持ってきてみたものの x86 のみ? で早々にあきらめ。&lt;/blockquote&gt; mb() でアセンブラがあったが、使っておらず、またこれら PACKET_MMAP な libpcap を参考にした &lt;a href="http://www.scaramanga.co.uk/code-fu/lincap.c"&gt;lincap.c&lt;/a&gt; についても &lt;code&gt;mb()&lt;/mb&gt; についてはカーネルヘッダから、それなりのものを持って来れば良さげ。また&lt;blockquote&gt;&amp;gt;PF_RING に挑戦したが...扱っている量がそーとーなレベルという事に気付く。&lt;/blockquote&gt; なんて書いたが、少々試したところ歴然たる差があった。当初試したときには &lt;code&gt;pcap_open()&lt;/code&gt; での &lt;code&gt;*device&lt;/code&gt; に NULL あるいは any が指定できるものと思い込んでいたが、指定して PF_RING が feature されずに動いてしまったため差が無いと思い込んでいた。この any が指定できないのが少々辛かったりするので PACKET_MMAP の libpcap も作成して試してみよう。&lt;br /&gt;&lt;br /&gt;おまけと言っては失礼だけど&lt;a href="http://public.lanl.gov/cpw/README.ring.html"&gt;環境変数設定すると&lt;/a&gt;様子が眺められたり、挙動を変更できるらしいのも、ちょと嬉し。&lt;br /&gt;&lt;br /&gt;で、&lt;a href="http://public.lanl.gov/cpw/libpcap-0.9.8.20080206.tar.gz"&gt;libpcap-0.9.8.20080206.tar.gz&lt;/a&gt; を持ってきて展開した後、debian lenny にて &lt;command&gt;apt-get source libpcap0.8&lt;/command&gt; この debian ディレクトリを丸ごとコピーして以下 &lt;file&gt;debian/patches/10_shared_lib.diff&lt;/file&gt; を参考にした Makefile.in のパッチ。rules にて patch 当てないようにして&lt;blockquote&gt;&lt;pre&gt;--- libpcap-0.9.8.20080206/Makefile.in  2008-02-08 08:49:02.000000000 +0900&lt;br /&gt;+++ libpcap-0.9.8.20080206-deb/Makefile.in      2008-04-16 22:12:48.000000000 +0900&lt;br /&gt;@@ -116,6 +116,17 @@&lt;br /&gt; $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \&lt;br /&gt;        $(libpcap_la_LDFLAGS) $(LDFLAGS) -o $@&lt;br /&gt; DEFAULT_INCLUDES = -I.@am__isrc@&lt;br /&gt;+&lt;br /&gt;+# some defines for shared library compilation&lt;br /&gt;+MAJ=$(shell head -1 debian/changelog | perl -nle 'm/\S+(\d.\d)\s+\(\d\.\d\.\d+-\S+\)/ and print $$1')&lt;br /&gt;+MIN=$(shell head -1 debian/changelog | perl -nle 'm/\S+\s+\(\d\.\d\.(\d+)-\S+\)/ and print $$1')&lt;br /&gt;+LIBVERSION=$(shell head -1 debian/changelog | perl -nle 'm/\S+\s+\((\S+)-\S+\)/ and print $$1')&lt;br /&gt;+VERSION=$(MAJ).$(MIN)&lt;br /&gt;+LIBNAME=pcap&lt;br /&gt;+LIBRARY=lib$(LIBNAME).a&lt;br /&gt;+SOLIBRARY=lib$(LIBNAME).so&lt;br /&gt;+SHAREDLIB=$(SOLIBRARY).$(LIBVERSION)&lt;br /&gt;+&lt;br /&gt; depcomp =&lt;br /&gt; am__depfiles_maybe =&lt;br /&gt; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \&lt;br /&gt;@@ -155,6 +166,7 @@&lt;br /&gt; CC = @CC@&lt;br /&gt; CCDEPMODE = @CCDEPMODE@&lt;br /&gt; CFLAGS = @CFLAGS@&lt;br /&gt;+CFLAGS_SHARED = -shared -Wl,-soname,$(SOLIBRARY).$(MAJ)&lt;br /&gt; CPP = @CPP@&lt;br /&gt; CPPFLAGS = @CPPFLAGS@&lt;br /&gt; CXX = @CXX@&lt;br /&gt;@@ -278,7 +290,7 @@&lt;br /&gt; LTRELEASE = $(RMAJOR).$(RMINOR).$(RREVISION)&lt;br /&gt; LTVERSION = $(VCURRENT):$(VREVISION):$(VAGE)&lt;br /&gt; PCAP = @V_PCAP@&lt;br /&gt;-PSRC = pcap-@V_PCAP@.c&lt;br /&gt;+PSRC = pcap-@V_PCAP@.c pcap-ring.c&lt;br /&gt; FSRC = fad-@V_FINDALLDEVS@.c&lt;br /&gt; FADS = @V_FADS@&lt;br /&gt; LEX = @V_LEX@&lt;br /&gt;@@ -298,7 +310,9 @@&lt;br /&gt; MAINTAINERCLEANFILES = Makefile.in Makefile.am.bak configure.ac.bak aclocal.m4 configure config.h.in&lt;br /&gt; MOSTLYCLEANFILES = bpf_filter.c scanner.c grammar.c version.c lex.yy.c \&lt;br /&gt;                           tokdefs.h version.h os-proto.h \&lt;br /&gt;-                         stamp-h stamp-h.in&lt;br /&gt;+                         stamp-h stamp-h.in $(OBJ_PIC) libpcap.so*&lt;br /&gt;+&lt;br /&gt;+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o)&lt;br /&gt;&lt;br /&gt; HDR = arcnet.h atmuni31.h config.h ethertype.h gencode.h \&lt;br /&gt;                          llc.h nlpid.h pcap-bpf.h pcap-int.h pcap-namedb.h \&lt;br /&gt;@@ -384,6 +398,9 @@&lt;br /&gt;            $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \&lt;br /&gt;          else :; fi; \&lt;br /&gt;        done&lt;br /&gt;+       $(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/&lt;br /&gt;+       ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ)&lt;br /&gt;+       ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY)&lt;br /&gt;&lt;br /&gt; uninstall-libLTLIBRARIES:&lt;br /&gt;        @$(NORMAL_UNINSTALL)&lt;br /&gt;@@ -411,7 +428,12 @@&lt;br /&gt;        -rm -f *.tab.c&lt;br /&gt;&lt;br /&gt; .c.o:&lt;br /&gt;-       $(COMPILE) -c $&lt;&lt;br /&gt;+       # $(COMPILE) -c $&lt;&lt;br /&gt;+       $(COMPILE) -c -o $@ $(srcdir)/$*.c&lt;br /&gt;+&lt;br /&gt;+%_pic.o: %.c&lt;br /&gt;+       @rm -f $@&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c&lt;br /&gt;&lt;br /&gt; .c.obj:&lt;br /&gt;        $(COMPILE) -c `$(CYGPATH_W) '$&lt;'`&lt;br /&gt;@@ -767,7 +789,7 @@&lt;br /&gt;&lt;br /&gt; #all-local:&lt;br /&gt; #      rm -f libpcap.a; $(LN_S) .libs/libpcap.a libpcap.a&lt;br /&gt;-all-local: libpcap.a&lt;br /&gt;+all-local: libpcap.a $(SHAREDLIB)&lt;br /&gt;&lt;br /&gt; libpcap.a: .libs/libpcap.a&lt;br /&gt;        cp .libs/libpcap.a libpcap.a&lt;br /&gt;@@ -792,6 +814,13 @@&lt;br /&gt; yyy:&lt;br /&gt;        sh beenthere&lt;br /&gt;&lt;br /&gt;+$(SHAREDLIB): $(OBJ_PIC)&lt;br /&gt;+       -@rm -f $@&lt;br /&gt;+       -@rm -f $(SOLIBRARY) $(SOLIBRARY).$(MAJ)&lt;br /&gt;+       $(CC) $(CFLAGS_SHARED) -o $(SHAREDLIB) $(OBJ_PIC) -lc&lt;br /&gt;+       ln -s $(SHAREDLIB) $(SOLIBRARY).$(MAJ)&lt;br /&gt;+       ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY)&lt;br /&gt;+&lt;br /&gt; # generated source&lt;br /&gt; pcap.3.gz: pcap.3&lt;br /&gt;        gzip -c &lt; pcap.3 &gt; pcap.3.gz&lt;br /&gt;@@ -800,12 +829,18 @@&lt;br /&gt;        rm -f bpf_filter.c&lt;br /&gt;        $(LN_S) $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c&lt;br /&gt;&lt;br /&gt;+bpf_filter_pic.o: bpf_filter.c&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -c bpf_filter.c -o $@&lt;br /&gt;+&lt;br /&gt; scanner.o: scanner.c tokdefs.h&lt;br /&gt;&lt;br /&gt; scanner.c: scanner.l tokdefs.h&lt;br /&gt;        @rm -f $@&lt;br /&gt;        $(V_LEX) -t scanner.l &gt; $$$$.$@; mv $$$$.$@ $@&lt;br /&gt;&lt;br /&gt;+scanner_pic.o: scanner.c tokdefs.h&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -o $@ -c scanner.c&lt;br /&gt;+&lt;br /&gt; tokdefs.h:&lt;br /&gt;        rm -f grammar.c&lt;br /&gt;        make grammar.o&lt;br /&gt;@@ -818,6 +853,10 @@&lt;br /&gt;        mv y.tab.c grammar.c&lt;br /&gt;        mv y.tab.h tokdefs.h&lt;br /&gt;&lt;br /&gt;+grammar_pic.o: grammar.c&lt;br /&gt;+       @rm -f $@&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c&lt;br /&gt;+&lt;br /&gt; version.o: version.c&lt;br /&gt;&lt;br /&gt; version.c: $(srcdir)/REVISION version.h&lt;br /&gt;@@ -828,6 +867,13 @@&lt;br /&gt; version.h: $(srcdir)/VERSION&lt;br /&gt;        @rm -f $@&lt;br /&gt;        sed -n -e 's/.*/static const char pcap_version_string[] = "libpcap version &amp;";/p' $(srcdir)/VERSION &gt; $@&lt;br /&gt;+&lt;br /&gt;+version_pic.o: version.c&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -c version.c -o $@&lt;br /&gt;+&lt;br /&gt;+pcap-ring_pic.o: version.c&lt;br /&gt;+       $(COMPILE) -fPIC $(CFLAGS) -c pcap-ring.c -o $@&lt;br /&gt;+&lt;br /&gt; # Tell versions [3.59,3.63) of GNU make to not export all variables.&lt;br /&gt; # Otherwise a system limit (for SysV at least) may be exceeded.&lt;br /&gt; .NOEXPORT:&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;# 早い時間の帰宅って嬉しいなぁ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2935852303431618603?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2935852303431618603/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2935852303431618603' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2935852303431618603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2935852303431618603'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/04/netflow-exporter-3.html' title='netflow の exporter その 3'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-556163498528903258</id><published>2008-04-11T00:05:00.003+09:00</published><updated>2008-04-11T00:23:40.391+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMicroServer'/><title type='text'>chroot で SSD &amp; cross compile</title><content type='html'>OpenMicroServer のクロスコンパイルをするために SSD なるディストリビューションがあるらしく Web を彷徨うと Windows 方々は VMWare-Player 上で。と言うのが多いらしい。カーネルのコンパイルしてファームに組み込み。までしか試していないけど linux ならば。と  chroot で試したところ、どうもできたらしい。&lt;br /&gt;&lt;br /&gt;# なんて言っているが VMWare や lguest でも試した後の話。&lt;br /&gt;&lt;br /&gt;ぷらっとホームさんのドキュメント&lt;a href="ftp://ftp.plathome.co.jp/pub/OMS400/misc/plathome/custom-firmware.txt"&gt;``OpenMicroServer/OpenBlockS266 のファームウェアのカスタマイズ''&lt;/a&gt;を多々参考にしつつ長くなるけど...&lt;a href="ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/i386/binary/"&gt;i386 のバイナリ tgz &lt;/a&gt; を揃えた後で&lt;blockquote&gt;&lt;pre&gt;# mkdir SSD&lt;br /&gt;# for i in tmp/*.tgz; do&lt;br /&gt;&gt; tar xzpf $i -C SSD&lt;br /&gt;# done&lt;br /&gt;# pushd SSD/usr/src/dist/distfiles/&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-2.6.16.59-004-mips-obs.patch.bz2&lt;br /&gt;....&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-2.6.16.59.patch.bz2&lt;br /&gt;....&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-mips-2.6.16.tar.bz2&lt;br /&gt;....&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/usagi-linux26-stable-20050714-2.6.16.diff.bz2  &lt;br /&gt;....&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/mtd-snapshot-20060328.tar.bz2&lt;br /&gt;....&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/pcmcia-cs-3.2.8.tar.gz&lt;br /&gt;....&lt;br /&gt;# cd ../../distrib/mipsel-obs1550/product/initrd/&lt;br /&gt;# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/mipsel-obs1550/installation/ramdisk.image-product.gz&lt;br /&gt;....&lt;br /&gt;# popd&lt;br /&gt;# chroot SSD&lt;br /&gt;# cd /etc/&lt;br /&gt;# cp mk.conf mk.conf.old&lt;br /&gt;# vi mk.conf&lt;br /&gt;# diff -ub mk.conf.old mk.conf&lt;br /&gt;--- mk.conf.old 2008-04-10 23:29:42.000000000 +0900&lt;br /&gt;+++ mk.conf     2008-04-10 23:30:51.000000000 +0900&lt;br /&gt;@@ -10,19 +10,19 @@&lt;br /&gt; #KERNEL_CONFIG?=       /any_dir/my_kernel_config&lt;br /&gt;&lt;br /&gt; # Cross Compile for OpenBlockS&lt;br /&gt;-#CROSS_BUILD?= powerpc&lt;br /&gt;-#DESTDIR?=     /home/dest-powerpc&lt;br /&gt;-#RELEASEDIR?=  /home/release-powerpc&lt;br /&gt;+CROSS_BUILD=   mipsel&lt;br /&gt;+DESTDIR=       /home/dest/mipsel&lt;br /&gt;+RELEASEDIR=    /home/release/mipsel&lt;br /&gt;&lt;br /&gt; # OPENBLOCKS    'obs50','obs200','obs266' or 'none'&lt;br /&gt;-OPENBLOCKS?=   none&lt;br /&gt;+OPENBLOCKS=    obs1550&lt;br /&gt;&lt;br /&gt;-HAVE_CVS?=     yes&lt;br /&gt;+HAVE_CVS?=     no&lt;br /&gt; DEVELOPTOOLS?= yes&lt;br /&gt; USE_PAM?=      yes&lt;br /&gt; USE_PCMCIA?=   yes&lt;br /&gt; USE_EXT3FS?=   yes&lt;br /&gt;-IPV6?=         yes&lt;br /&gt;+IPV6?=         no&lt;br /&gt; WITH_X11?=     no&lt;br /&gt;&lt;br /&gt; SSDVERSION=    0.4&lt;br /&gt;# mknod /dev/null c 1 3&lt;br /&gt;# export MACHTYPE&lt;br /&gt;# export HOSTTYPE&lt;br /&gt;# export SHELL&lt;br /&gt;# export PATH=$PATH:/usr/cross/mipsel/bin/&lt;br /&gt;# cd /usr/src/mkdist/mtd&lt;br /&gt;# bmake&lt;br /&gt;....&lt;br /&gt;# cd /usr/src/mkdist/kernel&lt;br /&gt;# bmake&lt;br /&gt;....&lt;br /&gt;# cd /usr/src/mkdist/pcmcia-cs&lt;br /&gt;# bmake&lt;br /&gt;....&lt;/pre&gt;&lt;/blockquote&gt;ごにょごにょ&lt;pre&gt;&lt;blockquote&gt;# cd /usr/src&lt;br /&gt;# bmake -DNOCLEAN build_kernel&lt;br /&gt;....&lt;br /&gt;# cd /usr/src/distrib/mipsel-obs1550/product/treeboot&lt;br /&gt;# bmake&lt;br /&gt;....&lt;br /&gt;# ls&lt;br /&gt;Makefile  System-product.map  zImage.initrd.treeboot-product&lt;br /&gt;# exit&lt;br /&gt;# ls -l SSD/usr/src/distrib/mipsel-obs1550/product/treeboot&lt;br /&gt;total 9588&lt;br /&gt;-rw-r--r-- 1 root   root       172 Aug 23  2005 Makefile&lt;br /&gt;-rw-r--r-- 1 root   root   609544 Apr 11 00:03 System-product.map&lt;br /&gt;-rwxr-xr-x 1 root   root  9280780 Apr 11 00:03 zImage.initrd.treeboot-product&lt;/pre&gt;&lt;/blockquote&gt;気を付ける点としては pcmcia-cs を持ってきておくことと /dev/null 作ること位かしら?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-556163498528903258?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/556163498528903258/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=556163498528903258' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/556163498528903258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/556163498528903258'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/04/chroot-ssd-cross-compile.html' title='chroot で SSD &amp; cross compile'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4100665682058524685</id><published>2008-04-10T22:32:00.003+09:00</published><updated>2008-04-10T23:04:03.541+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>netflow の exporter その 2</title><content type='html'>&lt;file&gt;Documentation/networking/packet_mmap.txt&lt;/file&gt; のサイトはアクセスできず、&lt;a href="http://public.lanl.gov/cpw/"&gt;ここ&lt;/a&gt; からソース持ってきてみたものの x86 のみ? で早々にあきらめ。&lt;br /&gt;&lt;br /&gt;nprobe って言っているなら気付けよっ。との事で、&lt;a href="http://www.sfc.wide.ad.jp/~irino/blog/2008/02/pf-ring-on-debian-etch.php"&gt;こちら&lt;/a&gt; をありがたく参考しつつ PF_RING に挑戦したが...扱っている量がそーとーなレベルという事に気付く。OpenMicroServer にて nprobe 稼働させてロスしまくっていても flow-capture でひろってみると 5分おきに 6M位 のファイルができてる...&lt;br /&gt;&lt;br /&gt;# 参考にさせていただいたところ補足。libpfring でのコンパイルは -fPIC 入れた方が良さげ。&lt;br /&gt;# また libpfring の so は単独ではなく libpcap の README 曰く libpcap 作る時に *.o 加えてあげるらしい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4100665682058524685?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4100665682058524685/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4100665682058524685' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4100665682058524685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4100665682058524685'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/04/netflow-exporter-2.html' title='netflow の exporter その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7823927855957715472</id><published>2008-04-10T21:58:00.002+09:00</published><updated>2008-04-10T22:30:52.715+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Cisco コンソール &amp; cu &amp; emacs</title><content type='html'>普段は emacs にて ``M-x shell'' の後 telnet 使っているけどコンソールは持ち運びできる PC が Windows なので TeraTerm なるものを使っていた。コンソールも emacs から。と同じように shell 起動して &lt;blockquote&gt;&lt;command&gt;cu --parity=none -s 9600 -l /dev/ttyUSB0&lt;/command&gt;&lt;/blockquote&gt; なんてやってみたがウマくない。例のごとく Web をウロウロしていたら Term Mode なるものを発見。``M-x term'' の後で cu してみたところ...おぉ ? でヘルプでるし TAB で補完もされる。``C-j'' ``C-k'' で line mode と char mode の切替が必要になるが、使い慣れた emacs でログは取れるし、コピペもできるし、ちょと嬉し。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7823927855957715472?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7823927855957715472/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7823927855957715472' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7823927855957715472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7823927855957715472'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/04/cisco-cu-emacs.html' title='Cisco コンソール &amp; cu &amp; emacs'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-469008591616624897</id><published>2008-03-31T23:23:00.003+09:00</published><updated>2008-03-31T23:47:23.800+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMicroServer'/><title type='text'>netflow の exporter</title><content type='html'>日本で debian で mipsel って言わずもがな? ぷらっとホームさんの &lt;a href="http://www.plathome.co.jp/products/oms400/index.html"&gt;OpenMicroServer(TM)&lt;/a&gt; 。で netflow の exporter を探してみたところ、debian パッケージにあったのが &lt;a href="http://fprobe.sourceforge.net/"&gt;fprobe&lt;/a&gt;。ulog の方が良さげだけど、自身を通るトラヒックではなくて、promisc モードで取得する必要あり。かつ EBT の nat テーブル PREROUTING で全て取得できるか定かでは無いし、BRIDGE_EBT_ULOG は OBSOLETE だし。&lt;br /&gt;&lt;br /&gt;なので素の fprobe を二つ動かして uptime 見たらロードアベレージが、ほぼ 2。2〜 3割落としてしまったいるようなので、どうしようか...考えたのが &lt;ul&gt;&lt;li&gt;&lt;a href="http://freshmeat.net/projects/nprobe/"&gt;nprobe (本家じゃない)&lt;/a&gt;ソースがどこにあるかわからなかった。ぷらっとホームさんでも配布しているけど未テスト&lt;/li&gt;&lt;li&gt;カーネルコンパイルして、やっぱり ebtables を使う&lt;/li&gt;&lt;li&gt;PACKET_MMAP を使った libpcap を入れて fprobe で再挑戦&lt;/li&gt;&lt;/ul&gt;いずれにしても面倒で、クロスコンパイルの環境が必要....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-469008591616624897?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/469008591616624897/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=469008591616624897' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/469008591616624897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/469008591616624897'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/netflow-exporter.html' title='netflow の exporter'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3238274168631975897</id><published>2008-03-31T23:12:00.003+09:00</published><updated>2008-03-31T23:23:47.199+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>debian でクロスコンパイル 2</title><content type='html'>続きと言うか、ちょっと jot。&lt;a href="http://psas.pdx.edu/DebianCrossCompilerHowto/#index8h3"&gt;Convert library packages&lt;/a&gt; で、こんなんならない?&lt;blockquote&gt;&lt;pre&gt;# dpkg-cross -a mipsel -b libc6_2.7-6_mipsel.deb &lt;br /&gt;Building libc6-mipsel-cross_2.7-6_all.deb&lt;br /&gt;dpkg-cross: building package with dpkg-deb -b failed.&lt;br /&gt;dpkg-cross: conversion of libc6_2.7-6_mipsel.deb failed.&lt;br /&gt;# dpkg-cross --verbose -a mipsel -b libc6_2.7-6_mipsel.deb &lt;br /&gt;Excluding: gcc binutils gpm cpp debianutils xfree86-common libpam-runtime xlibs-data debconf tzdata&lt;br /&gt;Trying to build: libc6_2.7-6_mipsel.deb&lt;br /&gt;Going to convert libc6_2.7-6_mipsel.deb&lt;br /&gt;Extracting libc6_2.7-6_mipsel.deb&lt;br /&gt;Extracting information from control file&lt;br /&gt;Creating destination package tree&lt;br /&gt;Creating /usr/share/doc/libc6-mipsel-cross/README&lt;br /&gt;Installing shlibs file&lt;br /&gt;Creating control file&lt;br /&gt;Creating md5sums file&lt;br /&gt;dpkg-deb: building package `libc6-mipsel-cross' in `./libc6-mipsel-cross_2.7-6_all.deb'.&lt;br /&gt;dpkg-deb: control directory has bad permissions 2755 (must be &gt;=0755 and &lt;=0775)&lt;br /&gt;dpkg-cross: building package with dpkg-deb -b failed.&lt;br /&gt;dpkg-cross: conversion of libc6_2.7-6_mipsel.deb failed.&lt;/pre&gt;&lt;/blockquote&gt;# ルートで作業するなっ....て....&lt;br /&gt;&lt;br /&gt;で悩むことしきり。結局 2755 ってパーミッションどこかで見た覚えが。&lt;file&gt;dpkg-deb&lt;/file&gt; を string してみて、適当に。例えばカレントに tmp ってディレクトリ作った後に&lt;blockquote&gt;&lt;pre&gt;# TMPDIR=tmp dpkg-cross -a mipsel -b libc6_2.7-6_mipsel.deb &lt;br /&gt;sh: tmp/dpkg-cross.0MFJb4nZ/dst/DEBIAN/md5sums: No such file or directory&lt;br /&gt;Building libc6-mipsel-cross_2.7-6_all.deb&lt;/pre&gt;&lt;/blockquote&gt;/tmp を g+s にするのって流行ではないのかしら?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3238274168631975897?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3238274168631975897/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3238274168631975897' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3238274168631975897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3238274168631975897'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/debian-2.html' title='debian でクロスコンパイル 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1344981726007296870</id><published>2008-03-28T00:12:00.003+09:00</published><updated>2008-03-28T00:22:57.098+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>debian でクロスコンパイル</title><content type='html'>ってそのままだけど &lt;a href="http://psas.pdx.edu/DebianCrossCompilerHowto/"&gt;DebianCrossCompilerHowto&lt;/a&gt;。以前は toolchain-source だっけ? 覚えておくのは&lt;ul&gt;&lt;li&gt;dpkg-cross を入れておくこと&lt;/li&gt;&lt;li&gt;binutils を TARGET=... debian/rules binary-cross でビルド&lt;/li&gt;&lt;/ul&gt;その後は眺めたままだけど...amd64 で i386 を作る場合の TARGET は i486-linux-gnu。で i486-linux-gnu-gcc は&lt;blockquote&gt;&lt;pre&gt;$ cat /usr/bin/i486-linux-gnu-gcc &lt;br /&gt;#!/bin/sh&lt;br /&gt;gcc -m32 $@&lt;/pre&gt;&lt;/blockquote&gt; で VMWare 用のカーネルが出来た。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1344981726007296870?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1344981726007296870/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1344981726007296870' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1344981726007296870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1344981726007296870'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/debian.html' title='debian でクロスコンパイル'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1757231065106060495</id><published>2008-03-27T23:04:00.002+09:00</published><updated>2008-03-28T00:03:08.710+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>lguest on 2.6.25-rc</title><content type='html'>どこで見付たか忘れちゃったけど、2.6.25-rc7-git2 には未。&lt;blockquote&gt;&lt;pre&gt;--- old/arch/x86/kernel/tsc_32.c.old    2008-03-27 23:28:27.000000000 +0900&lt;br /&gt;+++ new/arch/x86/kernel/tsc_32.c        2008-03-27 23:29:51.000000000 +0900&lt;br /&gt;@@ -394,13 +394,15 @@&lt;br /&gt;        int cpu;&lt;br /&gt; &lt;br /&gt;        if (!cpu_has_tsc)&lt;br /&gt;-               goto out_no_tsc;&lt;br /&gt;+               return;&lt;br /&gt; &lt;br /&gt;        cpu_khz = calculate_cpu_khz();&lt;br /&gt;        tsc_khz = cpu_khz;&lt;br /&gt; &lt;br /&gt;-       if (!cpu_khz)&lt;br /&gt;-               goto out_no_tsc;&lt;br /&gt;+       if (!cpu_khz) {&lt;br /&gt;+               mark_tsc_unstable("could not calculate TSC khz");&lt;br /&gt;+               return;&lt;br /&gt;+       }&lt;br /&gt; &lt;br /&gt;        printk("Detected %lu.%03lu MHz processor.\n",&lt;br /&gt;                                (unsigned long)cpu_khz / 1000,&lt;br /&gt;@@ -433,9 +435,4 @@&lt;br /&gt;                tsc_enabled = 1;&lt;br /&gt; &lt;br /&gt;        clocksource_register(&amp;clocksource_tsc);&lt;br /&gt;-&lt;br /&gt;-       return;&lt;br /&gt;-&lt;br /&gt;-out_no_tsc:&lt;br /&gt;-       setup_clear_cpu_cap(X86_FEATURE_TSC);&lt;br /&gt; }&lt;/pre&gt;&lt;/blockquote&gt;ぷらっとホームさんの SSD/Linux を lguest で動かすにあたってスワップを加えようかと思ったところ /dev/vdb とか出来ない。udev とか動いていないから?&lt;br /&gt;&lt;br /&gt;mknod するにもメジャー、マイナ番号わからない。と悩んでいたら、&lt;a href="http://ozlabs.org/pipermail/lguest/2008-March/001040.html"&gt;こんな方法&lt;/a&gt;もあった。いや、最初は &lt;code&gt;CONFIG_VIRTIO_BLK=m&lt;/code&gt; とかしちゃって調べていたんだけど。&lt;file&gt;/proc/partitions&lt;/file&gt; ですか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1757231065106060495?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1757231065106060495/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1757231065106060495' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1757231065106060495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1757231065106060495'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/lguest-on-2625-rc.html' title='lguest on 2.6.25-rc'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2756279320074821733</id><published>2008-03-25T00:25:00.002+09:00</published><updated>2008-03-25T00:33:47.586+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>VMWare Workstation on 2.6.25-rc</title><content type='html'>やっぱり web から。any-any-update の 116 展開した後は、&lt;a href="http://communities.vmware.com/message/863066"&gt;この辺り&lt;/a&gt;から。書かれている通り vmblock-only が.... &lt;code&gt;iget()&lt;/code&gt; と&lt;code&gt;read_inode()&lt;/code&gt; が良くわからんので通らないけど (私は) 実害なし。でパッチ&lt;blockquote&gt;&lt;pre&gt;diff -ubBr old/vmmon-only/common/task.c new/vmmon-only/common/task.c&lt;br /&gt;--- old/vmmon-only/common/task.c        2007-11-28 19:58:17.000000000 +0900&lt;br /&gt;+++ new/vmmon-only/common/task.c        2008-03-24 22:39:29.000000000 +0900&lt;br /&gt;@@ -25,7 +25,7 @@&lt;br /&gt;  * we do not need asm/page.h anymore in this file - not surprising, this&lt;br /&gt;  * is common file, yes?  And Windows do not have page.h, do they?&lt;br /&gt;  */&lt;br /&gt;-#define _I386_PAGE_H&lt;br /&gt;+#define _ASM_X86_PAGE_H&lt;br /&gt; /* On Linux, must come before any inclusion of asm/page.h --hpreg */&lt;br /&gt; #include "hostKernel.h"&lt;br /&gt; #ifdef linux&lt;br /&gt;diff -ubBr old/vmnet-only/filter.c new/vmnet-only/filter.c&lt;br /&gt;--- old/vmnet-only/filter.c     2007-11-28 19:11:12.000000000 +0900&lt;br /&gt;+++ new/vmnet-only/filter.c     2008-03-24 22:41:08.000000000 +0900&lt;br /&gt;@@ -12,6 +12,11 @@&lt;br /&gt; #include &lt;linux/ip.h&gt;&lt;br /&gt; #include "compat_skbuff.h"&lt;br /&gt; #include &lt;linux/netdevice.h&gt;&lt;br /&gt;+&lt;br /&gt;+#define NF_IP_LOCAL_OUT NF_INET_LOCAL_OUT&lt;br /&gt;+#define NF_IP_LOCAL_IN NF_INET_LOCAL_IN&lt;br /&gt;+#define NF_IP_POST_ROUTING NF_INET_POST_ROUTING&lt;br /&gt;+&lt;br /&gt; /*&lt;br /&gt;  * All this makes sense only if NETFILTER support is configured in our kernel.&lt;br /&gt;  */&lt;br /&gt;diff -ubBr old/vmnet-only/vmnetInt.h new/vmnet-only/vmnetInt.h&lt;br /&gt;--- old/vmnet-only/vmnetInt.h   2007-11-28 19:25:06.000000000 +0900&lt;br /&gt;+++ new/vmnet-only/vmnetInt.h   2008-03-16 21:05:28.000000000 +0900&lt;br /&gt;@@ -78,8 +78,10 @@&lt;br /&gt;  */&lt;br /&gt; #if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2, 5, 65)&lt;br /&gt; #   define SET_SK_DEAD(_sk, _val) (_sk)-&gt;dead = (_val)&lt;br /&gt;-#else&lt;br /&gt;+#elif LINUX_VERSION_CODE &lt; KERNEL_VERSION(2, 6, 25)&lt;br /&gt; #   define SET_SK_DEAD(_sk, _val) sock_valbool_flag(_sk, SOCK_DEAD, _val)&lt;br /&gt;+#else&lt;br /&gt;+#   define SET_SK_DEAD(_sk, _val) sock_set_flag(_sk, SOCK_DEAD)&lt;br /&gt; #endif&lt;/pre&gt;&lt;/blockquote&gt;あれ? &lt;file&gt;vmnetInt.h&lt;/file&gt; はいじった覚えが無いけど....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2756279320074821733?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2756279320074821733/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2756279320074821733' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2756279320074821733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2756279320074821733'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/vmware-workstation-on-2625-rc.html' title='VMWare Workstation on 2.6.25-rc'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-718236192835143451</id><published>2008-03-04T21:43:00.003+09:00</published><updated>2008-03-04T22:06:36.444+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Etch</title><content type='html'>フランス語? 全くわからないのですが、面白いものでとりあえず build だけはできました。debian etch の freeraduis ですが ssl は別となっているので、ちょっと試そうか。の都度似たような探しものばかりしていた。が、&lt;a href="http://www.queret.net/blog/index.php/2007/04/04/72-freeradius-avec-support-eap-tls-eap-ttls-eap-peap-sur-linux-debian-etch"&gt;こちらのサイト&lt;/a&gt; が良いさげでした。ありがとうございます。毎度のことながらの勉強不足で、コマンドそのまま。ですが...でパッチを jot。&lt;blockquote&gt;&lt;pre&gt;diff -ubBrN freeradius-1.1.3/debian/control freeradius-1.1.3-ssl/debian/control&lt;br /&gt;--- freeradius-1.1.3/debian/control     2008-03-04 21:36:44.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/control 2008-03-04 21:31:58.000000000 +0900&lt;br /&gt;@@ -1,6 +1,6 @@&lt;br /&gt; Source: freeradius&lt;br /&gt;-Build-Depends: debhelper (&gt;= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (&gt;= 2), libperl-dev, libtool, dpkg-dev (&gt;= 1.13.19)&lt;br /&gt;-Build-Conflicts: libssl-dev&lt;br /&gt;+Build-Depends: debhelper (&gt;= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (&gt;= 2), libperl-dev, libtool, dpkg-dev (&gt;= 1.13.19), libssl-dev&lt;br /&gt;+Build-Conflicts:&lt;br /&gt; Section: net&lt;br /&gt; Priority: optional&lt;br /&gt; Maintainer: Stephen Gran &lt;sgran@debian.org&gt;&lt;br /&gt;@@ -66,3 +66,19 @@&lt;br /&gt; Description: set of PHP scripts for administering a FreeRADIUS server&lt;br /&gt;  These scripts provide a web-based interface for administering a FreeRADIUS&lt;br /&gt;  server which stores authentication information in either SQL or LDAP.&lt;br /&gt;+&lt;br /&gt;+Package: freeradius-eaptls&lt;br /&gt;+Architecture: any&lt;br /&gt;+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}&lt;br /&gt;+Description: eap-tls module for FreeRADIUS server&lt;br /&gt;+ Debian will not provide a binary version of the rlm_eap_tls.so library. This&lt;br /&gt;+ module is required if you want to use EAP/TLS authentication, commonly used&lt;br /&gt;+ for WiFi access points&lt;br /&gt;+&lt;br /&gt;+Package: freeradius-eappeap&lt;br /&gt;+Architecture: any&lt;br /&gt;+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}&lt;br /&gt;+Description: eap-peap module for FreeRADIUS server&lt;br /&gt;+ Debian will not provide a binary version of the rlm_eap_peap.so library. This&lt;br /&gt;+ module is required if you want to use EAP/PEAP authentication, commonly used&lt;br /&gt;+ for WiFi access points&lt;br /&gt;\ No newline at end of file&lt;br /&gt;diff -ubBrN freeradius-1.1.3/debian/freeradius-eappeap.install freeradius-1.1.3-ssl/debian/freeradius-eappeap.install&lt;br /&gt;--- freeradius-1.1.3/debian/freeradius-eappeap.install  1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/freeradius-eappeap.install      2008-03-04 21:56:40.000000000 +0900&lt;br /&gt;@@ -0,0 +1 @@&lt;br /&gt;+usr/lib/freeradius/rlm_eap_peap*.so&lt;br /&gt;diff -ubBrN freeradius-1.1.3/debian/freeradius-eappeap.postinst freeradius-1.1.3-ssl/debian/freeradius-eappeap.postinst&lt;br /&gt;--- freeradius-1.1.3/debian/freeradius-eappeap.postinst 1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/freeradius-eappeap.postinst     2008-03-04 21:56:15.000000000 +0900&lt;br /&gt;@@ -0,0 +1,21 @@&lt;br /&gt;+#! /bin/sh&lt;br /&gt;+&lt;br /&gt;+set -e&lt;br /&gt;+&lt;br /&gt;+case "$1" in&lt;br /&gt;+ configure)&lt;br /&gt;+       if [ -x "`which invoke-rc.d 2&gt;/dev/null`" ]; then&lt;br /&gt;+         invoke-rc.d freeradius reload&lt;br /&gt;+       else&lt;br /&gt;+         /etc/init.d/freeradius reload&lt;br /&gt;+       fi&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-upgrade)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-remove)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-deconfigure)&lt;br /&gt;+       ;;&lt;br /&gt;+esac&lt;br /&gt;+&lt;br /&gt;+#DEBHELPER#&lt;br /&gt;diff -ubBrN freeradius-1.1.3/debian/freeradius-eaptls.install freeradius-1.1.3-ssl/debian/freeradius-eaptls.install&lt;br /&gt;--- freeradius-1.1.3/debian/freeradius-eaptls.install   1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/freeradius-eaptls.install       2008-03-04 21:34:18.000000000 +0900&lt;br /&gt;@@ -0,0 +1 @@&lt;br /&gt;+usr/lib/freeradius/rlm_eap_tls*.so&lt;br /&gt;diff -ubBrN freeradius-1.1.3/debian/freeradius-eaptls.postinst freeradius-1.1.3-ssl/debian/freeradius-eaptls.postinst&lt;br /&gt;--- freeradius-1.1.3/debian/freeradius-eaptls.postinst  1970-01-01 09:00:00.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/freeradius-eaptls.postinst      2008-03-04 21:34:48.000000000 +0900&lt;br /&gt;@@ -0,0 +1,21 @@&lt;br /&gt;+#! /bin/sh&lt;br /&gt;+&lt;br /&gt;+set -e&lt;br /&gt;+&lt;br /&gt;+case "$1" in&lt;br /&gt;+ configure)&lt;br /&gt;+       if [ -x "`which invoke-rc.d 2&gt;/dev/null`" ]; then&lt;br /&gt;+         invoke-rc.d freeradius restart&lt;br /&gt;+       else&lt;br /&gt;+         /etc/init.d/freeradius restart&lt;br /&gt;+       fi&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-upgrade)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-remove)&lt;br /&gt;+       ;;&lt;br /&gt;+ abort-deconfigure)&lt;br /&gt;+       ;;&lt;br /&gt;+esac&lt;br /&gt;+&lt;br /&gt;+#DEBHELPER#&lt;br /&gt;diff -ubBrN freeradius-1.1.3/debian/rules freeradius-1.1.3-ssl/debian/rules&lt;br /&gt;--- freeradius-1.1.3/debian/rules       2008-03-04 21:36:44.000000000 +0900&lt;br /&gt;+++ freeradius-1.1.3-ssl/debian/rules   2008-03-04 21:33:21.000000000 +0900&lt;br /&gt;@@ -23,8 +23,10 @@&lt;br /&gt; # You will also need to add a Build-Depends on libssl-dev and libpq-dev&lt;br /&gt; # and remove the Build-Conflicts on libssl-dev&lt;br /&gt; # Finally you need to cat debian/control.postgresql &gt;&gt; debian/control&lt;br /&gt;-buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp-modulelist=krb5 ldap sql_mysql sql_iodbc&lt;br /&gt;+# buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp&lt;br /&gt;+# modulelist=krb5 ldap sql_mysql sql_iodbc&lt;br /&gt;+buildssl=--without-rlm_otp --without-rlm_sql_postgresql --without-snmp&lt;br /&gt;+modulelist=krb5 ldap sql_mysql sql_iodbc eap_peap eap_tls&lt;br /&gt; #buildssl=--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` --with-rlm_sql_postgresql_include_dir=`pg_config --includedir`&lt;br /&gt; #modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;で &lt;file&gt;freeradius-eaptls_1.1.3-3_i386.deb &lt;/file&gt; と &lt;file&gt;freeradius-eappeap_1.1.3-3_i386.deb&lt;/file&gt; なるものが出来上がり。これらだけ。であれば、元サイトの下の方にアリ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-718236192835143451?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/718236192835143451/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=718236192835143451' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/718236192835143451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/718236192835143451'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2008/03/freeradius-eaptls-eapttls-eappeap-linux.html' title='FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Etch'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7926713193081319585</id><published>2007-11-19T23:25:00.000+09:00</published><updated>2007-11-19T23:42:09.549+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>XORP の ospf6</title><content type='html'>制約っぽいのですが XORP 1.4 の &lt;a href="http://www.xorp.org/releases/current/docs/RELEASE_NOTES"&gt;release notes&lt;/a&gt; に &lt;blockquote&gt;- The OSPFv3 configuration allows multiple instances to be configured however only one instance will be created. Configuring multiple OSPFv3 instances is guaranteed to cause problems.&lt;/blockquote&gt;なる記述あり。で &lt;file&gt;config.boot&lt;/file&gt; に &lt;blockquote&gt;&lt;pre&gt;potocol ospf6 10&lt;/pre&gt;&lt;/blockquote&gt; とすると? しても? instance ID を 0 として Hello を投げ、受け取った側は instance ID が 10 じゃない。といったログ....消してしまった.... が残る。なので &lt;blockquote&gt;&lt;pre&gt;protocol ospf6 0&lt;/pre&gt;&lt;/blockquote&gt; としたところ、まぁ、動いた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7926713193081319585?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7926713193081319585/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7926713193081319585' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7926713193081319585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7926713193081319585'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/11/xorp-ospf6.html' title='XORP の ospf6'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7701526014151928818</id><published>2007-11-07T00:14:00.000+09:00</published><updated>2007-11-07T00:25:45.804+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>tcpdump で 802.1q</title><content type='html'>vconfig で vlan 作ったけど tcpdump で見えない。って話、結構ホットな内容かも。&lt;a href="http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg225341.html"&gt;expected behavior of PF_PACKET on NETIF_F_HW_VLAN_RX device?&lt;/a&gt; を例のごとく一瞥すると NETIF_F_HW_VLAN_RX feature が on となっているデバイスの場合 tcpdump で見る時には vlan ヘッダが無い? とか。&lt;file&gt;include/linux/netdevice.h&lt;/file&gt;にて &lt;blockquote&gt;&lt;pre&gt;#define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */&lt;/pre&gt;&lt;/blockquote&gt; 現在利用しているデバイスの feature は &lt;file&gt;cat /sys/class/net/eth#/features&lt;/file&gt; あたりを見ると 0x113a9 と 0x180。これかなぁ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7701526014151928818?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7701526014151928818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7701526014151928818' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7701526014151928818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7701526014151928818'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/11/tcpdump-8021q.html' title='tcpdump で 802.1q'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6447051584430052406</id><published>2007-11-06T22:20:00.000+09:00</published><updated>2007-11-06T23:23:33.349+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>using lguest - 3</title><content type='html'>先日のネットワーク絵の設定。debian パッケージでは bridge-utils と vlan あたり。vlan パッケージ入れて vlan-interfaces (5) を見ると &lt;file&gt;/etc/network/interfaces&lt;/file&gt; で vlan の設定ができるらしい。そうそう先日の絵で eth1.1 なんて書いていたが &lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;/opt/lguest# vconfig add eth1 1&lt;br /&gt;Added VLAN with VID == 1 to IF -:eth1:-&lt;br /&gt;WARNING:  VLAN 1 does not work with many switches,&lt;br /&gt;consider another number if you have problems.&lt;/pre&gt;&lt;/blockquote&gt; なんて言われるので eth1.10 と eth1.11 にしてしまった。肝心の &lt;file&gt;/etc/network/interfaces&lt;/file&gt; は以下の通り &lt;blockquote&gt;&lt;pre&gt;auto eth1.10&lt;br /&gt;        iface eth1.10 inet static&lt;br /&gt;        # vlan-raw-device eth1&lt;br /&gt;        address 172.27.129.1&lt;br /&gt;        broadcast 172.27.129.255&lt;br /&gt;        netmask 255.255.255.0&lt;br /&gt;iface eth1.10 inet6 static&lt;br /&gt;        address fec0:0:0:1b81:201:8eff:feb3:84d8&lt;br /&gt;        netmask 64&lt;br /&gt;&lt;br /&gt;auto br0&lt;br /&gt;iface br0 inet static&lt;br /&gt;        pre-up brctl addbr $IFACE&lt;br /&gt;        address 192.168.0.3&lt;br /&gt;        netmask 255.255.255.0&lt;br /&gt;        post-down brctl delbr $IFACE&lt;br /&gt;&lt;br /&gt;auto br1&lt;br /&gt;iface br1 inet manual&lt;br /&gt;        pre-up brctl addbr $IFACE&lt;br /&gt;        post-up ip link set $IFACE up&lt;br /&gt;        pre-down ip link set $IFACE down&lt;br /&gt;        post-down brctl delbr $IFACE&lt;br /&gt;auto br2&lt;br /&gt;iface br2 inet manual&lt;br /&gt;        pre-up brctl addbr $IFACE&lt;br /&gt;        post-up ip link set $IFACE up&lt;br /&gt;        pre-down ip link set $IFACE down&lt;br /&gt;        post-down brctl delbr $IFACE&lt;br /&gt;&lt;br /&gt;auto eth1.11&lt;br /&gt;iface eth1.11 inet manual&lt;br /&gt;        post-up brctl addif br1 $IFACE&lt;br /&gt;        post-up ip link set $IFACE up&lt;br /&gt;        pre-down ip link set $IFACE down&lt;br /&gt;        pre-down brctl delif br1 $IFACE&lt;/pre&gt;&lt;/blockquote&gt;まぁ IPv6 はご愛嬌。これで lguest を &lt;blockquote&gt;&lt;pre&gt;./lguest 64m /usr/src/stable/vmlinux --block=FW1.img --block=FW1.swap root=/dev/lgba \&lt;br /&gt;--tunnet=bridge:br0 --tunnet=bridge:br1 --tunnet=bridge:br2&lt;/pre&gt;&lt;/blockquote&gt; と起動するとゲスト FW1 FW2 では eth0 eth1 eth2 が見える。こちらも以前書いたが、これらに対応するホスト側は (ユーザスペースコマンドの) lguest で tap# を作って、それぞれのブリッジインターフェースに addif してくれる。 &lt;br /&gt;&lt;br /&gt;通信できることはできるのだけど、とっても気になるのが eth1 での 802.1q。ホント喋っているのか tcpdump で確認できず。もう少々要確認ってトコ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6447051584430052406?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6447051584430052406/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6447051584430052406' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6447051584430052406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6447051584430052406'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/11/using-lguest-3.html' title='using lguest - 3'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6966546810197566094</id><published>2007-11-01T23:33:00.001+09:00</published><updated>2007-11-01T23:44:34.127+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>ネットワーク絵</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_sN6MLPDlqsg/RynlJTD95bI/AAAAAAAAAAU/Rbh5xfy7eRY/s1600-h/pict.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_sN6MLPDlqsg/RynlJTD95bI/AAAAAAAAAAU/Rbh5xfy7eRY/s320/pict.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5127881598636516786" /&gt;&lt;/a&gt;&lt;br /&gt;目指すはっ。と構えるほど大それたものではないが、絵としては &lt;a href="http://people.netfilter.org/pablo/conntrackd/testcase.html"&gt; この辺り &lt;/a&gt; に近い構成を host と guest で作成して色々試そうかと。大きな四角がホストで中の小さな二つの四角がゲスト。赤太字がインターフェースで○はアドレスを持つ。実際の設定は....後日。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6966546810197566094?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6966546810197566094/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6966546810197566094' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6966546810197566094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6966546810197566094'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/11/blog-post.html' title='ネットワーク絵'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_sN6MLPDlqsg/RynlJTD95bI/AAAAAAAAAAU/Rbh5xfy7eRY/s72-c/pict.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1246588272822454811</id><published>2007-10-31T22:12:00.000+09:00</published><updated>2007-10-31T22:20:30.564+09:00</updated><title type='text'>....</title><content type='html'>会ったことも無く当然私などを知っているはずは無いが、おこがましくも尊敬する &lt;a href="http://slashdot.jp/articles/07/10/31/0311203.shtml"&gt;itojun さんが亡くなられた&lt;/a&gt;とのおはなし。自身の語彙不足を今更ながら恨めしく....心からのご冥福をお祈りします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1246588272822454811?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1246588272822454811/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1246588272822454811' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1246588272822454811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1246588272822454811'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/blog-post.html' title='....'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-1593438571546749986</id><published>2007-10-30T22:42:00.000+09:00</published><updated>2007-10-30T23:33:03.270+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>using lguest - 2</title><content type='html'>ちょっと使えるようになるまで、また jot。&lt;blockquote&gt;&lt;pre&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;mount -t ext3 -o loop FW1.img tmp&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;chroot tmp&lt;/span&gt;&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;apt-get install udev iproute less&lt;/span&gt;&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree... Done&lt;br /&gt;....&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;cat &gt;&gt; /etc/fstab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;proc    /proc   proc    defaults        0       0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/dev/lgba       /       ext3    defaults,errors=remount-ro      0       1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/dev/lgbb       none    swap    sw      0&lt;/span&gt;       0&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;cat &amp;gt; /etc/resolv.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;nameserver 192.168.0.3&lt;/span&gt;&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;cat &gt;&gt; /etc/network/interfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;auto lo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;iface lo inet loopback&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;auto eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;iface eth0 inet static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        address 192.168.0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        netmask 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        gateway 192.168.0.3&lt;/span&gt;&lt;br /&gt;/#&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;cat &amp;gt; /etc/hostname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;fw1&lt;/span&gt;&lt;br /&gt;/# &lt;span style="font-weight: bold;"&gt;exit&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;dd if=/dev/zero of=FW1.swap bs=1 count=1 seek=$((1024 * 1024 * 128 - 1))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1+0 records in&lt;/span&gt;&lt;br /&gt;1+0 records out1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;1 byte (1 B) copied, 0.000128516 seconds, 7.8 kB/s&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;mkswap FW1.swap&lt;/span&gt;&lt;br /&gt;Setting up swapspace version 1, size = 134213 kB&lt;br /&gt;no label, UUID=69713635-6d63-4cd9-b0da-96d1eb7fe561&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;brctl addbr br0&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;ip addr add 192.168.0.3/24 dev br0&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;ip link set br0 up&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;umount tmp&lt;/span&gt;&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;./lguest 64m /usr/src/stable/vmlinux --block=FW1.img --block=FW1.swap root=/dev/lgba --tunnet=bridge:br0&lt;/span&gt;&lt;br /&gt;....&lt;br /&gt;Debian GNU/Linux lenny/sid fw1 /dev/hvc0&lt;br /&gt;&lt;br /&gt;fw1 login: &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;&lt;br /&gt;Last login: Tue Oct 30 14:08:48 UTC 2007 on hvc0&lt;br /&gt;Linux fw1 2.6.23.1 #1 Wed Oct 17 13:58:03 JST 2007 i686&lt;br /&gt;&lt;br /&gt;The programs included with the Debian GNU/Linux system are free software;&lt;br /&gt;the exact distribution terms for each program are described in the&lt;br /&gt;individual files in /usr/share/doc/*/copyright.&lt;br /&gt;&lt;br /&gt;Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent&lt;br /&gt;permitted by applicable law.&lt;br /&gt;fw1:~#&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;ping -c3 192.168.0.3&lt;/span&gt;&lt;br /&gt;PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.&lt;br /&gt;64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=7.64 ms&lt;br /&gt;64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.266 ms&lt;br /&gt;64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.262 ms&lt;br /&gt;&lt;br /&gt;--- 192.168.0.3 ping statistics ---&lt;br /&gt;3 packets transmitted, 3 received, 0% packet loss, time 2003ms&lt;br /&gt;rtt min/avg/max/mdev = 0.262/2.724/7.644/3.478 ms&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;mount&lt;/span&gt;&lt;br /&gt;/dev/lgba on / type ext3 (rw,errors=remount-ro)&lt;br /&gt;tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)&lt;br /&gt;proc on /proc type proc (rw,noexec,nosuid,nodev)&lt;br /&gt;sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)&lt;br /&gt;procbususb on /proc/bus/usb type usbfs (rw)&lt;br /&gt;udev on /dev type tmpfs (rw,mode=0755)&lt;br /&gt;tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)&lt;br /&gt;devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;swapon -s&lt;/span&gt;&lt;br /&gt;Filename                                Type            Size    Used    Priority&lt;br /&gt;/dev/lgbb                               partition       131064  0       -1&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;apt-get update&lt;/span&gt;&lt;br /&gt;Get:1 http://ring.asahi-net.or.jp lenny Release.gpg [189B]&lt;br /&gt;Hit http://ring.asahi-net.or.jp lenny Release&lt;br /&gt;Get:2 http://ring.asahi-net.or.jp lenny/main Packages/DiffIndex [2038B]&lt;br /&gt;Fetched 2227B in 2s (989B/s)&lt;br /&gt;Reading package lists... Done&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;apt-get dist-upgrade&lt;/span&gt;&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree&lt;br /&gt;Reading state information... Done&lt;br /&gt;Calculating upgrade... Done&lt;br /&gt;0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;apt-get install ssh deborphan&lt;/span&gt;&lt;br /&gt;....&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;useradd -d /home/chamaken -G users chamaken -m&lt;/span&gt;&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;passwd chamaken&lt;/span&gt;&lt;br /&gt;Enter new UNIX password:&lt;br /&gt;Retype new UNIX password:&lt;br /&gt;passwd: password updated successfully&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;df -h&lt;/span&gt;&lt;br /&gt;Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/lgba             2.0G  266M  1.7G  14% /&lt;br /&gt;tmpfs                  30M     0   30M   0% /lib/init/rw&lt;br /&gt;udev                   10M   20K   10M   1% /dev&lt;br /&gt;tmpfs                  30M  4.0K   30M   1% /dev/shm&lt;br /&gt;fw1:~# &lt;span style="font-weight: bold;"&gt;shutdown -h now&lt;/span&gt;&lt;br /&gt;Saving the system clock..&lt;br /&gt;hwclock[1215] general protection eip:804aacb esp:bff53fc4 error:0&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/etc/rc0.d/K25hwclock.sh: line 48:  1215 Segmentation fault      /sbin/hwclock --systohc $GMT $HWCLOCKPARS $BADYEAR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;....&lt;/span&gt;&lt;br /&gt;lguest: CRASH: Power down&lt;/pre&gt;&lt;/blockquote&gt;と、まぁまぁ使えるようになりましたっと。``さて'' という字は尻へんに長いと書く。と言っているおじさんがいました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-1593438571546749986?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/1593438571546749986/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=1593438571546749986' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1593438571546749986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/1593438571546749986'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/using-lguest-2.html' title='using lguest - 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-8442381165609531693</id><published>2007-10-22T22:02:00.000+09:00</published><updated>2007-10-22T22:16:01.243+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>rtl8187 動作せず...</title><content type='html'>やっぱりダメらしい。&lt;blockquote&gt;&lt;pre&gt;~# cat /sys/bus/usb/devices/2-2/product&lt;br /&gt;NETGEAR WG111v3&lt;/pre&gt;&lt;/blockquote&gt; Web 探してみると v2 で &lt;code&gt;asic_rev = 1&lt;/code&gt;。更に &lt;code&gt;rf_init = rtl8225z2_rf_init&lt;/code&gt; っぽかったのでベタで試してみたところ、ウンとは言うがスンとは言わず。といった感じ。 zd1211rw も bcm43xx も mac802.11 じゃないけど、この辺り使うしか無いのかしら....&lt;br /&gt;&lt;br /&gt;madwifi も方向転換で HAL 使わなくなって、以前のものから仕切り直しっぽい。そうそう svn のリポジトリ が再構成 &lt;a href="http://madwifi.org/wiki/news/20071004/repository-restructured"&gt;Repository restructured ¶&lt;/a&gt; だそうだ。stable は &lt;code&gt;svn switch http://svn.madwifi.org/madwifi/trunk&lt;/code&gt; だそうだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-8442381165609531693?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/8442381165609531693/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=8442381165609531693' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8442381165609531693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/8442381165609531693'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/rtl8187_22.html' title='rtl8187 動作せず...'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7529098552406336914</id><published>2007-10-22T21:07:00.000+09:00</published><updated>2007-10-30T23:34:20.998+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>using lguest - 1</title><content type='html'>とりあえずの起動までを、ちょっと jot。&lt;blockquote&gt;&lt;pre&gt;/opt/lguest# &lt;b&gt;dd if=/dev/zero of=FW1.img bs=1 count=1 seek=$((1024 * 1024 * 1024 * 2 - 1))&lt;/b&gt;&lt;br /&gt;1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;1 byte (1 B) copied, 0.000126002 seconds, 7.9 kB/s&lt;br /&gt;/opt/lguest# &lt;b&gt;ls -l&lt;/b&gt;&lt;br /&gt;total 16&lt;br /&gt;-rw-r--r-- 1 root root 2147483648 2007-10-22 20:28 FW1.img&lt;br /&gt;/opt/lguest# &lt;b&gt;mkfs.ext3 FW1.img&lt;/b&gt;&lt;br /&gt;mke2fs 1.40-WIP (14-Nov-2006)&lt;br /&gt;FW1.img is not a block special device.&lt;br /&gt;Proceed anyway? (y,n) &lt;b&gt;y&lt;/b&gt;&lt;br /&gt;Filesystem label=&lt;br /&gt;OS type: Linux&lt;br /&gt;....snip....&lt;br /&gt;This filesystem will be automatically checked every 32 mounts or&lt;br /&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;br /&gt;/opt/lguest# &lt;b&gt;mkdir tmp&lt;/b&gt;&lt;br /&gt;/opt/lguest# &lt;b&gt;mount -t ext3 -o loop FW1.img tmp&lt;/b&gt;&lt;br /&gt;/opt/lguest# &lt;b&gt;debootstrap --arch i386 lenny tmp http://ring.asahi-net.or.jp/archives/linux/debian/debian&lt;/b&gt;&lt;br /&gt;I: Retrieving Release&lt;br /&gt;....snip....&lt;br /&gt;I: Base system installed successfully.&lt;br /&gt;/opt/lguest# &lt;span style="font-weight: bold;"&gt;chroot tmp&lt;/span&gt;&lt;br /&gt;/# &lt;b&gt;cp /etc/inittab oldtab&lt;/b&gt;&lt;br /&gt;/# &lt;b&gt;vi /etc/inittab&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;/# &lt;b&gt;diff -ubB oldtab /etc/inittab&lt;/b&gt;&lt;br /&gt;--- oldtab      2007-10-22 11:54:48.000000000 +0000&lt;br /&gt;+++ /etc/inittab        2007-10-22 11:54:12.000000000 +0000&lt;br /&gt;@@ -51,12 +51,12 @@&lt;br /&gt;# Note that on most Debian systems tty7 is used by the X Window System,&lt;br /&gt;# so if you want to add more getty's go ahead but skip tty7 if you run X.&lt;br /&gt;#&lt;br /&gt;-1:2345:respawn:/sbin/getty 38400 tty1&lt;br /&gt;-2:23:respawn:/sbin/getty 38400 tty2&lt;br /&gt;-3:23:respawn:/sbin/getty 38400 tty3&lt;br /&gt;-4:23:respawn:/sbin/getty 38400 tty4&lt;br /&gt;-5:23:respawn:/sbin/getty 38400 tty5&lt;br /&gt;-6:23:respawn:/sbin/getty 38400 tty6&lt;br /&gt;+1:2345:respawn:/sbin/getty 38400 /dev/hvc0&lt;br /&gt;+#2:23:respawn:/sbin/getty 38400 tty2&lt;br /&gt;+#3:23:respawn:/sbin/getty 38400 tty3&lt;br /&gt;+#4:23:respawn:/sbin/getty 38400 tty4&lt;br /&gt;+#5:23:respawn:/sbin/getty 38400 tty5&lt;br /&gt;+#6:23:respawn:/sbin/getty 38400 tty6&lt;br /&gt;&lt;br /&gt;# Example how to put a getty on a serial line (for a terminal)&lt;br /&gt;#&lt;br /&gt;/# &lt;b&gt;cat &gt;&gt; /etc/securetty&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;# lguest console&lt;br /&gt;hvc0&lt;br /&gt;/# &lt;b&gt;mknod /dev/hvc0 c 229 0&lt;/b&gt;&lt;br /&gt;/# &lt;b&gt;exit&lt;/b&gt;&lt;br /&gt;exit&lt;br /&gt;/opt/lguest# &lt;b&gt;umount tmp&lt;/b&gt;&lt;br /&gt;/opt/lguest# &lt;b&gt;cd /usr/src/stable/Documentation/lguest/&lt;/b&gt;&lt;br /&gt;/usr/src/stable/Documentation/lguest# &lt;b&gt;make&lt;/b&gt;&lt;br /&gt;cc -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -Wl,-T,lguest.lds  -static  lguest.c  -lz -o lguest&lt;br /&gt;/usr/src/stable/Documentation/lguest# &lt;b&gt;cp lguest /opt/lguest/&lt;/b&gt;&lt;br /&gt;/usr/src/stable/Documentation/lguest# &lt;b&gt;cd !$&lt;/b&gt;&lt;br /&gt;cd /opt/lguest/&lt;br /&gt;/opt/lguest# &lt;b&gt;modprobe lg&lt;/b&gt;&lt;br /&gt;/opt/lguest# &lt;b&gt;./lguest 64m /usr/src/stable/vmlinux --block=FW1.img root=/dev/lgba&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;いや、実のところ、途中途中しくじっているけどね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7529098552406336914?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7529098552406336914/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7529098552406336914' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7529098552406336914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7529098552406336914'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/using-lguest-1.html' title='using lguest - 1'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-414392803746154360</id><published>2007-10-15T22:40:00.000+09:00</published><updated>2007-10-15T22:48:43.982+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>The Art of UNIX Programming</title><content type='html'>出版当初に原著を購入したのだが、難かしい英語 --- えぇ勿論私にとって --- だったので、ものの数ページで挫折したのだが.... &lt;a href="http://www.amazon.co.jp/Art-UNIX-Programming-Eric-S-Raymond/dp/4756149480/ref=pd_ys_iyr1/250-4509899-4301018"&gt;The Art of UNIX Programming&lt;/a&gt; おぉ和訳。と早速購入。訳云々は全くわかっていないのだが、原著読める方はもちろん、どうも読んでおくべき本。もう一冊 &lt;a href="http://www.amazon.co.jp/Linux-System-Programming-Robert-Love/dp/0596009585/ref=pd_bbs_sr_1/250-4509899-4301018?ie=UTF8&amp;s=english-books&amp;qid=1192455852&amp;sr=8-1"&gt;Linux System Programming&lt;/a&gt; も購入。Robert Love さん著は以前の &lt;a href="http://www.amazon.co.jp/Linux-Kernel-Development-Developers-Library/dp/0672325128/ref=sr_1_2/250-4509899-4301018?ie=UTF8&amp;s=english-books&amp;qid=1192455974&amp;sr=1-2"&gt;Linux Kernel Development&lt;/a&gt; が大変良くできた内容だった。にしても Programming って、してない気がする。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-414392803746154360?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/414392803746154360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=414392803746154360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/414392803746154360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/414392803746154360'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/art-of-unix-programming.html' title='The Art of UNIX Programming'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4138220647464862897</id><published>2007-10-15T22:24:00.000+09:00</published><updated>2007-10-15T22:35:55.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>swatch</title><content type='html'>仕事で &lt;a href="http://swatch.sourceforge.net/"&gt;swatch&lt;/a&gt; を使ってみた。root 権限のないホストだったので、まぁ適当にホームディレクトリに各種パッケージをインストールして。って感じ。で .swatchrc を書くのだが、適当にスペースで区切られたフィールドを行として扱う正規表現が&lt;blockquote&gt;&lt;pre&gt;percodemy $prefix = "(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+).*";&lt;/pre&gt;&lt;/blockquote&gt; なんてあまりにも....仕組としては .swatchrc から .swatch_script.$$ みたいなスクリプトを作成して、これを実行するようなので、眺めてみると&lt;blockquote&gt;&lt;pre&gt;LOOP: while (defined($_=$File-&gt;read)) {&lt;br /&gt;&lt;br /&gt;    chomp;&lt;br /&gt;    my $S_ = $_;&lt;br /&gt;    @_ = split;&lt;br /&gt;&lt;br /&gt;    ### quote all special shell chars ###&lt;br /&gt;    $S_ =~ s/([;&amp;\(\)\|\^&gt;&lt;\$`'\\])/\\$1/g;&lt;br /&gt;    my @S_ = split(/\s+/, $S_);&lt;br /&gt;    ....&lt;/pre&gt;&lt;/blockquote&gt; 反則かもしれないけど、この &lt;code&gt;@S_&lt;/code&gt; を使うと便利ってただそれだけ。あっ、もう一点。&lt;code&gt;--extra-module&lt;/code&gt;で指定したら、先の swatch_script.$$ でも &lt;code&gt;use lib 'extra-modeule'&lt;/code&gt; してくれると嬉しいカモ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4138220647464862897?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4138220647464862897/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4138220647464862897' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4138220647464862897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4138220647464862897'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/swatch.html' title='swatch'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2537855029808709154</id><published>2007-10-01T20:52:00.000+09:00</published><updated>2007-10-01T21:00:08.918+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>LSRR with nuttcp その 2</title><content type='html'>遅すぎる LSRR 付けた nuttcp だが TSO (tcp segmentation offload) をオフとすると、それなりになった。tcpdump 追いかけると MSS が 1440 の所、何かのタイミングで丁度倍 2880 というサイズのパケットを送出して、もちろんロス。が原因っぽい。ハードウェア絡みなのかカーネルの話なのか不明。ちなみに NIC は x86_64上の&lt;blockquote&gt;&lt;pre&gt;01:03.0 Ethernet controller: Intel Corporation 82541EI Gigabit Ethernet Controller (Copper)&lt;br /&gt;        Subsystem: Intel Corporation PRO/1000 MT Network Connection&lt;br /&gt;        Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18&lt;br /&gt;        Memory at fc9c0000 (32-bit, non-prefetchable) [size=128K]&lt;br /&gt;        Memory at fc9a0000 (32-bit, non-prefetchable) [size=128K]&lt;br /&gt;        I/O ports at 9880 [size=64]&lt;br /&gt;        Expansion ROM at fc980000 [disabled] [size=128K]&lt;br /&gt;        Capabilities: [dc] Power Management version 2&lt;br /&gt;        Capabilities: [e4] PCI-X non-bridge device&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2537855029808709154?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2537855029808709154/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2537855029808709154' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2537855029808709154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2537855029808709154'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/lsrr-with-nuttcp-2.html' title='LSRR with nuttcp その 2'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-223988960422569097</id><published>2007-10-01T20:42:00.000+09:00</published><updated>2007-10-01T20:51:16.921+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>rtl8187 動作せず...</title><content type='html'>iwconfig iwlist でソレナリの表示はされるものの&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;~# ip link set wlan0 up&lt;br /&gt;~# dmesg | tail -n2&lt;br /&gt;phy0: RF Calibration Failed! 0&lt;br /&gt;ADDRCONF(NETDEV_UP): wlan0: link is not ready&lt;br /&gt;&lt;br /&gt;~# ip link ls&lt;br /&gt;....&lt;br /&gt;5: wmaster0: &amp;lt;BROADCAST,MULTICAST,UP,10000&amp;gt; mtu 1500 qdisc ieee80211 qlen 1000&lt;br /&gt;    link/ieee802.11 00:1b:2f:be:42:5c brd ff:ff:ff:ff:ff:ff&lt;br /&gt;6: wlan0: &amp;lt;NO-CARRIER,BROADCAST,MULTICAST,UP&amp;gt; mtu 1500 qdisc pfifo_fast qlen 1000&lt;br /&gt;    link/ether 00:1b:2f:be:42:5c brd ff:ff:ff:ff:ff:ff&lt;/pre&gt;&lt;/blockquote&gt;Monitor モードは可だが、Master モードは INVALID。の前に、デバイスのランプが点灯せず、動作していなさげ。む〜ん....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-223988960422569097?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/223988960422569097/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=223988960422569097' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/223988960422569097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/223988960422569097'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/10/rtl8187.html' title='rtl8187 動作せず...'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-6743868089571501327</id><published>2007-09-19T20:31:00.000+09:00</published><updated>2007-09-19T20:46:29.088+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>rtl8187</title><content type='html'>何となく rc6-mm1 パッチだけあてて make menuconfig してみたところ、zd1211rw の mac80211 ありました。なので、近々? zd1211 でも Master あるいは Monitor mode にできるかも。&lt;br /&gt;&lt;br /&gt;....とか言いつつ mac80211 &amp; USB で何か無いかなぁ。と眺めていたところ rtl8187 なるデバイスが 2.6.23-rc にて使えるとの話。探した探した見付かった。個人輸入代行まで考えていたが 7月? 頃 NetGear の日本語版が発売。物は&lt;blockquote&gt;ネットギア・インターナショナル WG111 USB2.0 無線アダプタ WG111-300JPS&lt;/blockquote&gt; との事で大凡 2,000- 程度。で rtl8187_dev.c の適当なところに &lt;blockquote&gt;&lt;pre&gt;{USB_DEVICE(0x0846, 0x4260)},&lt;/pre&gt;&lt;/blockquote&gt; を加えてあげて、認識した。が、個人的には USB2.0 only はチト辛い。ここから先は未。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-6743868089571501327?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/6743868089571501327/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=6743868089571501327' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6743868089571501327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/6743868089571501327'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/09/rtl8187.html' title='rtl8187'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4504899727092545310</id><published>2007-09-18T23:46:00.000+09:00</published><updated>2007-09-19T00:31:22.348+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>LSRR with nuttcp</title><content type='html'>iperf どうしようか...と考えていたところ &lt;a href="http://www.wcisd.hpc.mil/nuttcp/Nuttcp-HOWTO.html"&gt;nuttcp&lt;/a&gt; なるものを発見。例のごとく読み切れていないのだけど、クライアント側からの trans のみで有効なパッチを適当に作成して測定してみたところ...遅いっ。遅すぎる。なーぜー? 他の環境でも試してみよう。&lt;br /&gt;&lt;br /&gt;あっ &lt;code&gt;/proc/sys/net/ipv4/conf/eth#/accept_source_route&lt;/code&gt; だけではダメで &lt;code&gt;all/accept_source_route&lt;/code&gt; も 1 に。また conntrack してるなら &lt;code&gt;INVALID&lt;/code&gt; も受付けるように。&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;--- nuttcp-5.3.1.c.orig 2007-09-18 21:19:37.000000000 +0900&lt;br /&gt;+++ nuttcp-5.3.1.c 2007-09-18 23:32:05.000000000 +0900&lt;br /&gt;@@ -357,6 +357,16 @@&lt;br /&gt; #include "addrinfo.h"   /* from missing */&lt;br /&gt; #endif&lt;br /&gt; &lt;br /&gt;+/* Source record routing */&lt;br /&gt;+#include &amp;lt;netinet/ip.h&amp;gt;&lt;br /&gt;+#include &amp;lt;sys/queue.h&amp;gt;&lt;br /&gt;+struct entry {&lt;br /&gt;+ char *hname;&lt;br /&gt;+ char strict;&lt;br /&gt;+ TAILQ_ENTRY(entry) entries;&lt;br /&gt;+};&lt;br /&gt;+TAILQ_HEAD(qhead, entry);&lt;br /&gt;+&lt;br /&gt; static struct timeval time0; /* Time at which timing started */&lt;br /&gt; static struct timeval timepk; /* Time at which last packet sent */&lt;br /&gt; static struct timeval timep; /* Previous time - for interval reporting */&lt;br /&gt;@@ -465,6 +475,8 @@&lt;br /&gt; int delay( int us );&lt;br /&gt; int mread( int fd, char *bufp, unsigned n);&lt;br /&gt; char *getoptvalp( char **argv, int index, int reqval, int *skiparg );&lt;br /&gt;+char *alloc_inet_srr(int is_ssrr);&lt;br /&gt;+int add_inet_gate(char *optr, char *hname);&lt;br /&gt; &lt;br /&gt; int vers_major = 5;&lt;br /&gt; int vers_minor = 3;&lt;br /&gt;@@ -508,6 +520,12 @@&lt;br /&gt; int srvrwin=0;&lt;br /&gt; /*  end nick code  */&lt;br /&gt; &lt;br /&gt;+/* source record routing */&lt;br /&gt;+int ngates = 0;&lt;br /&gt;+struct qhead gates;&lt;br /&gt;+struct qhead *gatesp;&lt;br /&gt;+/* end source record routing */&lt;br /&gt;+&lt;br /&gt; int udp = 0;   /* 0 = tcp, !0 = udp */&lt;br /&gt; int udplossinfo = 0;  /* set to 1 to give UDP loss info for&lt;br /&gt;      * interval reporting */&lt;br /&gt;@@ -641,7 +659,8 @@&lt;br /&gt;  -T## transmit timeout in seconds (or (m|M)inutes or (h|H)ours)\n\&lt;br /&gt;  -i## receiver interval reporting in seconds (or (m|M)inutes)\n\&lt;br /&gt;  -Ixxx identifier for nuttcp output (max of 40 characters)\n\&lt;br /&gt;- -F flip option to reverse direction of data connection open\n"&lt;br /&gt;+ -F flip option to reverse direction of data connection open\n\&lt;br /&gt;+ -gxxx specifies lsrr point\n"&lt;br /&gt; #ifdef HAVE_SETPRIO&lt;br /&gt; " -xP## set nuttcp process priority (must be root)\n"&lt;br /&gt; #endif&lt;br /&gt;@@ -972,6 +991,7 @@&lt;br /&gt;  short save_events;&lt;br /&gt;  int skiparg;&lt;br /&gt;  int reqval;&lt;br /&gt;+ struct entry *gate;&lt;br /&gt; &lt;br /&gt;  sendwin = 0;&lt;br /&gt;  rcvwin = 0;&lt;br /&gt;@@ -1435,6 +1455,24 @@&lt;br /&gt;     goto usage;&lt;br /&gt;    }&lt;br /&gt;    break;&lt;br /&gt;+  case 'g':&lt;br /&gt;+   reqval = 1;&lt;br /&gt;+   gate = (struct entry *)calloc(1, sizeof(struct entry));&lt;br /&gt;+   cp1 = getoptvalp(argv, 2, reqval, &amp;skiparg);&lt;br /&gt;+   gate-&gt;hname = calloc(1, strlen(cp1) + 1);&lt;br /&gt;+   strncpy(gate-&amp;gt;hname, cp1, strlen(cp1));&lt;br /&gt;+   if (!ngates) {&lt;br /&gt;+    TAILQ_INIT(&amp;gates);&lt;br /&gt;+                        } else {&lt;br /&gt;+                                if (ngates &amp;gt; 9) {&lt;br /&gt;+                                        fprintf(stderr, "too many gate was specified\n");&lt;br /&gt;+                                        fflush(stderr);&lt;br /&gt;+                                        exit(1);&lt;br /&gt;+                                }&lt;br /&gt;+                        }&lt;br /&gt;+   TAILQ_INSERT_TAIL(&amp;gates, gate, entries);&lt;br /&gt;+   ngates++;&lt;br /&gt;+   break;&lt;br /&gt;   case 'h':&lt;br /&gt;   default:&lt;br /&gt;    goto usage;&lt;br /&gt;@@ -1608,6 +1646,11 @@&lt;br /&gt;    fprintf(stderr, "server mode only allowed for receiver\n");&lt;br /&gt;    goto usage;&lt;br /&gt;   }&lt;br /&gt;+                if (ngates) {&lt;br /&gt;+   fprintf(stderr, "source route only allowed for client\n");&lt;br /&gt;+   goto usage;&lt;br /&gt;+  }&lt;br /&gt;+&lt;br /&gt;   udp = 0;&lt;br /&gt;   sinkmode = 1;&lt;br /&gt;   start_idx = 0;&lt;br /&gt;@@ -2576,6 +2619,29 @@&lt;br /&gt;      err("setsockopt");&lt;br /&gt;    }&lt;br /&gt;       }&lt;br /&gt;+                    if (ngates) {&lt;br /&gt;+                            if (af == AF_INET6) {&lt;br /&gt;+                                    fprintf(stderr, "source route allowed for AF_INET only, sorry");&lt;br /&gt;+                                    fflush(stderr);&lt;br /&gt;+                                    exit(1);&lt;br /&gt;+                            }&lt;br /&gt;+                                    &lt;br /&gt;+                            cp1 = alloc_inet_srr(0);&lt;br /&gt;+                            if (!cp1)&lt;br /&gt;+                                    err("alloc");&lt;br /&gt;+                            for (gate = gates.tqh_first; gate != NULL; gate = gate-&gt;entries.tqe_next) {&lt;br /&gt;+                                    i = add_inet_gate(cp1, gate-&amp;gt;hname);&lt;br /&gt;+                                    if (!i)&lt;br /&gt;+                                            err("add gate");&lt;br /&gt;+                                    if (i &amp;lt; 0) {&lt;br /&gt;+                                            fprintf(stderr, "%s: %s\n", gai_strerror(i), gate-&amp;gt;hname);&lt;br /&gt;+                                            exit(1);&lt;br /&gt;+                                    }&lt;br /&gt;+                            }&lt;br /&gt;+                            if (setsockopt(fd[stream_idx], IPPROTO_IP, IP_OPTIONS, cp1, i)) {&lt;br /&gt;+                                    err("setsockopt");&lt;br /&gt;+                            }&lt;br /&gt;+                    }&lt;br /&gt;   }&lt;br /&gt;   if (!udp || (stream_idx == 0))  {&lt;br /&gt;       if (((trans &amp;&amp; !reverse) &amp;&amp; (stream_idx &amp;gt; 0)) ||&lt;br /&gt;@@ -4572,3 +4638,59 @@&lt;br /&gt; &lt;br /&gt;  return(*nextarg);&lt;br /&gt; }&lt;br /&gt;+&lt;br /&gt;+/* from Richard W. Stevens, unpv12 */&lt;br /&gt;+&lt;br /&gt;+char *&lt;br /&gt;+alloc_inet_srr(int is_ssrr) {&lt;br /&gt;+        char *opt, *p;&lt;br /&gt;+&lt;br /&gt;+        p = calloc(1, 44); /* NOP, code, len, ptr, up to 10 addresses */&lt;br /&gt;+        if (!p) {&lt;br /&gt;+                return NULL;&lt;br /&gt;+        }&lt;br /&gt;+        opt = p;&lt;br /&gt;+ *opt++ = IPOPT_NOP; /* NOP for alignment */&lt;br /&gt;+ *opt++ = is_ssrr ? IPOPT_SSRR : IPOPT_LSRR;&lt;br /&gt;+ *opt++ = 3;  /* fill in the length */&lt;br /&gt;+ *opt++ = 4;  /* offset to first address */&lt;br /&gt;+&lt;br /&gt;+        return p;&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+int&lt;br /&gt;+add_inet_gate(char *optr, char *hname)&lt;br /&gt;+{&lt;br /&gt;+ int n;&lt;br /&gt;+ struct addrinfo *ai, hints;&lt;br /&gt;+ struct sockaddr_in *sin;&lt;br /&gt;+&lt;br /&gt;+ char *lenptr = optr + 2; /* pointer to length byte in SRR option */&lt;br /&gt;+&lt;br /&gt;+        if (*optr != IPOPT_NOP) {&lt;br /&gt;+                errno = EINVAL; /* slight sanity check */&lt;br /&gt;+                return 0;&lt;br /&gt;+        }&lt;br /&gt;+        if (*lenptr &amp;gt; 9) {&lt;br /&gt;+                errno = ENOBUFS;&lt;br /&gt;+                return 0; /* too many source routes */&lt;br /&gt;+        }&lt;br /&gt;+&lt;br /&gt;+        bzero(&amp;hints, sizeof(struct addrinfo));&lt;br /&gt;+        hints.ai_flags = AI_CANONNAME; /* always return canonical name */&lt;br /&gt;+        hints.ai_family = AF_INET;&lt;br /&gt;+        hints.ai_socktype = 0;&lt;br /&gt;+&lt;br /&gt;+        if ((n = getaddrinfo(hname, NULL, &amp;hints, &amp;ai)) != 0) {&lt;br /&gt;+                return n;&lt;br /&gt;+        }&lt;br /&gt;+&lt;br /&gt;+        sin = (struct sockaddr_in *) ai-&gt;ai_addr;&lt;br /&gt;+        memcpy(optr + 1 + *lenptr, &amp;sin-&amp;gt;sin_addr, sizeof(struct in_addr));&lt;br /&gt;+        freeaddrinfo(ai);&lt;br /&gt;+&lt;br /&gt;+        *lenptr += sizeof(struct in_addr);&lt;br /&gt;+&lt;br /&gt;+ return *lenptr + 1; /* size for setsockopt() */&lt;br /&gt;+}&lt;/pre&gt;&lt;/blockquote&gt;すっかり LSRR ハマってる自分。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4504899727092545310?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4504899727092545310/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4504899727092545310' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4504899727092545310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4504899727092545310'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/09/lsrr-with-nuttcp.html' title='LSRR with nuttcp'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3372842511303927195</id><published>2007-09-10T22:32:00.000+09:00</published><updated>2007-09-10T22:35:46.027+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>lguest64</title><content type='html'>&lt;a href="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0709.0/0943.html"&gt;[ANNOUNCE] Lguest64 - fatter puppies!&lt;/a&gt; This is a formal announcement of Lguest64. だそうだ。&lt;br /&gt;git://git.et.redhat.com/kernel-lguest-64.git だそうだ (T_T)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3372842511303927195?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3372842511303927195/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3372842511303927195' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3372842511303927195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3372842511303927195'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/09/lguest64.html' title='lguest64'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-655382333398189739</id><published>2007-09-10T22:16:00.000+09:00</published><updated>2007-09-10T22:23:55.055+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><title type='text'>ncftp(get|put) で bind</title><content type='html'>ncftpget, ncftpput で送信元アドレスを指定するパッチを貼り付け。あんまチェックとかしていないけど、とりあえずなら使えたので。&lt;blockquote&gt;&lt;pre&gt;diff -ubBr ncftp-3.2.0/libncftp/ftp.c ncftp-3.2.0-bind/libncftp/ftp.c                                                                                                                 &lt;br /&gt;--- ncftp-3.2.0/libncftp/ftp.c  2005-01-02 06:27:07.000000000 +0900                                                                                                                   &lt;br /&gt;+++ ncftp-3.2.0-bind/libncftp/ftp.c     2007-09-09 16:37:07.000000000 +0900                                                                                                           &lt;br /&gt;@@ -88,6 +88,16 @@&lt;br /&gt;        return (result);                                                                                                                                                              &lt;br /&gt; }      /* GetSocketAddress */                                                                                                                                                        &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;+static int                                                                                                                                                                           &lt;br /&gt;+SetSocketAddress(int sockfd, struct sockaddr_in *saddr)                                                                                                                              &lt;br /&gt;+{                                                                                                                                                                                    &lt;br /&gt;+        saddr-&gt;sin_family = AF_INET;                                                                                                                                                 &lt;br /&gt;+        saddr-&gt;sin_port = 0;                                                                                                                                                         &lt;br /&gt;+                                                                                                                                                                                     &lt;br /&gt;+        return bind(sockfd, (struct sockaddr *) saddr, sizeof(struct sockaddr_in));                                                                                                  &lt;br /&gt;+}      /* SetSocketAddress */                                                                                                                                                        &lt;br /&gt;+                                                                                                                                                                                     &lt;br /&gt;+                                                                                                                                                                                     &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;@@ -286,7 +296,7 @@&lt;br /&gt;                         * size specified.                                                                                                                                            &lt;br /&gt;                         */                                                                                                                                                           &lt;br /&gt;                        (void) SetSocketBufSize(sockfd, cip-&gt;ctrlSocketRBufSize, cip-&gt;ctrlSocketSBufSize);                                                                            &lt;br /&gt;-                                                                                                                                                                                     &lt;br /&gt;+                       (void) SetSocketAddress(sockfd, &amp;cip-&gt;ourCtlAddr);                                                                                                            &lt;br /&gt; #ifdef NO_SIGNALS                                                                                                                                                                    &lt;br /&gt;                        err = SConnect(sockfd, &amp;cip-&gt;servCtlAddr, (int) cip-&gt;connTimeout);                                                                                            &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;diff -ubBr ncftp-3.2.0/sh_util/ncftpget.c ncftp-3.2.0-bind/sh_util/ncftpget.c                                                                                                         &lt;br /&gt;--- ncftp-3.2.0/sh_util/ncftpget.c      2006-08-12 08:36:34.000000000 +0900                                                                                                           &lt;br /&gt;+++ ncftp-3.2.0-bind/sh_util/ncftpget.c 2007-09-09 17:17:21.000000000 +0900                                                                                                           &lt;br /&gt;@@ -228,7 +228,7 @@&lt;br /&gt;        perfilecmd[0] = '\0';                                                                                                                                                         &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;        GetoptReset(&amp;opt);                                                                                                                                                            &lt;br /&gt;-       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:t:aRTr:vVf:ADzZEFbcCB:W:X:Y:")) &gt; 0) {                                                                                    &lt;br /&gt;+       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:t:aRTr:vVf:ADzZEFbcCB:W:X:Y:L:")) &gt; 0) {                                                                                  &lt;br /&gt;                if (c == 'b') {                                                                                                                                                       &lt;br /&gt;                        batchmode++;                                                                                                                                                  &lt;br /&gt;                }                                                                                                                                                                     &lt;br /&gt;@@ -247,7 +247,7 @@&lt;br /&gt;        }                                                                                                                                                                             &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;        GetoptReset(&amp;opt);                                                                                                                                                            &lt;br /&gt;-       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:t:aRTr:vVf:o:ADzZEFbcCB:W:X:Y:")) &gt; 0) switch(c) {                                                                        &lt;br /&gt;+       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:t:aRTr:vVf:o:ADzZEFbcCB:W:X:Y:L:")) &gt; 0) switch(c) {                                                                      &lt;br /&gt;                case 'P':                                                                                                                                                             &lt;br /&gt;                        fi.port = atoi(opt.arg);                                                                                                                                      &lt;br /&gt;                        break;                                                                                                                                                        &lt;br /&gt;@@ -363,6 +363,11 @@&lt;br /&gt;                case 'C':                                                                                                                                                             &lt;br /&gt;                        ftpcat = 2;                                                                                                                                                   &lt;br /&gt;                        break;                                                                                                                                                        &lt;br /&gt;+               case 'L':                                                                                                                                                             &lt;br /&gt;+                       if (inet_pton(AF_INET, opt.arg, &amp;fi.ourCtlAddr.sin_addr) &lt;= 0) {                                                                                              &lt;br /&gt;+                               (void) fprintf(stderr, "Warning: could not resolve address specified by -L flag: %s\n", opt.arg);                                                     &lt;br /&gt;+                       }                                                                                                                                                             &lt;br /&gt;+                        break;                                                                                                                              &lt;br /&gt;                default:                                                                                                                                                              &lt;br /&gt;                        Usage();                                                                                                                                                      &lt;br /&gt;        }                                                                                                                                                                             &lt;br /&gt;diff -ubBr ncftp-3.2.0/sh_util/ncftpput.c ncftp-3.2.0-bind/sh_util/ncftpput.c                                                                                                         &lt;br /&gt;--- ncftp-3.2.0/sh_util/ncftpput.c      2006-08-12 08:36:29.000000000 +0900                                                                                                           &lt;br /&gt;+++ ncftp-3.2.0-bind/sh_util/ncftpput.c 2007-09-09 17:17:51.000000000 +0900                                                                                                           &lt;br /&gt;@@ -230,7 +230,7 @@&lt;br /&gt;        perfilecmd[0] = '\0';                                                                                                                                                         &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;        GetoptReset(&amp;opt);                                                                                                                                                            &lt;br /&gt;-       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:U:t:mar:RvVf:o:AT:S:EFcCyZzDbB:W:X:Y:")) &gt; 0) {                                                                           &lt;br /&gt;+       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:U:t:mar:RvVf:o:AT:S:EFcCyZzDbB:W:X:Y:L:")) &gt; 0) {                                                                         &lt;br /&gt;                if (c == 'b') {                                                                                                                                                       &lt;br /&gt;                        batchmode++;                                                                                                                                                  &lt;br /&gt;                }                                                                                                                                                                     &lt;br /&gt;@@ -250,7 +250,7 @@&lt;br /&gt;        }                                                                                                                                                                             &lt;br /&gt;                                                                                                                                                                                      &lt;br /&gt;        GetoptReset(&amp;opt);                                                                                                                                                            &lt;br /&gt;-       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:U:t:mar:RvVf:o:AT:S:EFcCyZzDbB:W:X:Y:")) &gt; 0) switch(c) {                                                                 &lt;br /&gt;+       while ((c = Getopt(&amp;opt, argc, argv, "P:u:j:p:h:e:d:U:t:mar:RvVf:o:AT:S:EFcCyZzDbB:W:X:Y:L:")) &gt; 0) switch(c) {                                                               &lt;br /&gt;                case 'P':                                                                                                                                                             &lt;br /&gt;                        fi.port = atoi(opt.arg);                                                                                                                                      &lt;br /&gt;                        break;                                                                                                                                                        &lt;br /&gt;@@ -380,6 +380,11 @@&lt;br /&gt;                        STRNCAT(postcmd, opt.arg);                                                                                                                                    &lt;br /&gt;                        STRNCAT(postcmd, "\n");                                                                                                                                       &lt;br /&gt;                        break;                                                                                                                                                        &lt;br /&gt;+               case 'L':                                                                                                                                                             &lt;br /&gt;+                       if (inet_pton(AF_INET, opt.arg, &amp;fi.ourCtlAddr.sin_addr) &lt;= 0) {                                                                                              &lt;br /&gt;+                               (void) fprintf(stderr, "Warning: could not resolve address specified by -L flag: %s\n", opt.arg);                                                     &lt;br /&gt;+                       }                                                                                                                                                             &lt;br /&gt;+                        break;                                                                                                                                                       &lt;br /&gt;                default:                                                                                      &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt; iperf のソース見難いなぁ。ttcp.c とかの方が良い?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-655382333398189739?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/655382333398189739/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=655382333398189739' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/655382333398189739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/655382333398189739'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/09/ncftpgetput-bind.html' title='ncftp(get|put) で bind'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-709707084133739729</id><published>2007-09-02T19:21:00.000+09:00</published><updated>2007-09-02T20:17:04.830+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>いろいろ。</title><content type='html'>バタバタと忙しくて元気が無いので雑多なメモ。&lt;br /&gt;&lt;h3&gt;NVIDIA-Linux-x86_64-1.0-9639-pkg2&lt;/h3&gt; 2.6.23-rc2 以降位でコンパイル通すためのパッチ。&lt;blockquote&gt;&lt;pre&gt;--- nv/nv-linux.h       2007-04-17 13:03:18.000000000 +0900&lt;br /&gt;+++ nv-new/nv-linux.h   2007-09-02 18:06:02.000000000 +0900&lt;br /&gt;@@ -528,7 +528,7 @@&lt;br /&gt; #define NV_KMEM_CACHE_CREATE(kmem_cache, name, type)            \&lt;br /&gt;     {                                                           \&lt;br /&gt;         kmem_cache = kmem_cache_create(name, sizeof(type),      \&lt;br /&gt;-                        0, 0, NULL, NULL);                      \&lt;br /&gt;+                        0, 0, NULL);                      \&lt;br /&gt;     } &lt;br /&gt; &lt;br /&gt; #define NV_KMEM_CACHE_DESTROY(kmem_cache)                       \&lt;br /&gt;Only in nv-new: nv-linux.h.orig&lt;br /&gt;Only in nv-new: nv-vm.o&lt;br /&gt;diff -ubBr nv/nv.c nv-new/nv.c&lt;br /&gt;--- nv/nv.c     2007-04-17 13:03:18.000000000 +0900&lt;br /&gt;+++ nv-new/nv.c 2007-09-02 18:06:02.000000000 +0900&lt;br /&gt;@@ -107,7 +107,8 @@&lt;br /&gt; &lt;br /&gt; static int nv_mmconfig_failure_detected = 0;&lt;br /&gt; &lt;br /&gt;-static kmem_cache_t *nv_pte_t_cache = NULL;&lt;br /&gt;+static struct kmem_cache *nv_pte_t_cache;&lt;br /&gt; &lt;br /&gt; // allow an easy way to convert all debug printfs related to events&lt;br /&gt; // back and forth between 'info' and 'errors'&lt;br /&gt;@@ -1423,8 +1424,7 @@&lt;br /&gt;         if (apm_nv_dev[i] != NULL) pm_unregister(apm_nv_dev[i]);&lt;br /&gt; #endif&lt;br /&gt; &lt;br /&gt;-    if (unregister_chrdev(nv_major, "nvidia") &lt; 0)&lt;br /&gt;-        nv_printf(NV_DBG_ERRORS, "NVRM: unregister nv chrdev failed\n");&lt;br /&gt;+    unregister_chrdev(nv_major, "nvidia");&lt;br /&gt; &lt;br /&gt;     for (i = 0; i &lt; num_nv_devices; i++)&lt;br /&gt;     {&lt;br /&gt;@@ -1450,8 +1450,7 @@&lt;br /&gt; &lt;br /&gt;     nv_printf(NV_DBG_INFO, "NVRM: nvidia_exit_module\n");&lt;br /&gt; &lt;br /&gt;-    if (unregister_chrdev(nv_major, "nvidia") &lt; 0)&lt;br /&gt;-        nv_printf(NV_DBG_ERRORS, "NVRM: unregister nv chrdev failed\n");&lt;br /&gt;+    unregister_chrdev(nv_major, "nvidia");&lt;br /&gt; &lt;br /&gt;     for (i = 0; i &lt; num_nv_devices; i++)&lt;br /&gt;     {&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;[PATCH 0/25 -v2] paravirt_ops for x86_64, second round&lt;/h3&gt;おなじ x86_64 で lguest (paravirt_ops) の&lt;a href="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0708.1/1602.html"&gt;パッチ&lt;/a&gt;が LKML に 2度目? 投げられているが 2.6.24 になるのかしら?&lt;br /&gt;&lt;h3&gt;遅延 ACK&lt;/h3&gt; TCP の sliding window の話をしていたところ「遅延 ACKとゆーものがあって、受信側はウィンドウサイズ (cwnd?) 分のパケットを受け取った後でないと ACK を返さない」とおかしな事を言い切っていたが、そんな実装もあるのか? Web をウロウロしていたら linux では &lt;a href="http://kb.pert.geant2.net/PERTKB/TCPAcks"&gt;quickack&lt;/a&gt;というものがあり...評判が悪いらしい。けど、どういった状態で delayed ACK を無効にするか知りたいが、そう。TCP のコードも私にとっては難解。&lt;br /&gt;&lt;br /&gt;あとあと piggyback を使っているアプリケーションってある? 先日の lsrr を iperf に実装すべくコード読み始めたけど読み辛い....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-709707084133739729?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/709707084133739729/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=709707084133739729' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/709707084133739729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/709707084133739729'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/09/blog-post.html' title='いろいろ。'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4085329308469073879</id><published>2007-08-18T22:56:00.000+09:00</published><updated>2007-08-18T23:08:57.429+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>LSRR の受信?</title><content type='html'>受信か送信かどうでも良くなってしまったが、LSRR 使えなかった原因の一つは NIC によるものだったらしい。とっても古い (らしい) 3Com の 3c905C というもので &lt;code&gt;/sys/class/net/eth0/features&lt;/code&gt; の値は 3。意味するところは &lt;code&gt;include/linux/netdevce.h&lt;/code&gt; から&lt;blockquote&gt;&lt;pre&gt;....&lt;br /&gt;#define NETIF_F_SG              1       /* Scatter/gather IO. */&lt;br /&gt;#define NETIF_F_IP_CSUM         2       /* Can checksum only TCP/UDP over IPv4. */&lt;br /&gt;#define NETIF_F_NO_CSUM         4       /* Does not require checksum. F.e. loopack. */&lt;br /&gt;#define NETIF_F_HW_CSUM         8       /* Can checksum all the packets. */&lt;br /&gt;....&lt;/pre&gt;&lt;/blockquote&gt;boot パラメタに &lt;code&gt;3c59x.hw_checksums=0&lt;/code&gt; と指定したら動いた...けど features も 0 に? scatter/gather は checksum 必須なの?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4085329308469073879?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4085329308469073879/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4085329308469073879' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4085329308469073879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4085329308469073879'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/lsrr.html' title='LSRR の受信?'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4401085958600017880</id><published>2007-08-18T22:47:00.000+09:00</published><updated>2007-08-18T22:55:56.627+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QoS'/><title type='text'>ポリシング</title><content type='html'>以前 egress も police でできるのでは? と書いて、試してみた。&lt;blockquote&gt;&lt;pre&gt;# tc qdisc add dev eth1 root handle 10: prio&lt;br /&gt;# tc filter add dev eth1 parent 10: protocol ip prio 20 u32 match u8 0 0 police rate 1Mbit buffer 64Kb drop flowid :1&lt;br /&gt;# iperf -c toptor4&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;Client connecting to toptor4, TCP port 5001&lt;br /&gt;TCP window size: 16.0 KByte (default)&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;[  3] local 172.27.129.1 port 57260 connected with 172.27.129.2 port 5001&lt;br /&gt;[  3]  0.0-10.0 sec  1.26 MBytes  1.05 Mbits/sec&lt;/pre&gt;&lt;/blockquote&gt;それなり。ingress も同様で burst の値でだいぶ変わるけど、まぁそれなり....&lt;br /&gt;あと flowid :1 も ingress 同様どうでも良いのか?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-4401085958600017880?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/4401085958600017880/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=4401085958600017880' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4401085958600017880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/4401085958600017880'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/blog-post.html' title='ポリシング'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-9221603306580284558</id><published>2007-08-15T13:29:00.000+09:00</published><updated>2007-08-15T14:05:13.832+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>lguest のネットワーク</title><content type='html'>(ユーザスペースの) lguest のオプションは、何も指定しないと&lt;blockquote&gt;&lt;pre&gt;lguest: Usage: lguest [--verbose] [--sharenet=&amp;lt;filename&amp;gt;|--tunnet=(&amp;lt;ipaddr&amp;gt;|bridge:&amp;lt;bridgename&amp;gt;)&lt;br /&gt;|--block=&amp;lt;filename&amp;gt;|--initrd=&amp;lt;filename&amp;gt;]...&lt;br /&gt;&amp;lt;mem-in-mb&amp;gt; vmlinux [args...]&lt;/pre&gt;&lt;/blockquote&gt;となる。この内ネットワークに関する部分は&lt;dl&gt;&lt;dt&gt;&lt;code&gt;--sharenet=&amp;lt;filename&amp;gt;&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;どうもゲスト間のインターフェース。ファイル名だし&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;code&gt;--tunnet&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://en.wikipedia.org/wiki/TUN/TAP"&gt;TUN/TAP&lt;/a&gt;を使う。TUN と TAP って linux で区別されているのか知らない...&lt;dl&gt;&lt;dt&gt;&lt;code&gt;&amp;lt;ipaddr&amp;gt;&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;よくある? peer to peer のインターフェース。試していないが一番てっとり早いと思われる&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;code&gt;bridge:&amp;lt;bridgename&amp;gt;&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;これが本題。README にはホストと同じセグメントにすべく例があるけど、別共有ネットワークも簡単に作れる。当初個々ゲストに上の &lt;code&gt;ipaddr&lt;/code&gt; を指定して、後で tap# をブリッジに加えてあげれば良いかな。と考えていたが、良く考えてくれてあってブリッジだけ作っておけば、勝手に tap# 作って加えてくれる。&lt;/dd&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;/dl&gt;なので &lt;a href="http://people.netfilter.org/pablo/conntrackd/testcase.html"&gt;conntrack-tools のテストケース&lt;/a&gt;であればホストを A として&lt;blockquote&gt;&lt;pre&gt;# brctl addbr lguest&lt;br /&gt;# ... ブリッジいろいろ&lt;br /&gt;# lguest 64m --block FW1.img --tunnet bridge:lgbr --sharenet ether0 --sharenet ether2 vmlinux root=/dev/lgba&lt;br /&gt;# lguest 64m --block FW2.img --tunnet bridge:lgbr --sharenet ether0 --sharenet ether2 vmlinux root=/dev/lgba&lt;br /&gt;# lguest 64m --block B.img --sharenet ether0 vmlinux root=/dev/lgba&lt;/pre&gt;&lt;/blockquote&gt;でイケそうな感じ。eth0 eth2 のパケットも見たいのであれば、取り急ぎ sharenet 止めてブリッジ作ってあげれば良い?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-9221603306580284558?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/9221603306580284558/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=9221603306580284558' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/9221603306580284558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/9221603306580284558'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/lguest_15.html' title='lguest のネットワーク'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2835111186638507423</id><published>2007-08-14T11:49:00.000+09:00</published><updated>2007-08-14T12:05:12.215+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>lguest のコンソール</title><content type='html'>2.6.23-rc に入ったので lguest 再度試してみる。まだ FAQ には反映されていないけど、&lt;a href="http://lguest.ozlabs.org/patches/?rev/3408cc7c1b33"&gt;patch&lt;/a&gt; の中にこんな記述があった。&lt;blockquote&gt;&lt;dl&gt;&lt;dt&gt; Q: Why don't I have a console when I boot my image?&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; A: Most images are set up to create a console virtual consoles (/dev/tty0 etc), but the lguest console is /dev/hvc0: look for a line like "1:2345:respawn:/sbin/getty 38400 tty1" in /etc/inittab and change "tty1" to o "hvc0".&lt;/dd&gt;&lt;/dl&gt;&lt;/blockquote&gt;debootstrap でイメージ作った後にゲストの /dev に移動して &lt;blockquote&gt;&lt;pre&gt;mknod hvc0 c 229 0&lt;/pre&gt;&lt;/blockquote&gt; 上記通り inittab を書き換えて... root でログインできん。で /etc/securetty に hvc0 を追記。やっと最初の一歩。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2835111186638507423?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2835111186638507423/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2835111186638507423' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2835111186638507423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2835111186638507423'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/lguest.html' title='lguest のコンソール'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5905586640954822560</id><published>2007-08-08T23:17:00.000+09:00</published><updated>2007-08-08T23:29:39.375+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>TCP の checksum</title><content type='html'>なさけないはなしー&lt;blockquote&gt;&lt;pre&gt; /* This routine computes an IPv4 TCP checksum. */&lt;/pre&gt;&lt;/blockquote&gt; を見付けるまでに 1時間以上。イカンですな。未だ netcat の -g 使った lsrr を動作できたりできなかったり。tcpdump の出力信じるならば checksum がおかしい。ということで追ってみたところ &lt;code&gt;net/ipv4/tcp_ipv4.c::tcp_v4_send_check()&lt;/code&gt; にて上記コメント発見。&lt;code&gt;SYN_SENT&lt;/code&gt; で ack を受け取った場合を追ってみると&lt;blockquote&gt;&lt;pre&gt;tcp_v4_do_rcv()&lt;br /&gt;  &gt;&gt; tcp_rcv_state_process()&lt;br /&gt;  &gt;&gt;&gt;&gt; tcp_rcv_synsent_state_process()&lt;br /&gt;  &gt;&gt;&gt;&gt;&gt;&gt; tcp_send_ack()&lt;br /&gt;  &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tcp_transmit_skb() この中で&lt;br /&gt;           inet_connection_sock_af_ops ipv4_specific-&gt;send_check() が...&lt;/pre&gt;&lt;/blockquote&gt; &lt;code&gt;tcp_v4_send_check()&lt;/code&gt; では &lt;code&gt;CHECKSUM_PARTIAL&lt;/codee&gt; で処理分け。lwn を見ると&lt;blockquote&gt;That value has been replaced with CHECKSUM_PARTIAL (intended for outgoing packets where the job must be completed by the hardware) and CHECKSUM_COMPLETE (for incoming packets which have been completely checksummed by the hardware).&lt;/blockquote&gt;仰しゃる通り関数名からも、送信側の話。送受信双方共に&lt;code&gt;ethtook -K&lt;/code&gt; で変更できるらしい。TCP もドライバも何でも...深いから、まだまだ時間かかるだろうなぁ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5905586640954822560?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5905586640954822560/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5905586640954822560' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5905586640954822560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5905586640954822560'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/tcp-checksum.html' title='TCP の checksum'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-2017224020829851789</id><published>2007-08-06T22:17:00.000+09:00</published><updated>2007-08-06T22:26:09.801+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WLAN'/><title type='text'>zd1211rw のその後</title><content type='html'>2.6.22 にて 802.11 スタックが新たに追加され、以前のものを softmac とか ieee80211。新しいモノを mac80211 と呼ぶらしい。で vanilla kernel では zd1211rw は以前の ieee80211 にしか対応していない。その後は? と検索してみると、新しい &lt;a href="http://linuxwireless.org/en/users/Drivers/zd1211rw#zd1211rw-softmacvszd1211rw-mac80211"&gt; zd1211rw-mac80211 &lt;/a&gt; なるものの開発も始まっているらしい。曰く&lt;blockquote&gt;&lt;pre&gt;Although some driver-level code is still required,&lt;br /&gt;it does fill in many blanks in our feature table:&lt;br /&gt;it has stack-level support for master mode, ad-hoc, automatic rate adjustment, ...&lt;/pre&gt;&lt;/blockquote&gt; でも developers only だそうで。 git 使えない...日本語の &lt;a href="http://members3.jcom.home.ne.jp/yasuaki_n/"&gt;Git 入門&lt;/a&gt; 大変ありがたいです。今後も頑張って下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-2017224020829851789?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/2017224020829851789/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=2017224020829851789' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2017224020829851789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/2017224020829851789'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/zd1211rw.html' title='zd1211rw のその後'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-7645405814055566155</id><published>2007-08-06T22:12:00.000+09:00</published><updated>2007-08-06T22:17:10.190+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>libkeepalive</title><content type='html'>つらつらと web を彷徨って TLDP に行ってみたら &lt;a href="http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html"&gt;TCP Keepalive HOWTO&lt;/a&gt; なる HOWTO があった。まぁ細かいとこ...と眺めていったところ &lt;a href="http://libkeepalive.sourceforge.net/"&gt; libkeepalive &lt;/a&gt; という pre load するとレガシなアプリケーションでも keepalive 投げるようになる wrapper の紹介でした。ファイアウォールのタイムアウト値上限で悩んでいる方は良いカモ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-7645405814055566155?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/7645405814055566155/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=7645405814055566155' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7645405814055566155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/7645405814055566155'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/libkeepalive.html' title='libkeepalive'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-3365108259665104558</id><published>2007-08-06T22:07:00.000+09:00</published><updated>2007-08-06T22:12:12.422+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>XORP その後</title><content type='html'>Open Tech Press に &lt;a href="http://opentechpress.jp/news/07/08/06/0140258.shtml"&gt;Vyatta 2.2ベータがリリース&lt;/a&gt; なる記事が掲載されていた。大元? の &lt;a href="http://www.xorp.org/"&gt; XORP &lt;/a&gt; 1.4 の release notes 眺めると...&lt;blockquote&gt;&lt;pre&gt;ALL:&lt;br /&gt;...&lt;br /&gt;- Implementation of OSPFv3 (draft-ietf-ospf-ospfv3-update-14.txt).&lt;/pre&gt;&lt;/blockquote&gt;おぉ。でも deb パッケージが無いので根性ナシはここまで&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-3365108259665104558?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/3365108259665104558/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=3365108259665104558' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3365108259665104558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/3365108259665104558'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/08/xorp.html' title='XORP その後'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-5463073990025246234</id><published>2007-07-31T20:49:00.000+09:00</published><updated>2007-07-31T21:25:40.071+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fib'/><title type='text'>rp_filter って?</title><content type='html'>linux ネットワークセキュリティのことはじめ。みたいなページに /proc/sys/net/conf/eth#/rpfilter は 1 にしましょう。らしき事が書かれており、盲目的にそーゆーモン。と信じていたが LSRR 試し始めてふと気になった。&lt;br /&gt;&lt;br /&gt;本来ならば net/ipv4/fib_frontend.c の fib_validate_source() をフムフムと読みたいところなのだが...&lt;a href="http://www.amazon.co.jp/Understanding-Network-Internals-Christian-Benvenuti/dp/0596002556/ref=sr_1_1/249-0560612-4020350?ie=UTF8&amp;s=english-books&amp;qid=1185883815&amp;sr=8-1"&gt; Understanding Linux Network Internals&lt;/a&gt; の力を借りる始末。曰く入ってきたデバイスの経路を調べて、そのデバイスを経由した到達の可否を判断 --- Reverse Path Filter --- ということらしい。淋しい自身の経路を示すと&lt;blockquote&gt;&lt;pre&gt;# ip route ls&lt;br /&gt;172.27.202.0/24 via 172.27.129.1 dev eth0  proto zebra  metric 20&lt;br /&gt;172.27.200.0/24 via 172.27.129.1 dev eth0  proto zebra  metric 20&lt;br /&gt;172.27.140.0/24 dev tap0  proto kernel  scope link  src 172.27.140.1&lt;br /&gt;172.27.102.0/24 via 172.27.129.1 dev eth0  proto zebra  metric 20&lt;br /&gt;172.27.129.0/24 dev eth0  proto kernel  scope link  src 172.27.129.2&lt;br /&gt;172.27.130.0/24 dev vmnet1  proto kernel  scope link  src 172.27.130.1&lt;br /&gt;172.27.100.0/24 via 172.27.129.1 dev eth0  proto zebra  metric 20&lt;br /&gt;172.27.131.0/24 via 172.27.130.254 dev vmnet1  proto zebra&lt;br /&gt;172.27.1.0/24 via 172.27.129.1 dev eth0  proto zebra  metric 20&lt;br /&gt;default via 172.27.129.1 dev eth0&lt;/pre&gt;&lt;/blockquote&gt;となっている場合において vmnet1 は 172.27.130.0/24 と 172.27.131.0/24 のみ。よって、これら以外のソースアドレスを持ったパケットが vmnet1 に入ってきた場合は落とすよ。というお話。&lt;br /&gt;&lt;br /&gt;名前から推測するという情けなさだが、先の fib_validate_source() を一瞥すると rpfilter エントリは&lt;blockquote&gt;&lt;pre&gt;  rpf = IN_DEV_RPFILTER(in_dev);&lt;/pre&gt;&lt;/blockquote&gt;さらにinclude/linux/inetdevice.h を眺めて&lt;blockquote&gt;&lt;pre&gt;#define IN_DEV_ANDCONF(in_dev, attr) \&lt;br /&gt; (IPV4_DEVCONF_ALL(attr) &amp;&amp; IN_DEV_CONF_GET((in_dev), attr))&lt;br /&gt;....&lt;br /&gt;#define IN_DEV_RPFILTER(in_dev)  IN_DEV_ANDCONF((in_dev), RP_FILTER)&lt;/pre&gt;&lt;/blockquote&gt;となっているので vmnet1 というデバイスの場合であれば /proc/sys/net/ipv4/conf/all/rpfilter と /proc/sys/net/ipv4/conf/vmnet1/rpfilter 両方が 1 となっている場合のみ有効...らしい。FIB 周りっていつになったら理解できるんだろう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4599417963883898818-5463073990025246234?l=chamaken.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chamaken.blogspot.com/feeds/5463073990025246234/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4599417963883898818&amp;postID=5463073990025246234' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5463073990025246234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4599417963883898818/posts/default/5463073990025246234'/><link rel='alternate' type='text/html' href='http://chamaken.blogspot.com/2007/07/rpfilter.html' title='rp_filter って?'/><author><name>chamaken</name><uri>http://www.blogger.com/profile/11062853334848535238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4599417963883898818.post-4508276431747138455</id><published>2007-07-12T00:10:00.000+09:00</published><updated>2007-08-08T23:31:15.772+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>lguest for 2.6.22</title><content type='html'>コンパイルでエラーに
