1  2  3  4  5  6  7  8  9  10  11 (全エントリー数:105)

ubuntu 12.04でBrotherのプリンター複合機を使う ----- 2012年05月18日

[ubuntu]
最近は、FreeBSDはサーバーとして安定稼働させているだけで、あまり書くことがないので、デスクトップ環境として、ubuntu、puppyで色々と試みている。

最近、長年使っていたエプソンのインクジェット複合機が、頻繁に紙送りをミスるようになり、価格コムで安いが売れ筋ランキングが1,2位のBrotherのDCP-J925Nに買い換えた。そこで、ubunntuからも使えるようにプリンターとスキャナーの設定を行ったので、忘備録として下記に書いておくことにした。

1. プリンター
感想としては、とても簡単であった。Windowsより簡単かも知れない。

(1) ドライバーのダウンロード
  • Brotherのホームページで、いきなり「ダウンロード」のページに行ってもWindows系のドライバーのみである。
  • サポートのページに行くと、ページの右のほうに「OS毎の製品対応状況」というリンクがあるのでクリックし、現れたページで「Linux」をクリックする。クリックして現れたページでプリンタードライバーをクリックする(下図参照)。
tool01.png
次のページのDCP-J925Nのドライバーの表で、「簡易インストール」をクリックする(下図参照)。
J925N-01.png
ツールの使用方法が現れるので、ツールをダウンロードする。
tool02.png

(2) インストール作業
home内にtempディレクトリーを作って作業した。この中にダウンロードした「簡易ツール」のlinux-brjprinter-installer-1.0.4-1.gzが入っているものとして、記述を進める。
$ gunzip -d linux-brjprinter-installer-1.0.4-1.gz ・・ツールを解凍する
$ sudo bash linux-brjprinter-installer-1.0.4-1 ・・インストールを開始する
wget http://solutions.brother.co.jp・・・・・/driver.html ・・Driverのリストが取得される。
wget http://solutions.brother.co.jp・・・・・/driver_cupswrapper.html ・・cups driverのリストが取得される。
モデル名を入力してください。->DCP-J925N ・・モデル名を入力する
・インストールしますか[y/N]のメッセージがでるので"y"で答える。
・Driverのファイルをダウンロードして、インストール作業を行なっている画面が続いて、
 Device URIを指定しますか?[y/N] ->のメッセイジが出るので"y"で答える。
下図のようにURIの一覧がでる。
tool07.png
URIに何を選べば良いのか、迷ったが10番を選んでEnterしたら、テスト印刷を実行しますか?[y/N]のメッセージが出たので、"y"を押したら、無事テスト印字ができた。
なお、別の機会で14番を選んでipアドレスを入れても、問題なく動いた。

2. スキャナー
(1) スキャンソフトXsaneのインストール
 スキャンソフトのXsaneをubuntuソフトウェアセンターでインストールする。
(2) ドラーバーのダウンロード
 下図の表のスキャナーのドライバーをダウンロードする。
scanner01.png
(3) ドライバーのインストール
brscan-skey-0.2.1-3.i386.debとbrscan4-0.3.0-3.i386.debの2つのファイルをダウンロードしたら、それぞれに、ダブルクリックすると、ubuntuソフトウェアセンターが起動するので、インストールする。brscan4-0.3.0-3.i386.debの時は、品質がうんぬんとかメッセージがでるが、かまわず無視してインストールする。
(4) 登録
下記のコマンドを打つ。
$ sudo brsaneconfig4 -a name=netscan model=DCP-J925N ip=192.168.1.xxx
nameは自由に付けて良い。modelは正確に、そしてipは、予めプリンター/スキャナーに割り当てたipアドレスである。
なお、ipアドレスは、dhcp任せだと、変わる可能性があるので、staticに割り付けておくことが望ましい。(実は、dhcpで振っていて、一度動いたものが動かなくなり、混乱した)
また、スキャン動作ではUDPの54925を使うので、ファイアーウォールを設定してある場合は、UDPの54925を開けておくこと。

Xsaneを起動してスキャンすると、下記の図のように動作する。(クリックで拡大図)
scanner05.png

Brotherだけかも知れないが、Linux系でも簡単にインストールできるツール類が、提供され始めたと感じる。無線LANで接続しているプリンター/スキャナーでも実に簡単になったものだ。

ただし、Windowsと共存するwubi環境下では、プリンターは問題なく動くが、スキャナーは動かなかった。原因の詳細は知らないが、プリンターのインストールでもライブラリーを延々と読み込んでいたので、スタンドアロン環境とは、違いがあるようだ。
誰か、Linuxに詳しい方がおられたら教えて欲しいと思う。

ubuntu 11.10を入れてから行ったこと ----- 2012年03月29日

[ubuntu]
ubuntu 11.10を古いPCに入れたが、その後幾つかのカスタマイズを施した。

1. USB Boot
古いPCなので、当然USB Bootができない。そこで、grub2を入れてUSB Boot非対応PCの救世主のplop bootを使うこととした。plop bootはWindowsでダウンロードしたのを解凍すると、Linuxというフォルダーができるのでその中のplpbt.binをWindowsのワークグループ接続でubuntuのHomeディレクトリーに持ってきた。それを/bootにコピーする。
# apt-get install grub2
# cp plpbt.bin /boot ← plpbt.binのコピー
# cd /etc/default  ← /etc/defaultに移動しgrubを修正する
# vi grub
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0  ← この行をコメントアウト これで選択画面が標示される
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10

GRUB_GFXMODE=640x480 ← 好きな解像度に設定
好みの背景画を入れる。
# cd /boot/grub                     ← /boot/grubに移動して
# mkdir images       ← 背景画像を入れるディレクトリーを作る
# cp /home/ictures/xxxx.png images ← imagesに画像をコピー
準備が整ったのでgrub.d内の設定ファイルを修正
# cd /etc/grub.d ← /etc/grub.dに移動
# vi 40_custom  ← 40_customにMemory bootを追加し、画像も指定する

menuentry "USB Memory Boot" {linux16 /boot/plpbt.bin}  ← USB Boot指定行を追加

insmod png                           ← 背景画も指定
background_image (hd0,1)/boot/grub/images/xxxxxxx.png   ← 先に入れておいた画像を指定

  set menu_color_normal=dark-gray/black               ← 文字と線色を指定
  set menu_color_highlight=magenta/light-gray

# update-grub
# reboot
これで再起動すれば下図のような選択画面が現れる。

grub_menu.jpg
2. ログイン画面の背景画の変更
起動選択画面の背景画の変更に加えて、ログイン画面の背景画も変更した。
/etc/lightdm内にあるunity-greeter.confを修正する。
# cd /etc/lightdm
# vi unity-greeter.conf
# xft-rgba = Type of subpixel antialiasing (none, rgb, bgr, vrgb or vbgr)
#
[greeter]
background=/usr/share/backgrounds/EOS.jpg  ← この行で画像を変更して指定する
logo=/usr/share/unity-greeter/logo.png
これで、ログイン画面も綺麗になった。
logins.jpg
3. Ubuntu Unityについて
ubuntu 10.04あたりからであろうか、gnomeのユーザーインターフェイスに変わって、Unityというユーザーインターフェイスが提供されてきた。
最初は、画面の小さいMobile用であろうと言われていたが、ubuntu 11.10では標準になっている。確かに初期の頃の欠点はだいぶ改良されて、アイコンなども美しい。
しかし、何かを起動するために3段階必要で、目的のオブジェクトが何処にあるのか直接には分からない。しかも重い。どう考えてもgnomeの方が優れていると思える。画面は綺麗だが、使い勝手は、後退しているように思えてならない。ubuntuは素晴らしいし、終にWindowsに変わる可能性が見えてきたと思っていたのだが、かつての歴史をまた繰り返し、Windowsがのさばりけ、何時かubuntuも消えていたとなるのか心配だ。
余談だがUnityで一番戸惑ったのは、Firefoxを起動した時メニューバーがどうしても現れないことであった。ネットで調べても分からなかった。ずいぶん経ってから、マウスのカーソルを画面の上パネルに近づけるとパネル上に現れるようになっていることに気がついた。(下図参照)
snapshot01.png 当然私は、gnome-desktopをSoftware Centerからインストールした。
インストールして、一旦ログアウトすると、ログイン画面のパスワード入力フォームの右上の歯車をクリックして、何時でも使用インターフェイスが選択できる。
login2.jpg

ubuntu 11.10 でwli-uc-gnp(USB無線LAN) ----- 2012年03月26日

[ubuntu]

久しぶりにubuntuをいじりました。
2.5インチのUSB接続で30GBの小型の外付けディスクにubuntu 11.10を入れました。
これで、ubuntuを起動させたければ、USBから起動すればよいので、元々入っているWindows 7には全く手を付けずにubuntuが楽しめます。起動は多少もたつくが、起動してしまえばなかなか快適です。

さて、以前にBuffaloのUSB無線LANアダプターのWli-uc-gnpをubuntuで使う方法を書いたが、ubuntuの11.10になっても基本的には同じだが、多少異なる点もあるので、改めて書いておくことにしました。

lsusbコマンドで調べると下記のように認識している。
# lsusb
Bus 002 Device 004: ID 0411:019e MelCo., Inc. Buffalo WLI-UC-GNP Wireless LAN Adapter
lsmodで調べると、それらしいmodule名が見つからないので、GW-USMicroN-Gを挿して、modprobeをかけてみた。
# modeprobe rt2800usb
そしてlsmodを打つと
# lsmod

rt2800usb              22222  0 
rt2800lib              48909  1 rt2800usb
crc_ccitt              12595  1 rt2800lib
rt2x00usb              20092  1 rt2800usb
rt2x00lib              48146  3 rt2800usb,rt2800lib,rt2x00usb

rt2800usbが現れたので、 WLI-UC-GNPに差し替えて再度modprobeを打つと、動き出した。

しめしめと、ここからが実際の適用である。

# cd /etc/udev/rules.d
# vi 70-persistent-net.rules
ここで、下記を追加
# USB device 0x0411:0x019e Melco(usb)
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0411", ATTR{idProduct}=="019e", RUN+="/sbin/modprobe -qba rt2800usb"
次に
# cd /etc/modprobe.d
# vi wireless.conf  ← 新規にwireless.confの名前のファイルを作る。そして下記を書き込んでおく。

install rt2800usb /sbin/modprobe --ignore-install rt2800usb $CMDLINE_OPTS; /bin/echo "0411 019e" > /sys/bus/usb/drivers/rt2800usb/new_id

再起動して、問題なく使用できる状態になることを確認した。

FreeBSDをUSBメモリーからインストール ----- 2012年03月13日

[FreeBSD]
FreeBSDのISO-IMAGEのダウンロードのディレクトリーには、CDRやDVDに書きこんで使うisoファイルとともに、USBメモリーに書きこんで使う、xxxxxx-memstock.imgがある。
minisd3.jpg
習慣的にCDRを作成してインストールを行なっていたが、FreeBSD 9.0でUSBからの起動を行なってみた。
使用したのは、左の写真のようにmicroSDメモリーと小さなUSBアダプターである。もちろん、USBメモリーとして造られたのを用いても何ら問題はないし、より一般的なことであろう。
まず、既に立ち上がっているFreeBSDのマシンのUSBポートに接続して、da0として認識されることを確認した。次に、FreeBSD-9.0-RELEASE-i386-memstick.imgをダウンロードして、収納したディレクトリーで下記のようにしてインストル用メモリーを作成した。
# dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=1m
ここで、bs=1mとして、ブロックサイズを1MBとしたが、約1分30秒ほどで作成が完了した。
bs=10240として、ブロックサイズを1KB程度とすると、5分以上かかってしまった。bs=10mとしても、1mの場合とほとんど変わらなかったので、bs=1mぐらいが適していると思える。

ともかく、簡単に作成できる。出来上がったUSBメモリーで、起動してみたがCDRなどより、立ち上がりが迅速でとても感じがよい。DVDドライブのトレーの開け閉めの煩わしさもなく、もっと早くからUSBにすればよかったと思うこととなった。
なお、Windowsでも作成ツールとしてddの機能を実行するdd for Windowsというフリーソフトと、Image Writer for Windowsがあるが、Image Writer for Windowsの方が作成時間も早くお勧めのようである。

GPTでミラー化したHDDの初期化と再組み込み ----- 2012年03月04日

[FreeBSD]
以前に「FreeBSD 9.0のGPTでのミラー構築」を書いたが、HDDの故障に際しての交換作業を行なうことを試みた。現在、ミラーはドライブada0とada1で構成されているが、ada1が故障したとの前提で行うこととした。現実的には、ada1を外して新しいHDDを取り付けることとなるが、新しいHDDの代わりにada1として使っていたHDDを初期化して、再度使うこととし、GPTでミラー化されたHDDを初期化することも合わせて試みることとした。

以下説明のためミラー構成でada0となっていたドライブをdv#0 、ada1となっていたドライブをdv#1と呼ぶこととする。
1. HDDの初期化
dv#1を初期化するため、dv#0のケーブルを抜き、dv#1のみ実装した状態で、FreeBSD 9.0のインストールCDで立ち上げ、Live CDを選択してrootでログインする。
プロンプトが現れたら、HDDの状態を調べる。
# gpart show
=>         34      312581741 ada0   GPT    (149G)
              34                  128     1   freebsd-boot  (64k)
            162      136314880     2   freebsd-ufs     (65G)
136315042        19986412     3   freebsd-swap   (9.5G)
156301454      156280321          - free -   (74G)
このことから、
  • bootレコードは、34セクター目から161セクターまで
  • データー領域は、162 - 136315041
  • スワップ領域は、136315042 - 156301453
となっていることが分かる。最後の156301454以降312581775までが空きである。最後のセクターが表示の1行目の312581741と僅かに異なるが、理由は分からない。
そして、ミラーのメタデーターはそれぞれの領域の最終セクターに書かれているので、境界を跨ぐようにddで消去する。以下のように行った。
# dd if=/dev/zero of=/dev/ada0 bs=512 count=2000
# dd if=/dev/zero of=/dev/ada0 seek=136314000 bs=512 count=2000
# dd if=/dev/zero of=/dev/ada0 seek=156301000 bs=512 count=2000
# dd if=/dev/zero of=/dev/ada0 seek=312581000 bs=512 count=2000
最後の行の空き領域の最後にzeroを書き込む必要はないと思われるが、以前にもHDD全体でgmirrorで使用した痕跡が残っているかも知れず、念のため消去を行った。
なお、bs=100mとして全領域消去したら約42分かかった。150GBの小容量のHDDでも42分だから、大容量HDDだと丸1日かかるかも知れない。

2. ミラーの再構築の事前確認
Shutdownして、dv#0, dv#1とも接続して普通に立ち上げる。
gpartで確認すると、dv#0の情報のみ表示される。
# gpart show
=>         34      156301421 ada0   GPT    (74G)
              34                  128     1   freebsd-boot   (64k)
            162      136314880     2   freebsd-ufs      (65G)
136315042        19986412     3   freebsd-swap   (9.5G)
156301454                      1          - free -   (512B)
gmirrorのステータスを見ると、
# gmirror status
mirror/p1 DEGRADED ada0p1  (ACTIVE)
mirror/p2 DEGRADED ada0p2  (ACTIVE)
mirror/p3 DEGRADED ada0p3  (ACTIVE)
となっていて、すべてDegradeした状態で動いている。

3. ミラーの再構築
ここで、ada1をada0と同じ分割となるように作る。
# gpart backup ada0 > ada0.gpt
# gpart restore -F ada01 < ada0.gpt
再度、gpart showで情報を見ると、ada0とada1が同じ構成で現れる。ただしdv#1の方が容量が大きいので、最後に付いている空き領域が74Gにもなっている。
# gpart show
=>         34      156301421   ada0   GPT    (74G)
              34                  128     1   freebsd-boot  (64k)
            162      136314880     2   freebsd-ufs     (65G)
136315042        19986412     3   freebsd-swap   (9.5G)
156301454                      1          - free -   (512B)

=>         34      312581741 ada1   GPT    (149G)
              34                  128     1   freebsd-boot  (64k)
            162      136314880     2   freebsd-ufs     (65G)
136315042        19986412     3   freebsd-swap   (9.5G)
156301454      156280321          - free -   (74G)
ここで、ada1にbootレコードを書き込む。
boot領域をミラー化してもbootコードだけは、gmirrorの対象外であるため、マニュアルで書いておく必要がある。最初これが分からず、起動しなくて散々悩むこととなった。
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
gmirrorの構成情報をリセットして状態を確認する。
# gmirror forget p1
# gmirror forget p2
# gmirror forget p3
# gmirror status
mirror/p1 COMPLETE ada0p1  (ACTIVE)
mirror/p2 COMPLETE ada0p2  (ACTIVE)
mirror/p3 COMPLETE ada0p3  (ACTIVE)
構成情報がリセットされたので、それぞれの領域のミラーを構築する。
# gmirror insert p1 /dev/ada1p1
# gmirror insert p2 /dev/ada1p2
# gmirror insert p3 /dev/ada1p3
# gmirror status
Name         status     Components
mirror/p1    COMPLETE   ada0p1 (ACTIVE)
                        ada1p1 (ACTIVE)
mirror/p2    DEGRADED   ada0p2 (ACTIVE)
                        ada1p2 (SYNCRONIZING 1%)
mirror/p3    COMPLETE   ada0p3
                        ada1p3 (SYNCRONIZING 20%)
p1はboot領域で64kBしかないので、同期化は一瞬で終わる。
次にswap領域が、比較的小容量なので短時間で完了する。swap領域の同期化が完了すれば、サーバーは使用可能になる。コマンドの入力に対して通常と思える応答を示す。
本当に、HDDが壊れて新しいHDDを接続したときは、3.項のミラーの再構築のみなので、作業は簡単である。

Apacheのログファイルの分割保存 ----- 2012年02月19日

[Apache]
Apacheのログファイルで特にアクセスログは、そのままではどんどん肥大化する。
それで、/etc/newsyslog.confに分割保存の設定をした。
newsyslog.confの最後に下の赤字の2行を追加。
# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/all.log                            600  7     *    @T00  J
/var/log/amd.log                         644  7     100  *     J
/var/log/auth.log                         600  7     100  *     JC

/log/httpd-access.log                   644  12    *    $M1D0  J  /var/run/httpd.pid 30
/var/log/httpd-error.log                644  12    *    $M1D0  J  /var/run/httpd.pid 30
ログファイルの各設定の意味は、
logfilename/var/log/httpd-access.logログァイルの場所。
[owner:group]普通はブランクで、rootになっている。
mode600, 644ログァイルのパーミッション。
count7ログァイルの世代数
size100, * ログファイルをローテイトする容量でKB単位。
なお*は容量を特に指定せず、時刻で切り替えるときに
用いる。
when@T100, @01T05, $M1D0等@T00 は、毎日午前 0:00 にローテーションさせると
いう意味で、@01T05 は、毎日午前 1:05 に$W6D0 は、
毎週土曜日の午前 0:00 に$M1D0 は、毎月1日の
午前 0:00にローテーションさせるという意味になる。
flagsJ, JC, Z等Jはbzip2で圧縮することを意味し、ファイルがないとき
に新たに生成するときはCを付ける(JCと表記)。また、
Bはバイナリーで、Zはgzipで圧縮する。
[/pid_file]/var/run/httpd.pidログの切り出しを行った際にSIGNALを飛ばす先の
プロセスのpidファイルを指定。
[sig_num]30送信するSIGNAL で30はSIGUSR1。
ApcheはSignalを送らないと掴んだファイルを離さない。

Movabletypeを別サーバーに移動/コピー ----- 2012年02月17日

[Movabletype]
Movable typeの最新版は、MT-5.xだが、今でも3.35を使っている。
理由は、MT-3.xの時代に散々カスタマイズを施し、TextのFormatterなどもこのブログの記事のようにコマンドラインの記述に都合が良いように書き直して、Pluginとして使っているからである。さらには、数人の友人がブログページを開いているので、MMIが変わると戸惑うことを恐れるからである。
さて、自宅内で運用しているサーバーが壊れたことを考え、別の予備サーバーを立ち上げ色々なサービスの設定を行っているが、ブログを移設するのに手間取ったので、下記にその顛末を書いておく。

1. ディレクトリーのコピー
(1) mt.cgiの入っているディレクトリーならびにブログの公開ディレクトリーをrsyncなどを使って全て
  予備サーバーにコピーする。
(2) CGIPathの変更
  mt-config.cgiに書かれているCGIPathを予備サーバーのURLに変更する。
例: CGIPath http://abc.myhome.jp  → CGIPath http://xyz.myhome.jp
2. 元のサーバーでブログのDBをdump
# mysqldump --default-character-set=binary -u USER -pPASS BLOGDB > abcblogdb
USER, PASS, BLOGDBは、設定した正しい値を入れること。

3. 予備サーバーでリストア
 (1) 元のサーバーでdumpしたDBデーターをftpなどで予備サーバーにコピーする。
 (2) sedを使ってURL名を変更
   10MB近いデーター量で、数分要した。
# sed -e "s/abc\.myhome\.jp/xyz\.myhome\.jp/g" abcblogdb > xyzblogdb
 (3) DBのリストア
# mysql -u USER -pPASS BLOGDB <  xyzbogdb
ERROR 2006 (HY000) at line 66: MySQL server has gone awayとエラーになる。
66行目でエラーというので66行目を見ると、
LOCK TABLES `mt_author` WRITE; となっている。
ここで、LOCK TABLESとなっているのが悪いのかと思って、UNLOCK TABLESにsedを使って書き換えてみたが、今度は別のエラーになって、構文のエラーなのでマニュアルをよく読めと言ってくる。
ここでお手上げかと思ったが、Netで色々調べたら、mysqlの転送の最大パケット数が不足していることが分かった。
エラーになった行に、たまたまLOCK TABLESの語句があったので、これが原因かと思って混乱してしまった。ともかく、以下のようにpacket数を修正した。
# vi /etc/my.cnf
         ・
 [mysqld]
         ・
max_allowed_packet = 1M → 32Mに修正した
ちなみに、[mysqldump]のセクションでは、max_allowed_packet = 16M となっていた。
mysqlを再スタート
# /usr/local/etc/rc.d/mysql-server restart
ここで、再度DBのリストア
# mysql -u USER -pPASS BLOGDB <  xyzbogdb
今度はエラーなく無事終了した。
4. ブログの再構築
mt.cgiをブラウザで開いて、ユーザー名。パスワードを元のサーバーで用いていたのを使いログインし、複数のブログを順次開いて、公開パスが予備サーバに対応したものになっていることを確認し、サイトの再構築を行う。
blogurl.jpg これで、無事終了である。書くと複雑のようだが、分かってしまうと沢山のページを有するブログであっても短時間で引越しができる。

Majordomoをソースからインストール ----- 2012年02月02日

[mail]
FreeBSD 9.0を入れてportsでMajordomoを入れようとすると、古いのでMailmanを使えと言ってくる。以前はそれでもインストールできたのだが、いよいよportsでは入れられないらしい。Mailmanを使うことも考えたが、MLの運用上色々と細かいカスタマイズを行なっているので、なかなか止められない。
そこで、久々にソースを取ってきてインストールしたのだが、だいぶやり方を忘れていたので、改めてインストール方法を書いておくことにした。

まず、下記からmajordomoのソースのgzipファイルをダウンロードしてくる。
http://www.greatcircle.com/majordomo/
そして、適当なフォルダーで解凍する。
# tar xvzf majordomo-1.94.5.tar.gz
majordomo-1.94.51のフォルダーができる。
majordomoのユーザー名、グループ名を決める必要があるので、下記を追加する。
/etc/passwdに
majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
/etc/groupに
majordom:*:54:
ユーザーIDとグループIDはportsでインストールしたときと同じに54とした。
次にmajordomo-1.94.51に入って、Makefileの編集をする。
# cd majordomo-1.94.51
# vi Makefile
PERL = /usr/bin/perl         ← perlの位置の指定の修正
W_HOME = /usr/local/majordomo ← 自分のmajordomoのインストール先を指定
W_USER = 54          ← user ID
W_GROUP = 54          ← group ID
TMPDIR = /usr/tmp        ← tmpディレクトリーの指定
次にsample.cfをmajordomo.cfとしてコピーし、編集する。
# cp sample.cf majordomo.cf
# vi majordomo.cf
$whereami = "host.example.com"; ← 運用するホスト名を入れる。
#if ( defined $ENV{"HOME"}) {   
#     $homedir = $ENV{"HOME"};
#} else {
#     $homedir = "/usr/test/majordomo";
#}

      $homedir = "/usr/local/majordomo"; ← $homedirの場所を単純に指定

$sendmail_command = "/usr/sbin/sendmail"; ← sendmailの場所の指定

$TMPDIR = "/usr/tmp"; ← tmpディレクトリーの指定
ここで、/usr/tmpを作成し、パーミッションを書き込みを可能にしてMajordomoをインストール
# mkdir /usr/tmp
# chmod 777 /usr/tmp
# make install
そして、wrapperのインストールとテスト
# make install-wrapper
# cd /usr/local/majordomo
# ./wrapper test-config
エラーがでなければ、インストールは終了である。
以降の設定はportsで入れた場合と同じなので省略する。

****インストール後に散々トラブった事****
(1) wrapperの実行権限
インストールして./wrapper config-testは無事に終了したが、FreeBSD 9.0になって、メールの実行権限はrootでなくなったようで、majordomoのwrapperがPermission deniedになってしまう。
この対策として、/etc/groupのmajordomにmailnullを追加する必要があった。
# vi /etc/group
majordom:*:54:mailnull   ← mailnullを追加する
(2) majordomo.plの修正
lists内にtestのディレクトリーを作りowner, groupともにmajordomにして後に、majirdomoにsubscribe testとメールを出すと動作せず、majordomoディレクトリー内のLogに以下のエラーが記録されていた。
ABORT Majordomo@abc.def.jp: HOGEHOGE <hogehoge@abc.def.jp> is not a valid return address.
PackageでMajordomoを入れると正常に動作するので、色々調べたらmajordomo.plに修正が必要であった。
sub main'ParseAddrsの中の記述である。(98行付近から始まっている)
sub main'ParseAddrs {
    local($_) = shift;
    1 while s/\([^\(\)]*\)//g; 		# strip comments
    1 while s/"[^"]*"\s//g;		# strip comments"
    split(/,/);		→ my @parts = split(/,/);        # split into parts
  foreach (@_) {  →   foreach (@parts) {
	1 while s/.*<(.*)>.*/$1/;
	s/^\s+//;
	s/\s+$//;
    }

    @_;    →  @parts;
}
後に調べたら、perl 5.12.以降で修正が必要となったとのこと。マジック変数の@_を使うのが、そもそも間違いだが、以前のperlでは何とか動いていた。
参考URL: http://henrysnotes.org/?p=448

(3) Sequencer
majordomo-1.94.5-jp.patch.gzを/usr/local/majordomoに入れ、日本語化のパッチを行い、resendで動作確認してからsequencerに変えたら動かなくなった。
何のことはない、sequencerの中にもsendmailコマンドに/usr/lib/sendmailをしているところが3箇所あった。/usr/sbin/sendmailに書き直した。
# vi sequencer

$sendmail_cmd = "/usr/sbin/sendmail $opt_m -f$sendmail_sender " .

        print MAIL ">>> /usr/sbin/sendmail -f$sendmail_sender -t\n";

    local(@mailer) = split(' ',"/usr/sbin/sendmail -f$sendmail_sender -t");
なお、Majordomoを日本語化したい場合は、日本語化のパッチ(majordomo-1.94.5-jp.patch.gz)をあてた後に下記のようにjsendmailをつくり、majordomo.cfの$sendmail_commandを書き換える。
# vi jsendmail
#! /bin/sh
/usr/local/bin/nkf -j | /usr/sbin/sendmail $*
# chmod +x jsendmail
# vi majordomo.cf
# $sendmail_command = "/usr/sbin/sendmail"; 
$sendmail_command = "/usr/local/majordomo/jsendmail"; 
jsendmailに書き換えるのはmajordomo.cfのみで、sequencerなどにある/usr/sbin/sendmailは書き換えてはならない。書き換えるとSubjectのMIME変換がなされなくなる。

(4) その他
sequencerに変えたのはメールのタイトルに[Test:00123]タイトル のようにメールの件名に連番をつけたいからであるが、このためmajordomo/lists内にtest.seq(testの名のML名の場合)のファイルを作り、例えば00001のように最初の番号を入れておく。0の数は、連番の桁数合せのためで、この例の場合は5桁になる。

FreeBSD 9.0のGPTでのミラー構築 ----- 2012年01月29日

[FreeBSD]
FreeBSD 9.0では、GUIDパーティション(GPT)がサポートされたが、そこでミラー構成がMLの助けも借りて成功したので、記述しておくことにした。
既に、GUIDEDでFreeBSD 9.0がインストールされているものとする。
なお、画面キャプチャーなどで便利なので、VMWareで構成したが、もちろんこの方法で実環境でも問題なく構成でき、サーバーを立ち上げた。

1. HDDの追加
ミラーにするHDDを追加して、普通に起動し、ログインしてrootで下記の操作を行う
最初にFreeBSDをインストールしたドライブ名と追加したドライブ名を確認する。
# camcontrol devlist
<VMware Virtual IDE Hard Drive 00000001> at scbus0 target 0 lun 0 (pass0,ada0)
<VMware Virtual IDE Hard Drive 00000001> at scbus0 target 1 lun 0 (pass1,ada1)
次にada1をada0と同じパーティションとなるように合わせる。
# gpart backup ada0 > ada0.gpt
# gpart restore -F ada1 < ada0.gpt
内容の確認をする。
# gpart show
=>       34  20971487  ada0  GPT  (10G)
        34            128     1  freebsd-boot  (64k)
          1 62  19920768     2  freebsd-ufs   (9.5G)
  19920930   1048576     3  freebsd-swap  (512M)
  20969506         1981        - free -  (990k)

=>         34  25165791  ada0  GPT  (12G)
              34            128     1  freebsd-boot  (64k)
            162  19920768     2  freebsd-ufs   (9.5G)
   19920930   1048576     3  freebsd-swap  (512M)
   20969506   4196285        - free - (2.0G)
ada1にbootレコードを書き込む。
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
2. ミラーの構築
ここで、shutdownして、インストールCDで起動して、Live CDを選択する。loginのpromptが出たらrootでログインする。パスワードは不要である。(クリックで画像拡大)

mirror01.jpg mirror02.jpg
geom_mirrorをロードし、各スライス毎にround robinで構築する。
# kldload geom_mirror
# gmirror label -vb round-robin p1 /dev/ada0p1
# gmirror label -vb round-robin p2 /dev/ada0p2
# gmirror label -vb round-robin p3 /dev/ada0p3
内容を確認する。
# gmirror status
Name         status     Components
mirror/p1    COMPLETE    ada0p1 (ACTIVE)
mirror/p2    COMPLETE   ada0p2 (ACTIVE)
mirror/p3    COMPLETE    ada0p3 (ACTIVE)
ada1の各スライスをinsertする。
# gmirror insert p1 /dev/ada1p1
# gmirror insert p2 /dev/ada1p2
# gmirror insert p3 /dev/ada1p3
gmirrorのステータスを確認する。
# gmirror status
Name         status     Components
mirror/p1    COMPLETE   ada0p1 (ACTIVE)
                        ada1p1 (ACTIVE)
mirror/p2    DEGRADED   ada0p2 (ACTIVE)
                        ada1p2 (SYNCRONIZING 91%)
mirror/p3    COMPLETE   ada0p3
                        ada1p3 (ACTIVE)
p1とp3が同期化完了で、p2のみ進行中を示している。
全てCOMPLETEになるのを待ち、fstabとloader.confを編集する。
# mount /dev/mirror/p2 /mnt
# cd /mnt/etc
# vi fstab
# Device                 Mountpoint       FStype    Option   Dump   Pass#
/dev/ada0p2          /                       ufs           rw          1           1
/dev/ada0p3         none                  swap       sw          0           0
下記になるように修正する。
/dev/mirror/p2          /                       ufs           rw          1           1
/dev/mirror/p3         none                  swap       sw          0           0
次にloader.confにgeom_mirrorの読み込みを追加。
# cd /mnt/boot
# vi loader.conf
ここで、
geom_mirror_load="YES" を追加
これで終了である。rebootしてHDDから起動して使用する。
Swapも確認しておく。
# pstat -sh  または swapinfo -h
Device                     1K-blocks  Used    Avail Capacity
/dev/mirror/p3         418812   0B  418MB

FreeBSD 9.0のインストール(GUIDパーティション) ----- 2012年01月26日

[FreeBSD]
FreeBSD 9.0がリリースされた。今回のFreeBSD 9.0では、GUIDパーティション(GPT)がサポートされ、それに伴いインストーラーも従来のsysinstallに変えてbsdinstallになった。
GPTがサポートされた理由は、従来のMBRパーティション方式ではHDDの使用最大容量は2TB(テラバイト)なので、一気に8ZB(ゼタバイト、正確にはZiBでゼビバイト:2**70)まで広げようとするもので、インテルが提唱していた。テラ→ペタ→エクサ→ゼタなので、とてつもない値である。
ともかく、bsdinstallでインストールの様相がsysinstallと違うので、VMware下にインストールしてその方法を記述して置くことにした。

ネットからFreeBSD-9.0-RELEASE-i386-disc1.isoをダウンロードし、CDRに焼き、DVDドライブのトレーに入れて起動させた。すぐに起動画面が現れた。右側にデーモン君が描かれている。その後、起動時のメッセージが画面を流れた後に[Install]、[Shell]、[Live CD]の選択画面になるので、[Install]を選ぶ。

bsd9_01.jpg bsd9_02.jpg
次にキーボードの選択を行うか否かの画面になるので[Yes]を選んで[Japanese 106]を選択する。

bsd9_03.jpg bsd9_04.jpg
次にhostnameの入力画面になるので、ホスト名を入れる。特に指定するホスト名がなければtestとでも入れておけばよい。その次にインストールする内容物を選ぶ。今回はDefaulltのままとした。

bsd9_05.jpg bsd9_06.jpg
いよいよパーティションの選択である。Defaultの[Guided]を選んで[Entire Disk]を選んだ。

bsd9_07.jpg bsd9_08.jpg
ada0p1(boot)、ada0p2(utf)、ada0p3(swap)が表れるので、変更の必要がなければ[Finish]を選ぶと確認画面が現れるので[Commit]する。

bsd9_09.jpg bsd9_10.jpg
インストールが始まる。しばらく時間がかかるが、終わると管理者(root)のパスワードの入力となる。

bsd9_11.jpg bsd9_12.jpg
LANドライバーの選択画面になるので、選んでこのホストのIPアドレス、マスク、接続ルーターのIPアドレスを入れる。

bsd9_13.jpg bsd9_14.jpg
DNSの入力画面も現れるので、少なくとも一つは入れて置く。
次は、時刻合わせである。UTCにするかと聞いてくるので[No]を選び、後はAsia→Japanと選択する。

bsd9_15.jpg bsd9_16.jpg
サービスの追加の画面になるので、ntpdをマークした。
crash dumpを有効にするかどうかの画面が出てきたが、crash dumpの使い方を知らないし、disk spaceもたくさん取られるとのことなので[No]を選んだ。

bsd9_17.jpg bsd9_18.jpg
ユーザー追加画面になるので、自分をユーザーとして追加した。現れる画面は、従来から使っていたadduserコマンドと同じである。

bsd9_19.jpg bsd9_20.jpg
インストールが終わり、いよいよbsdinstallから抜ける画面が現れる。Exitを選ぶと、抜ける前にShellを起動して何か修正したくはないかと問う画面が現れるが、修正は普通にログインして行うことにして[No]を選んだ。

bsd9_21.jpg bsd9_22.jpg bsd9_23.jpg
やっと[Reboot]の画面となった。これでインストールは終わりである。


インストールを終えて、少し戸惑ったことは、Remoteからtelnetできないことであった。
そう言えば、inetd.confの設定がなかったと思い、ローカルでログインし、inetd.confを開いてtelnetを有効にして再起動したが、やはりtelnetができない。
調べたら、何のことはない、inetdが起動していない。rc.confにinetd_enable="YES"を追加して再起動し、ようやくtelnetができた。
Pckageの追加は、従来通りsysinstalも使えるので、普通に自分の環境を構築していける。
しかし、現在運用しているサーバーは、gmirrorでHDDをミラー構成にして使っているが、gptでミラー化はややこしそうなので、運用サーバへの適用は当面見合わせることになりそうである。FreeBSD 8.2で困っていないことでもある。
1  2  3  4  5  6  7  8  9  10  11 (全エントリー数:105)


Powered by
Movable Type 3.35