2009年8月8日土曜日

Ubuntu8.04とCanon Pixus 560iを接続

Ubuntu8.04LTSにCanon PIXUS 560iを接続する方法です。USBケーブルで接続して、ドライバをインストールすれば動作します。

始めに/etc/apt/sources.listに次の行を追加します。
deb http://mambo.kuhp.kyoto-u.ac.jp/~takushi/ubuntu ./
ポイントは、ubuntuユーザーは末尾をubuntuとすることです。debianとなっていると、後でダウンロードするファイルがダウンロードできません。

それからapt-getコマンドで情報を更新して、適切なプログラムをインストールします。
# apt-get update
# apt-get install libcnbj-2.4 bjfilter-2.4 pstocanonbj
最新はlibcnbj-2.6 bjfilter-2.6でした。
インストールできたら[システム]→[システム管理]→[印刷]でプリンタの設定をします。ドライバを「Canon PIXUS 560i ver.2.4」にして、テスト印刷してみます。

こんな感じ。

参考
http://mambo.kuhp.kyoto-u.ac.jp/~takushi/japanese.html#canon
https://forums.ubuntulinux.jp/viewtopic.php?pid=31605

2009年8月1日土曜日

BIND 9 に脆弱性

今年の夏もBINDに脆弱性が発見されたみたい。

参考
http://jprs.jp/tech/security/bind9-vuln-dynamic-update.html

確か去年の夏もひと騒ぎあったような気がするが。

ということで、管理しているプライマリーDNSをアップデートします。
手順としては、killコマンドでnamedのプロセスを止め、namedディレクトリをまるごとバックアップします。これは念のため。

使っているBINDのバージョンを調べて、最新のBINDをダウンロード。

# /usr/local/sbin/named -v
BIND 9.6.0-P1
バージョンはBIND 9.6.0-P1なので、最新バージョンのBIND 9.6.1-P1をダウンロード。tarコマンドで展開した後、インストールします。
# wget http://ftp.isc.org/isc/bind9/9.6.1-P1/bind-9.6.1-P1.tar.gz
# tar xvfz bind-9.6.1-P1.tar.gz
# cd bind-9.6.1-P1
# ./configure
# make
# make install
インストールしたらnamedを立ち上げます。
# /usr/local/sbin/named -u named -t /var/named/
立ち上がったらdigコマンドで動作確認。バージョンが9.6.1-P1になっていることも確認できた。

SOAレコード
# dig @localhost google.co.jp soa

; <<>> DiG 9.6.1-P1 <<>> @localhost google.co.jp soa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37582
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.co.jp. IN SOA

;; ANSWER SECTION:
google.co.jp. 86400 IN SOA ns1.google.com. dns-admin.google.com. 1387850 21600 3600 1209600 300

;; AUTHORITY SECTION:
google.co.jp. 345600 IN NS ns1.google.com.
google.co.jp. 345600 IN NS ns2.google.com.
google.co.jp. 345600 IN NS ns4.google.com.
google.co.jp. 345600 IN NS ns3.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345542 IN A 216.239.32.10
ns2.google.com. 172742 IN A 216.239.34.10
ns3.google.com. 172742 IN A 216.239.36.10
ns4.google.com. 172742 IN A 216.239.38.10

;; Query time: 46 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Aug 1 03:44:49 2009
;; MSG SIZE rcvd: 222

正引き
# dig @localhost google.co.jp a

; <<>> DiG 9.6.1-P1 <<>> @localhost google.co.jp a
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21758
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.co.jp. IN A

;; ANSWER SECTION:
google.co.jp. 1402 IN A 74.125.95.104
google.co.jp. 1402 IN A 72.14.203.104
google.co.jp. 1402 IN A 74.125.91.104

;; AUTHORITY SECTION:
google.co.jp. 345260 IN NS ns1.google.com.
google.co.jp. 345260 IN NS ns4.google.com.
google.co.jp. 345260 IN NS ns3.google.com.
google.co.jp. 345260 IN NS ns2.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345202 IN A 216.239.32.10
ns2.google.com. 172402 IN A 216.239.34.10
ns3.google.com. 172402 IN A 216.239.36.10
ns4.google.com. 172402 IN A 216.239.38.10

;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Aug 1 03:50:29 2009
;; MSG SIZE rcvd: 224

逆引き
# dig @localhost -x 192.168.10.1

; <<>> DiG 9.6.1-P1 <<>> @localhost -x 192.168.10.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 56849
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;1.10.168.192.in-addr.arpa. IN PTR

;; AUTHORITY SECTION:
168.192.in-addr.arpa. 10800 IN SOA prisoner.iana.org. hostmaster.root-servers.org. 2002040800 1800 900 604800 604800

;; Query time: 29 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Aug 1 03:48:28 2009
;; MSG SIZE rcvd: 120

問題なく動作していそうです。

2009年6月23日火曜日

google検索にヒットしないようにpukiwikiにMETAタグを埋め込む

ウェブページがgoogle検索にヒットしないようにする方法として、ヘッダ部分にMETAタグを埋め込むと言う方法があるらしい。
http://www.kukitya.com/otyaken/memo/020316/index.html

Wikiには無数にページがあって、そのすべてにタグを埋め込むのは不可能。だからWikiのrootになる部分に埋め込みたいのですが、それがどこかよく分からない。

検索してみるとありました。
http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B14%2F138

~/www/wiki/skin/pukiwiki.skin.php

に埋め込めば良いらしい。上のサイトにあるように書いてみる。


<head>

<!-- measure of google -->
<meta name="robots" content="noindex,nofollow">
<meta name="robots" content="noarchive">
<!-- measure of google - end -->

</head>

<>と!は全角で書いてます。bloggerがうまく処理してくれないから。使うときは半角に直して書いてください。



この後、Googleのウェブページ削除リクエストのページに行って削除依頼する。
https://www.google.com/webmasters/tools/removals?hl=ja
なかなか削除してくれないけど、削除されれば90日間有効。METAタグが効いてくれればそれ以降も検索にヒットしないことになるが、うまくいくのか分からない。

2009年5月4日月曜日

Linuxサーバーのシステム部分だけRAID1する その2

前の続きです。http://amzn1.blogspot.com/2009/05/linuxraid1.html

sdbから起動できるはずが、途中で止ってしまいました。エラーを見てみると、grubのmenu.listに書いてあるHDDのUUIDが違うと言っているようでした。たぶん、起動ディスクとして認識されているのがsdaだけで、sdbは起動ディスクとして認識されていないようでした。

と言うわけで解決法ですが、/dev/md*をマウントした/mntのgrubのmenu.listを書き換えるのが正しい方法のようです。まず、シングルモードでログインして、

# cd /mnt/boot/grub
# cp -a menu.list
# vi menu.lst

title Ubuntu 8.04.2, kernel 2.6.24-23-server
root (hd0,0)
kernel /vmlinuz-2.6.24-23-server root=/dev/md1 ro quiet splash
initrd /initrd.img-2.6.24-23-server
quiet

title Ubuntu 8.04.2, kernel 2.6.24-23-server (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.24-23-server root=/dev/md1 ro single
initrd /initrd.img-2.6.24-23-server

赤字の所を/boot/grub/menu.lstと同様にして書き換え。途中でkernelのアップデートがあったので、2.6.19→2.6.23になっています。
この様に書き換えてから再起動すると、sdbから起動できます。シングルモードではなく、普通にログインできます。


sdbから立ち上がっているか確認
$ mount | grep md
/dev/md1 on / type ext3 (rw,relatime,errors=remount-ro)
/dev/md0 on /boot type ext3 (rw,relatime)
/dev/md2 on /home type ext3 (rw,relatime)
sdaをRAIDに参加させるために、パーティションタイプを変更

sudo fdisk /dev/sda

パーティションタイプのコマンドはfd。最終的には下のようになる。
Device Boot Start End Blocks Id System
/dev/sda1 1 24 192748+ fd Linux raid autodetect
/dev/sda2 25 146 979965 82 Linux swap / Solaris
/dev/sda3 * 147 2578 19535040 fd Linux raid autodetect
/dev/sda4 2579 3738 9317700 5 Extended
/dev/sda5 2579 3738 9317668+ fd Linux raid autodetect

sdaをRAIDに参加させる。

sudo mdadm /dev/md0 -a /dev/sda1
sudo mdadm /dev/md1 -a /dev/sd3
sudo mdadm /dev/md1 -a /dev/sda3
sudo mdadm /dev/md2 -a /dev/sda5
RAIDに参加させられると、自動的にファイルがコピーされていく。
cat /proc/mdstatで状況を確認できる。

sdbにgrubをインストール。
# grub-install --no-floppy /dev/sdb
# grub
grub> root (hd0,0)
grub> setup(hd0)
grub> root(hd1,0)
grub> setup(hd1)
grub> quit


/boot/grub/menu.lstを書き換え。
vi grub/menu.lst
# kopt=root=/dev/md1 ro
mdadm.confに今の状況を書き加えておく。以前のARRAY *を削除した後、
mdadm --detail-scan >> /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

こうしてシステム部分だけRAIDで動くサーバーが完成しました。


今、メインRAIDがsdbで、あまり嬉しくないので、メインをsdaに変更します。
まず、sdbを外して(物理的な意味で)sdaだけで起動します。その後、一度電源を落とし、sdbを繋いで起動します。そうすると、mdデバイスからsdbが外されてしまうので、

# mdadm /dev/md1 -a /dev/sdb1


でRAIDに参加させなおすと
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda5[0] sdb5[1]
9245312 blocks [2/2] [UU]

md1 : active raid1 sda3[0] sdb2[1]
19534976 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
192640 blocks [2/2] [UU]

unused devices:
となって、メインがsdaになります。

Linuxサーバーのシステム部分だけRAID1する

共有ファイルサーバーのシステム部分だけRAID1にして、起動だけは確実に出来るような設定にする。本当はデータ部分もRAIDにした方が良いのだろうけど、ハードディスクがないのでまた今度。

今手元にあるのは、30GB(sda)と320GB(sdb)のハードディスクです。sdaがプライマリーマスター、sdbがプライマリースレーブとなっています。
まず、sdaにUbuntu8.04LTSをインストール。これは普通に行います。パーティションは下のようにしました。

sda1 /boot 200MB
sda2 swap 1.5GB
sda3 / 20GB
sda5 /home 9GB
/bootを先頭に持ってくるのがポイントだったりするらしい。最も、今のマザーボードではそれほど気にしなくても良いらしいが。
参考http://www.miloweb.net/partition.html

このときに、OSインストール時にsdbのパーティションも切っておきます。

sdb1 raid 200MB /bootとRAID1
sdb2 raid 20GB /(ルート)とRAID1
sdb3 /home/samba 290GB sambaにmount
sdb5 raid 9GB /homeとRAID1

OSインストールが終わったら、以下の手順でRAID1を構築します。
  1. sdbのみ参加させる形のRAID1構築
  2. sdaのデータをsdbにコピー
  3. sdbで起動してsdaをRAID1に参加
  4. sdb外して起動させてみる

1. sdbのみ参加させる形のRAID1構築
まず、mdデバイスを作成しておきます。コマンドはmknod
sudo mknod /dev/md0 b 9 0
sudo mknod /dev/md1 b 9 1
sudo mknod /dev/md2 b 9 2
デバイスドライバ番号は9。マイナー番号はmdの番号に相当するものを付ける。


先に切っておいたパーティションをRAID1に参加させます。使うコマンドはmdadm
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 /bootパーティション
sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2 / パーティション
sudo mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb5 /homeパーティション

mdデバイスとsdbの番号の対応が悪いので、きちんと覚えておかなければ。
最初に1台だけ参加させて、後でもう1台追加するときは、missingと書けば良い。

ファイルシステムの構築
# mkfs.ext3 -f /dev/md0
# mkfs.ext3 -f /dev/md1
# mkfs.ext3 -f /dev/md2

ここまでの設定を/etc/mdadm/mdadm.confに記入しておきます。

echo 'DEVICE /dev/sda* /dev/sdb*' >> /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

2.sdaのデータをsdbにコピー
マシンを再起動してシングルユーザーモードでログインします。立ち上がった瞬間にESCキー。
ログインしたら、mdデバイスをマウントします。今回は/mnt以下にマウントします。

# cd /mnt/
# mkdir ./boot
# mkdir ./home
# mount /dev/md1 /mnt
# mount /dev/md0 /mnt/boot/
# mount /dev/md2 /mnt/home/

sdaのデータを対応する場所へコピーします。procとsysは除きました。

# cp -a bin/ etc/ lib/ opt/ srv/ var/ vmlinuz cdrom initrd media root/ tmp/ dev/ initrd.img sbin/ usr/ ./mnt/ &
# cp -a /home/ ./mnt/home/ &
# cp -a /boot/ ./mnt/boot/ &

# mkdir proc
# mkdir sys


3.sdbで起動してsdaをRAID1に参加
sdaのgrubを修正して、sdbから起動します。

# cd /boot/
# mv initrd.img-2.6.24-19-server initrd.img-2.6.24-19-server-raid-pre
# mkinitramfs -r /dev/md1 -o initrd.img-2.6.24-19-server
cd ./grub/
cp -a menu.lst menu.lst20090503
vi menu.lst

menu.listに追記します。(赤字の部分)

title Ubuntu 8.04.2, kernel 2.6.24-19-server(raid)
root (hd1,0)
kernel /vmlinuz-2.6.24-19-server root=/dev/md1 ro quite splash
initrd /initrd.img-2.6.24-19-server
quiet

title Ubuntu 8.04.2, kernel 2.6.24-19-server
root (hd0,0)
kernel /vmlinuz-2.6.24-19-server root=UUID=b5724689-ee45-46a2-adf9-6790c032efd7 ro quiet splash
initrd /initrd.img-2.6.24-19-server
quiet

…省略

このままだと電源を落としたときにsdbがアンマウントされてしまうので、/etc/fstabに追記します。(赤字の部分)

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/sda3 / ext3 relatime,errors=remount-ro 0 1
/dev/sda1 /boot ext3 relatime 0 2
/dev/sda5 /home ext3 relatime 0 2
/dev/sdb3 /home/samba ext3 relatime 0 2
/dev/sda2 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

/dev/md1 /mnt ext3 relatime,errors=remount-ro 0 2
/dev/md0 /mnt/boot ext3 relatime 0 2
/dev/md2 /mnt/home ext3 relatime 0 2

/mnt/etc/fstabにも追記します。
/mnt/etc$ cat fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/md1 / ext3 relatime,errors=remount-ro 0 1
/dev/md0 /boot ext3 relatime 0 2
/dev/md2 /home ext3 relatime 0 2
/dev/sdb3 /home/samba ext3 relatime 0 2
/dev/sda2 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

これで再起動すればシングルユーザーモードで起動するはずなのですが、起動しませんでした。原因は明日調べます。

参考 このサイトの流れに沿って設定しました。
http://qos.mine.nu/2008/11/raid1-on-etch.html
http://nabe.blog.abk.nu/0301