Screen のログ機能とログファイルの閲覧

参考:http://d.hatena.ne.jp/yanma_4/20080330/1206803656


screen のログ機能は2種類ある。

コマンド 意味
^Z H ログ保存のON/OFFトグル
^Z h これまでのハードコピーを保存する
^Z : hardcopy filename これまでのハードコピーをfilenameに保存する


^Z H は制御文字も込みで入出力を記録する。
^Z h はスクリーンに表示された状態を記録する。


で、常にログを取るためには .screenrc に以下の2行を追加

#自動ログ保存
logfile "/home/username/log/screen-%Y%m%d-%n.log"
deflog on


これで、日付&ウィンドウ毎にログが取られるはず。。。


ついでに bash のPS1をいじくって、時間を表示するようにした。
これで、あとからログを参照とき実行した時間も一発でわかる。

PS1="\n\[\e[0;35m\]\u@\h\[\e[01;31m\](\t)\[\e[00m\]:\[\e[0;33m\]\w\[\e[00m\]\n\$ "

これで、以下のように表示される(実際は色つき)。

koba@javachallenge(01:59:21):~
$ 


ただ、制御文字も記録するので、普通に less で見るととても見辛い。
いろいろ調べると、以下のように-r(-R?)オプションを付けるといいっぽい。

less -R log/screen-20110913-0.log

ーr と ーR の違いはいまいち分からないけれど、ーr だと制御文字を処理するため表示されず、ーR だと制御文字を処理せず表示する感じっぽい。
コピペで他の人に見せるなら ーr のほうがいいのかな。

一般ユーザでSRPMからRPMを作成するための準備

前後するけど


前回の、 screen 4.1 インストール の準備のための設定を。


参考:http://wiki.poyo.jp/read/Writing/misc/linux/rpm_de_php/06.Make%20Simple%20PHP


デフォルトでは、/usr/src/redhat/ でビルドしたりする。
でも、それでは一般ユーザでは Permission Denied だし、root で rpm の作成とかしたくはない。
rpmbuild コマンドはホームディレクトリに「.rpmmacros」が存在するときはそのファイルを参照する。
そこにrpm 作成用ディレクトリを記述してやる。
そして、そのディレクトリ以下にBUILD,RPMS,SOURCES,SPECS,SRPMSディレクトリを作成。


手っ取り早く、以下のコマンドを打つ。

$ echo "%_topdir $HOME/rpmbuild" > ~/.rpmmacros
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

これで、安心して rpm 作り放題。

screen 4.1 インストール

SRPMからインストール。


参考1:http://gajumaru.ddo.jp/wordpress/?p=168
参考2:http://blog.remora.cx/2010/04/gnu-screen-on-centos-54.html


まず準備。
screenのコンパイルには、autoconf-2.6.0 以上が必要。
さらに、autoconf-2.6.0 のコンパイルには、emacs と m4-1.4.7 以上が必要。


というわけで、Fedora15のリポジトリからSRPMをダウンロードしてインストール。
http://ftp.riken.go.jp/Linux/fedora/releases/15/Fedora/source/SRPMS/

$ sudo yum install emacs
$ cd SRPM
$ wget http://ftp.riken.go.jp/Linux/fedora/releases/15/Fedora/source/SRPMS/m4-1.4.16-1.fc15.src.rpm
$ rpm -ivh --nomd5 m4-1.4.16-1.fc15.src.rpm
$ wget http://ftp.riken.go.jp/Linux/fedora/releases/15/Fedora/source/SRPMS/autoconf-2.68-2.fc15.src.rpm
$ rpm -ivh --nomd5 autoconf-2.68-2.fc15.src.rpm
$ cd ../SPECS
$ rpmbuild -ba m4.spec

で、perl-develがないとエラー。
しかし、 CentOS には perl-devel というパッケージはない。


参考3:http://www.02.246.ne.jp/~torutk/linux/centos5/packages.html


上記によると、CentOS では、perlperl-devel 相当のものが入っているとのことなので、autoconf.spec の perl-devel 部分を書き換え。

$ rpmbuild -ba m4.spec

で、またエラー。


参考4:http://d.hatena.ne.jp/taknya/20110720/1311164282


tar が、tar.xz 形式を解凍できないのが問題の様子。
ふたたび、autoconf.spec SOURCE のファイル形式を tar.gz に変更。
さらに、SOURCE フォルダに手動でファイルをダウンロード。
無事、rpm ができたので、アップデート。

$ cd ../SOURCE
$ wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.gz.sig
$ wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.gz
$ rpmbuild -ba m4.spec
$ cd ../RPMS/x86_64/
$ sudo rpm -Uvh m4-1.4.16-1.x86_64.rpm

autoconf も、基本一緒なので、省略。
そして、screen も同じようにインストール。

wget http://ftp.riken.go.jp/Linux/fedora/releases/15/Fedora/source/SRPMS/screen-4.1.0-0.3.20101110git066b098.fc15.src.rpm
rpm -ivh --nomd5 screen-4.1.0-0.3.20101110git066b098.fc15.src.rpm
cd ../SPECS/
rpmbuild -ba screen.spec

pam-devel と libutempter-devel が必要といわれるので、こっちは yum からインストール。

sudo yum install pam-devel.x86_64 libutempter-devel.x86_64
rpmbuild -ba screen.spec
cd ../RPMS/x86_64/
sudo rpm -Uhv screen-4.1.0-0.3.20101110git066b098.x86_64.rpm


インストール完了。
めでたし、めでたし。

Vim7.3インストール

参考1:http://blog.dc-d.jp/?p=549vim7.1をCentOS 4に入れてみた。
参考2:http://d.hatena.ne.jp/janus_wel/20110105/1294213885Vim 7.3 on CentOS 5.5 once more
参考3:http://takus.me/computer/vim/centos-5-vim-install/CentOS 5.5 に最新版の Vim をインストール

 $ wget http://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
 $ tar -jxf vim-7.3.tar.bz2
 $ cd vim73/
 $ mkdir patches
 $ cd patches/
 $ curl -O http://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-289]
 $ cd ..
 $ cat patches/7.3.* | patch -p0
 $ sudo yum install ncurses-devel.x86_64
 $ ./configure --enable-multibyte --enable-xim  --enable-fontset --with-features=huge  --prefix=/usr/local --disable-selinux --disable-gui --without-x
 $ make
 $ sudo checkinstall -R
 $ sudo rpm -e vim-enhanced vim-common
 $ sudo rpm -Uvh --nomd5 vim73-20110829-1.x86_64.rpm

epel リポジトリ追加

参考1:http://d.hatena.ne.jp/t2y-1979/20110430/1304140587
参考2:http://network.station.ez-net.jp/os/linux/update/repository.epel/centos/5.5.asp

$ sudo rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

コマンド一発。
ちなみに、x86_64アーキテクチャの場合。



/etc/yum.repos.d/epel.repo を書き換えてデフォルトオフ。


インストール時は、 --enablerepo=epel で有効化。

Cobbler 環境構築で Fedora15 を自動インストール

Fedora15 で Cobbler 環境構築 の続き。


前回、Fedora15 の distro と profile のインポート及び、ローカルリポジトリの構築が完了。
今回は、 ks ファイルをいじくって、自動インストールの構成内容を記述する。


Fedora15をインポートした時点で、kickstartファイルとして、/var/lib/cobbler/kickstarts/sample_end.ks が自動的に設定されている。
このサンプルを元に書き換えていく。

$ sudo cp /var/lib/cobbler/kickstarts/{sample_end.ks,Fedora15-x86_64.ks}
$ sudo vi /var/lib/cobbler/kickstarts/Fedora15-x86_64.ks
# kickstart template for Fedora 8 and later.
# (includes %end blocks)
# do not use with earlier distros

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disable
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard jp106
# System language
lang en_US.UTF-8
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $default_password_crypted
#add user
$SNIPPET('add_user')
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
# skipx
xconfig --startxonboot
# System timezone
timezone Asia/Tokyo
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
autopart

%pre
$SNIPPET('log_ks_pre')
$kickstart_start
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

%packages
$SNIPPET('func_install_if_enabled')
$SNIPPET('package_lists')
%end

%post
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$kickstart_done
# End final steps
%end

変更点は以下のとおり、

  • firewall 無効化
  • 日本語キーボード
  • en_US → en_US.UTF-8
  • $SNIPPET('add_user')設定(後述)
  • 起動時にGUIログイン画面を表示するように設定( xconfig --startxonboot )
  • タイムゾーン変更
  • %packages に $SNIPPET('package_lists') 追加(後述)

kickstartファイルの設定について
参考1:http://www.linuxmania.jp/kickstart.html
参考2:http://fedoraproject.org/wiki/Anaconda/Kickstart
参考3:http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/ch-kickstart2.html

$SNIPPET('add_user') について

cobbler にはスニペットという機能がある。
kickstart 内の共通部分を抜き出してモジュール化した物。
ここでは、管理ユーザ追加用のスニペットを作成する。

$ sudo vi /var/lib/cobbler/snippets/add_user
user --name=admin --groups=wheel --gecos="Admin User" --iscrypted --password=$1$Q9QuRBrc$N8HNqiAu6/a1N/r.FxzOn/

user オプションについては↑の参考2内に詳しく書いてある。
ユーザ名がadminでwheelグループに所属するユーザを作成。

参考4:https://fedorahosted.org/cobbler/wiki/KickstartSnippets

$SNIPPET('package_lists') について

また、スニペットは設定を共通化した上で、distro、profile、system 毎に設定を上書きできる。
具体的には、以下のようにな順序でスニペットファイルを探してくる。

/var/lib/cobbler/snippets/per_system/$snippet_name/$system_name
/var/lib/cobbler/snippets/per_profile/$snippet_name/$profile_name
/var/lib/cobbler/snippets/per_distro/$snippet_name/$distro_name
/var/lib/cobbler/snippets/$snippet_name

package_lists という共通スニペットを作り、さらにインポートしたディストリ用のスニペットを作る。
# あんまり意味ないけど。

$ sudo touch /var/lib/cobbler/snippets/package_lists
$ sudo vi /var/lib/cobbler/snippets/per_distro/package_lists/Fedora15-x86_64
@admin-tools
@base
@core
@development-tools
@editors
@fonts
@gnome-desktop
@graphical-internet
@hardware-support
@input-methods
@online-docs
@base-x
xfsprogs
mtools
gpgme
lua
emacs
gvfs-obexftp
hdparm
iok
gdm
-evolution
-empathy
-nspluginwrapper
-transmission-gtk
-icedtea-web
-evolution-NetworkManager

インストールするパッケージは、cobbler 環境用に設定した Fedora の ks ファイルから流用。



profile に作成した ks ファイルとリポジトリを登録。
さらに、実際にインストールするシステム毎の(ネットワーク)設定を追加。
今回、IPアドレスをstaticで設定するようにしたので、前回設定したDHCP機能をオフ。
ついでに以下のようにsettingsを変更。

  • IP を DHCP でなくstatic に設定するため、DHCPマネージャをオフ
  • 登録したリポジトリをインストール後、/etc/yum.repo.d/以下に登録しない
  • インストール後 pxe ブートしない
$ sudo cobbler profile edit --name=Fedora15-x86_64 --repos="Fedora15-x86_64 Fedora15-x86_64-updates" --kickstart=/var/lib/cobbler/kickstarts/Fedora15-x86_64.ks
$ sudo cobbler system add --name=<インストールするマシンのMACアドレス> --ip=192.168.135.10 --hostname=test --static=1 --gateway=192.168.135.1 --subnet=255.255.255.0 --profile Fedora15-x86_64
$ sudo vi /etc/cobbler/settings
・・・
manage_dhcp: 0
・・・
pxe_just_once: 1
・・・
yum_post_install_mirror: 0
・・・

参考5:https://fedorahosted.org/cobbler/wiki/ManageDhcp
参考6:http://blog.tnmt.info/2011/07/06/scientific-linux-kvm-with-cobbler-koan/
参考7:http://www.cafechantant.com/trac/wiki/cobbler_install_on_centos5


ちなみに、pxe_just_onceで pxe からブートしなくなった system は以下のコマンドで再び有効にできる。

$ sudo cobbler system edit --name=<name> --netboot-enabled=1


設定が済んだら、ファイル全体を更新。

$ sudo cobbler sync

sudo cobbler profile getks --name=<プロファイル名> でそのプロファイルの kickstart ファイルを確認できる。
そして、マシンを起動。地味に感動。