2011年1月28日金曜日

VirtualBox Guesst Addirion インストール

こんばんわ、Cです。

VirtualBoxのゲストOSで仮想化環境に最適化するためのサービスを入れる。

■VirtualBox でVboxGuestAddirions.isoを読み込ませる
※VirtualBoxのコンソール画面から実行すること
#mount -t iso9660 /dev/cdrom /media/cdrom
#/media/cdrom0/VBoxLinuxAdditions-x86.run
#shutdown -r now

実験的に入れてみたけど、VirtualBOXはあくまでもバックアップディスクの保存場所して使うし、
普段持ち歩いてUSBメモリからブートして使うし、入れる必要は無いと思った、あくまでも実験的。

Linux Kernel Complie

Cです。

あたらしめのカーネル使ってみようと思う。

必要なパッケージ:make,bzip2,gcc,build-essential

■linux kernel sourceを頂いてこよう
#cd /usr/src/
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.7.tar.bz2

■解凍しよう
#mv linux-2.6.34.7.tar.bz2 linux-2.6.34.7.tar
↑ なんだろうな、bz2って拡張子をつけているのに、ホントはtarだとよ。
#tar xvf linux-2.6.34.7.tar
#ln -s linux-2.6.34.7 linux
↑行方不明にならないように
#cd linux-2.6.34.7

■コンフィグ
#make oldconfig
↑この後エンターキーに消しゴムのせる。
詳しく調整したい人は消しゴムをのせない。
#make dep
#make clean

■コンパイル
#make bzImage
#make modules
↑長いのでティータイム

■インストール
#make modules_install
#cp /usr/src/linux-2.6.34.7/arch/x86/boot/bzImage /boot/vmlinuz-2.6.34.7
#cp /usr/src/linux-2.6.34.7/vmlinux /boot/vmlinux-2.6.34.7
#cp /usr/src/linux-2.6.34.7/System.map /boot/System.map-2.6.34.7

■モジュール設定
#depmod -a 2.6.34.7
↑とくに変更したいのないので
#mkinitramfs -o /boot/initrd.img-2.6.34.7 2.6.34.7

■grubの設定
#vi /boot/grub/menu.lst

一番下の方に追加
title C-SYSTEM kernel 2.6.34.7
root (hd0,0)
kernel /vmlinuz-2.6.34.7 root=/dev/sda2 ro quiet
initrd /initrd.img-2.6.34.7

リブートして今回のメニューを選んで起動してね。
正常に起動したら
uname -r とかでkernelバージョン確認しとこう。

2011年1月23日日曜日

mysql root パスワード リカバリ

おっす、Cです。

mysqlのrootパスワードを忘れちゃったときの、
リカバリ方法書いておこう。

・mysqlサービスを全部止める
#/etc/init.d/mysqld stop
#ps -ef | grep mysql  <--念の為プロセス無いか確認しとこう




・mysqlサービスをセーフモードで起動
/usr/bin/mysqld_safe --user=root --skip-grant-tables & mysql mysql
これでパスワード無しでmysqlにログインできる状態になっちゃう。

・パスワードをヌルヌルにする。
#mysql -u root -p
Enter password: <-- そのままEnter mysql>update user set password=null where host='localhost' and user='root';
mysql>exit

#/etc/init.d/mysqld restart

あとは新しく設定したパスワードでログイン出来ればOK。
出来なかったら何かが違う。

おわり。

2011年1月21日金曜日

ネットワーク スタートアップ スクリプト

ごきげんよう、Cです。

今日はただのスクリプト覚書。

ネットワークの設定スクリプト、
起動したときに自動的に設定されるようにコンフィグファイルに書いとけばいい?
サーバーだったらそうするべきだけど(場合によるけど)
普通のLANの場合もそうするべきだけど、

USBメモリにLinuxを入れて持ち歩き、あちこちで起動していると、
環境によってネットワークの設定はモチロン変わってくる。

ネットブックなんかで外で使ってたりしても、ころころ変えて使うこともある。

なので各環境ごとにシェルスクリプトにして保存しておいて、
使うときに選んで実行するだけの状態にしている。

/script/network みたいなディレクトリに学校なら「school_network.sh」とか判りやすいファイル名にしよう。

※hostのところをつけたいIPアドレスに変更せよ。
※設定するインターフェイスを自分のインターフェイスに合わせて変更せよ。
※エラーになったら人間任せのシェルスクリプト
※resolv.confも環境に合わせて変更せよ。


#!/bin/bash

host=192.168.1.100
testserver=google.co.jp

ping -c 3 ${host} 1>/dev/null 2>&1
rc=$?

if [ ${rc} -eq 0 ]; then
  echo "IP address ${host} is not liberated."
else
  ifconfig eth0 ${host} netmask 255.255.255.0
  route add default gw 192.168.1.1
  echo -e "search local.co.jp\nnameserver 192.168.1.1" > /etc/resolv.conf

  ping -c 3 ${testserver} 1>/dev/null 2>&1
  rc=$?

  if [ ${rc} -eq 0 ]; then
     echo "This host is active. "
  else
     echo "Network setting error. "
  fi

fi
exit 0

2011年1月20日木曜日

mysql の データ移行手順 (バックアップ)

Cです。

mysqlデータベースの移行手順を書いておく。
バックアップにも使えるが、データベースそのものを保存しているわけじゃない。
出力されたファイルをエディタで開いてみると分かる通り、
移行前と同じ状態にするためのSQL文が詰め込まれている。

・移行元
#cd /dbbkup <--バックアップファイルを保存する場所に移動しておく
#mysqldump -q test_db(データベース名) -u root(mysqlユーザ名) -p test_db_dump(保存ファイル名)
Enter password:(パスワード入力)


・移行先
#mysqladmin create detabase test_db -u root -p <-- あらかじめ同名のDBを作成しておく必要がある
 Enter password:
 #mysql -u root -p test_db < test_db_dump Enter password:


これでデータ移行はOK。
バックアップを定期的に取得して別のサーバに転送していけば、
DBバックアップサーバの出来上がり。ネットワーク設計工夫が必要だけど。

OK。

2011年1月18日火曜日

Squid AD認証

どうも、Cです。

今日はSquidをActiveDirectory認証させてしまう。(透過的に)
何がしたいかというと。

セキュリティ対策などでsquidを導入したけど
ログに残るのはアクセス元IPアドレスなのでPC単位での特定しかできない。
squidアクセス時にベーシック認証をユーザにさせればログに出せるけど、透過的じゃ無いし、
使ってる人へ、「入力してください」って通知しなきゃいけないし。いやだ

せっかくAD環境で認証させているんだったら、ログにユーザ名を出したい。

1、Squidの動いているLinuxをADのドメインに参加させる。
 
・samba3.5.6をソースからコンパイルしてインストールします
ADがWindowsServer2008なのでsamba3.0系では参加できなさそう。(3.2からいけるみたい)
#cd /usr/src
#wget http://www.samba.org/samba/ftp/stable/samba-3.5.6.tar.gz
#chown -R root:root samba-3.5.6
#cat samba-3.5.6/packaging/RHEL/samba.spec | grep BuildRequir
BuildRequires: pam-devel, readline-devel, fileutils, libacl-devel, openldap-devel, krb5-devel, cups-devel, keyutils-devel
↑sambaをコンパイルするのにこれだけの開発パッケージ入れといてねっていうこと

#rpm -qa |grep -e pam-devel -e readline-devel -e fileutils -e libacl-devel -e openldap-devel -e krb5-devel -e cups-devel -e keyutils-libs-devel make
↑必要なパッケージが入っているのか確認
結果:どれも入っていない

#yum install -y pam-devel readline-devel fileutils libacl-devel openldap-devel krb5-devel cups-devel keyutils-lib-devel make
↑どばっとインストール

#rpm -qa |grep -e pam-devel -e readline-devel -e fileutils -e libacl-devel -e openldap-devel -e krb5-devel -e cups-devel -e keyutils-libs-devel makecups-devel keyutils-lib-devel make
readline-devel-5.1-3.el5
cups-devel-1.3.7-18.el5_5.8
keyutils-libs-devel-1.2-1.el5
libacl-devel-2.2.39-6.el5
krb5-devel-1.6.1-36.el5_5.6
openldap-devel-2.3.43-12.el5_5.3
pam-devel-0.99.6.2-6.el5_5.2
make-3.81-3.el5
↑fileutilsが見当たらないが、CentOSはcoreutilsに含まれていてインストールのときに自動的に
入っていた。気が利く

#cd samba-3.5.6/source3
#./configure CC="gcc" CFLAGS="-O2 -march=pentium3" --prefix=/usr/local --localstatedir=/var --with-configdir=/etc/samba --with-modulesdir=/usr/local/lib/samba --with-pammodulesdir=/lib/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/var/run --with-swatdir=/usr/local/share/swat --with-shared-modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2 --with-acl-support --with-ads --with-automount --with-cifsumount --with-cifsupcall --with-cluster-support=auto --with-dnsupdate --with-fhs --with-libsmbclient --with-libsmbsharemodes --with-libtalloc --with-libtdb --with-pam --with-pam_smbpass --with-quotas --with-sendfile-support --with-syslog --with-utmp --with-winbind

#make showlayout ←念のため確認
prefix: /usr/local
bindir: /usr/local/bin
sbindir: /usr/local/sbin
libdir: /usr/local/lib
modulesdir: /usr/local/lib/samba
vardir: /var
mandir: /usr/local/share/man
privatedir: /etc/samba/private
configdir: /etc/samba
lockdir: /var/lib/samba
statedir: /var/lib/samba
cachedir: /var/lib/samba
piddir: /var/run
swatdir: /usr/local/share/swat
datadir: /usr/local/share
codepagedir: /usr/local/lib/samba

#make

#make install
#cd ../packaging/RHEL/setup
#cp samba.log /etc/logrotate.d/samba
#cp samba.pamd /etc/pam.d/samba
#cp samba.sysconfig /etc/sysconfig/samba
#cp {smb.conf,smbprint,smbusers} /etc/samba/
#cp smb.init /etc/rc.d/init.d/smb
#cp swat /etc/xinetd.d
#cp winbind.init /etc/rc.d/init.d/winbind
#chmod 755 /etc/init.d/smb /etc/init.d/winbind
↑起動ファイルとかのコピーとか

#cd ~
#echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
#ldconfig
#ldconfig -p | grep smb

#vi /etc/resolv.conf
search domain.local.co.jp ←ドメインをsearchで書いておく
nameserver 192.168.1.100 ←AD兼DNS
#vi /etc/hosts
127.0.0.1 PROXY-01

#vi /etc/samba/smb.conf
workgroup = DOMAIN
server string = PROXY-01
security = ads
hosts allow = 192.168.1. 127.
realm = DOMAIN.LOCAL.CO.JP ←絶対大文字だから
idmap uid = 10000-11000
idmap gid = 10000-11000
↑sambaのグローバル設定

#LANG=en_US ←ジャパン語ロケールだとauthconfigがうまくできないことがあるよ
#authconfig --enablewinbind --update
# authconfig --krb5kdc=192.168.1.100 --krb5realm=DOMAIN.LOCAL.CO.JP --update
↑/etc/nsswitch.conf と /etc/krb5.conf の設定をしてくれる、別に手動でやってもいいけど

#/etc/init.d/smb status
#/etc/init.d/winbind status
↑サービスが停止していることを確認する! 動いてたらAD参加でおかしなことになるぞ!

#net ads join -U Administrator ←ドメインで参加許可の権限のあるアカウントを指定
Enter Administrator's password:
Using short domain name -- DOMAIN
Joined 'PROXY-01' to realm 'domain.local.co.jp'
No DNS domain configured for proxy-01. Unable to perform DNS Update.
DNS update failed!

↑これで無事にドメインに参加できた。
DNSで自分自身のFQDNの名前が解決できないと怒っているが、
sambaのDNS動的更新機能が有効になっているからだから、問題無し。

Windows Server の ユーザとコンピュータのところにプロキシが追加されていればOK
DNSの前方向と逆方向を登録しておこう。

2、サービス自動起動設定と認証テスト

#/etc/init.d/smb start
#/etc/init.d/winbind start
#chkconfig --add smb
#chkconfig --add winbind
#chkconfig smb on
#chkconfig winbind on
#chkconfig --list | grep -e smb -e winbind
↑問題なく起動したらchkconfig で自動的に起動するように設定

#wbinfo -t
checking the trust secret for domain DOMAIN via RPC calls succeeded
↑RPC callテスト succeededでOK

#wbinfo -u
↑AD上のユーザリストがずらずら出たらOK

#wbinfo -a DOMAIN\\ユーザ名%パスワード
plaintext password authentication succeeded
challenge/response password authentication succeeded
↑どっちもsucceededならOK

これでLinuxからADに認証にいける状態になっていることを確認。

3、squidの認証設定

squidにきたユーザをADで自動的に認証してOKならWebへアクセスできる、NGならdeny。
ここまでの設定はsquid関係無かったので、配下のクライアントは問題なくプロキシ経由で
Webへ出ることが出来ていたが、ここから先は間違えるとアクセスできなくなる。


#vi /etc/squid/squid.conf

auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
↑ntlm_authのパスがソースからとパッケージからの場合違うから注意

acl password proxy_auth REQUIRED
acl passauth src 192.168.1.0/24

#http_access allow localnet ←許可ルールを無効にする localnet はそれぞれ読み替えて
http_access allow passauth password ←認証できたら許可のルールにする
http_access deny all ← それ以外拒否、これは多分もともとあると思う。

logformatのところで %un とか %ulを指定しておく。

:wq

#chmod 770 /var/lib/samba/winbindd_privileged
#chown root.squid /var/lib/samba/winbindd_privileged
#cp -rp /var/lib/samba/winbindd_privileged /var/cache/samba/
↑squidがwinbindの作ったファイルを見れるようにする

/etc/init.d/squid reload

AD認証でログインしているクライアントから適当にwebアクセスする。

#tail -n 50 /var/log/squid/access.log ←アクセスログの場所変えてたらそこ
ユーザ名が表示されてたらOK

おつかれさま。

iSCSI ターゲット(tgtd) 恒久設定

どうも、Cです。

前回やったiSCSIの設定をリブートした後も自動的に設定されるようにしよう。

#vi /etc/tgt/target.conf
[グローバルセクション]
default-driver iscsi ←tgtadmの --lldオプションの引数として渡されるデフォルトドライバ
include /etc/tgt/conf.d/*.conf ←設定ファイルをインクルードできる。(イニシエータごとに分けたり)

[ターゲット定義セクション]
<target iqn.2011-01.storage01:client01="">
<backing-store dev="" lv01="" volgroup00="">
lun 1
</backing-store>
<backing-store dev="" lv02="" volgroup00="">
lun 2
</backing-store>
initiator-address 192.168.1.0/24
initiator-address 192.168.100.1
#write-cache off


#/etc/init.d/tgtd reload ←これでOK
#/tgt-admin --update ALL ←これでもOK

これで恒久設定は以上だ。
次はオンラインにしたりオフラインにしたり

2011年1月17日月曜日

ハノン 1番

こんばんわ、Cです。

ピアノ指にする為にはじめたハノンだが、

1番ですでに停滞中。

bpm=60 から初めて bpm=108 までできるようにしなさいって書いてあるけど
最初bpm=40でやっても上手い事できんかったし、

それから、毎日10分間はハノン1番をやるようにしてて、
先日bpm=80を突破しました。

2番に突入するのはいつのことだか。

2011年1月16日日曜日

USBメモリ Linux バックアップサーバ構築

Cです。

普段、USBメモリにカスタマイズしたLinuxを持ち歩いているのだが。
そう、この前デスクトップの画像見せたやつだ。
そのUSBメモリ Linuxをさらにカスタムしたいと思った。

だけど、バックアップを取っていないので起動できなくなったときとかショックだ。
だからUSBメモリのバックアップを取っていくことにする。

この方法は色々な環境でも応用できるので参考にしてくれ。

バックアップのとり方は色々あるけれども、今回は

・USBメモリのディスクを丸ごとバックアップを取っちゃう
・取得したバックアップを仮想マシンで起動できちゃう

こんな感じ。

最初ESXiでVMを作ってiSCSIターゲットにして
USBブートしたLinuxに認識させて、
そこへDDでディスクイメージを取っていこうかと思ったのだけど、
やってみると、DDコマンドを実行してしばらくしたらESXi全体がフリーズしてしまう!

まだ調査はしてないけど、IO関係のエラーかな。今度調査する。

色々と試した末にたどり着いた方法が、「VirtualBOX」だ!
こいつはホストOSに接続したUSBメモリをゲストOSがしっかり認識してくれる。

■おおざっぱな手順(バックアップ)
1、VirtualBoxインストール

2、VirtualBox上にVMを作成
  ディスクはOSが入るだけを確保しておけばよし。

3、OSインストール
  私はdebianを最小構成でインストールした。
  DDのパッケージも入れておこう。他にも必要なものがあればインストール。

4、いったんVMの電源をシャットダウンして
  USBメモリのサイズに合わせて仮想ディスクをVMに追加する。
  VirtualBOXもいったん終了する。

5、ホストOSにUSBメモリを接続。
  VirtualBoxを起動してストレージのところでUSBメモリの設定をする。

6、VMを起動する。
  fdisk -l とかdmsgなどでUSBメモリを認識しているか確認。
  
7、USBメモリとバックアップ用ディスクのヘッダ、セクタサイズを同じにする。

8、バックアップ用ディスクにUSBメモリ上のパーティションと同じサイズの
  パーティションを作成

9、MBRのコピー
   dd if=/dev/sdb of=/dev/sdc bs=512 count=1

10、パーティションのコピー
   dd if=/dev/sdb1 of=/dev/sdc1 bs=4096

■バックアップディスクの起動確認
1、VMの上のOSを起動するためのglubを起動時にちょこっと変えてやって
  バックアップ用ディスクから起動するように設定してやろう。

■USBへのリストア
 バックアップ用ディスクからUSBメモリへddでコピーする、ただ逆なだけ。

というかカスタマイズをVMでやったほうが効率がいいのかも。

以上、わかりにくいバックアップ手順。

2011年1月9日日曜日

ハノン開始

どうも、Cです。

キーボードの練習に「ピコエルン」やっているのだが、
それに加えて「ハノン」を進めていこうと思う。

ハノンは自らの手をピアノ用の手に鍛錬する為のものみたい、
ほんとに肉体鍛錬みたいでメロディのようなものは無い。

筋肉痛になりそう。