<?xml version="1.0" encoding="utf-8" ?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" 
			xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" 
			xmlns:cc="http://web.resource.org/cc/" xml:lang="ja">
<channel rdf:about="http://nkjma.blog14.fc2.com/?xml">
<title>v.s. FreeBSDの足跡。</title>
<link>http://nkjma.blog14.fc2.com/</link>
<description>FreeBSDを使った各種サーバの構築を綴っていきます。</description>
<dc:language>ja</dc:language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://nkjma.blog14.fc2.com/blog-entry-6.html" />
<rdf:li rdf:resource="http://nkjma.blog14.fc2.com/blog-entry-5.html" />
<rdf:li rdf:resource="http://nkjma.blog14.fc2.com/blog-entry-4.html" />
<rdf:li rdf:resource="http://nkjma.blog14.fc2.com/blog-entry-3.html" />
<rdf:li rdf:resource="http://nkjma.blog14.fc2.com/blog-entry-2.html" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://nkjma.blog14.fc2.com/blog-entry-6.html">
<link>http://nkjma.blog14.fc2.com/blog-entry-6.html</link>
<title>豆知識：メモリ、エンディアン</title>
<description> 記憶装置（プログラムあデータを記憶する装置）・主記憶装置（メモリ）　　⇒高速だが高価なので小容量には、大きく分けてRAM（Random Access Memory）とROM（Read Only Memory）の２種類があり、RAMはさらにSRAM（Static RAM）とDRAM（Dynamic RAM）に分けられる。ともに電源を落とすと中身が消去される。SRAMは電源を入れたままにすれば中身がずーっと残るのに対し、DRAMはしばらくすると消えるので、定期的にリフレッシュし、ま
 </description>
<content:encoded>
<![CDATA[ 記憶装置（プログラムあデータを記憶する装置）<br /><br />・主記憶装置（メモリ）<br />　　⇒高速だが高価なので小容量<br />には、大きく分けてRAM（Random Access Memory）と<br />ROM（Read Only Memory）の２種類があり、<br /><br /><br /><br />RAMはさらにSRAM（Static RAM）とDRAM（Dynamic RAM）に<br />分けられる。<br /><br />ともに電源を落とすと中身が消去される。<br /><br />SRAMは電源を入れたままにすれば中身がずーっと残るのに対し、<br />DRAMはしばらくすると消えるので、定期的にリフレッシュし、<br />また新たに書き込むことで中身を保つ仕組みになっている。<br /><br /><br /><br />これに対しROMは、電源を落としても消えない。<br />起動したときに走らせるプログラムなどは、ここに記憶されている。<br /><br /><br />ROMに記憶されたプログラムで起動した後は、それに続くプログラム<br />をハードディスクからSRAMに読み込み、実行する。<br /><br /><br /><br /><br />メモリにデータを配置する方法として、big endian／little endian<br />という２つの方式がある。前者はPowerPCやSPARCなど、後者はPentium<br />などで使われる方式である。<br /><br />（某サイトより一部引用）2バイト以上のデータ量を持つ数値データを記録したり転送するときには、通常1バイトごとに分割する。これを最下位のバイトから順番に記録/送信する方式がリトルエンディアン。反対に、最上位のバイトから順番に記録/送信する方式をビッグエンディアンという。<br /><br />例えば32ビットの数字<br />a1....a8b1....b8c1....c8d1....d8<br />をメモリに配置する場合、<br /><br />番地　　０　　　１　　　２　　　３<br />big   a1..a8  b1..b8  c1..c8  d1..d8<br />lit   d1..d8  c1..c8  b1..b8  a1..a8<br /><br />となる。 ]]>
</content:encoded>
<dc:subject>FreeBSD</dc:subject>
<dc:date>2005-10-05T02:24:37+09:00</dc:date>
<dc:creator>nkj</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://nkjma.blog14.fc2.com/blog-entry-5.html">
<link>http://nkjma.blog14.fc2.com/blog-entry-5.html</link>
<title>ファイルの文字コードと改行コードを変換</title>
<description> # nkf -Lu -e &quot;windows_file.xxx&quot; &gt; &quot;unix_file.xxx&quot;-Lw: Windowsの改行コードへ変換-j: Shift-JISの文字コードへ変換
 </description>
<content:encoded>
<![CDATA[ # nkf -Lu -e "windows_file.xxx" > "unix_file.xxx"<br /><br />-Lw: Windowsの改行コードへ変換<br /><br />-j: Shift-JISの文字コードへ変換<br /> ]]>
</content:encoded>
<dc:subject>FreeBSD</dc:subject>
<dc:date>2005-08-20T04:07:20+09:00</dc:date>
<dc:creator>nkj</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://nkjma.blog14.fc2.com/blog-entry-4.html">
<link>http://nkjma.blog14.fc2.com/blog-entry-4.html</link>
<title>NATを有効にする</title>
<description> FreeBSDマシンをNATにするためには、カーネルの再構築が必要である。カーネルの再構築は、以下の手順により行う。# cd /usr/src/sys/i386/conf# cp -p GENERIC SERV[
 </description>
<content:encoded>
<![CDATA[ FreeBSDマシンをNATにするためには、カーネルの再構築が必要である。<br /><br />カーネルの再構築は、以下の手順により行う。<br /><br /># cd /usr/src/sys/i386/conf<br /># cp -p GENERIC SERV[<-任意の名前]<br /># vi SERV<br /><br />とし、まず<br /><br />ident  GENERIC<br /><br />の行を<br /><br />ident  SERV [<-上で指定したカーネルイメージ名]<br /><br />とし、さらに以下の２行を書き加える。<br /><br />options IPFIREWALL<br />options IPDIVERT<br /><br />その後、<br /><br /># cd ../compile/SERV<br /># make depend<br /># make<br /># make install<br /><br />とする。ここまででカーネルの再構築は終了。<br /><br />注意としては、ここで再起動するとリモートホストと通信できなく<br />なることが挙げられる。リモートホストから作業をしていた俺は、<br />再起動後、リモートログインできなくなり、ハマりました。<br /><br />そうならないために、再起動を行う前に以下の設定を行います。<br /><br /># vi /etc/rc.conf<br /><br />とし、以下の行を書き加えます。<br /><br />gateway_enable="YES"<br />firewall_enable="YES"<br />firewall_type="YES"<br />firewall_logging="YES"<br />natd_enable="YES"<br />natd_interface="rl0"<br />natd_flags="-f /etc/natd.conf"<br /><br />さらに、<br /><br /># vi /etc/natd.conf<br /><br />とし、<br /><br />dynamic yes<br />same_ports yes<br />deny_incoming no<br />redirect_port tcp 192.168.xxx.xxx:22 xxxxx<br />redirect_port tcp 192.168.xxx.xxx:80 xxxxx<br /><br />と書き込みます。<br /><br />ここまでやって再起動で、完了です。<br /> ]]>
</content:encoded>
<dc:subject>FreeBSD</dc:subject>
<dc:date>2005-08-12T13:41:47+09:00</dc:date>
<dc:creator>nkj</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://nkjma.blog14.fc2.com/blog-entry-3.html">
<link>http://nkjma.blog14.fc2.com/blog-entry-3.html</link>
<title>portsツリーを最新にして、apache-2.1.4をインストール</title>
<description> まず/usr/share/examples/cvsup/ports-supfileを/usr/local/etc/cvsup/にコピーしてきます。cvsupでは、このファイルをもとにportsツリーを最新にすることになります。今回は以下のように編集します。---*default host=cvsup3.jp.FreeBSD.org*default base=/usr/local/etc/cvsup*default prefix=/usr*default release=cvs tag=.*default delete use-rel-suffix*default compressports-all---また、このままでは全てのディストリビ
 </description>
<content:encoded>
<![CDATA[ まず/usr/share/examples/cvsup/ports-supfileを/usr/local/etc/cvsup/に<br />コピーしてきます。cvsupでは、このファイルをもとにportsツリーを最新に<br />することになります。<br /><br />今回は以下のように編集します。<br /><br />---<br />*default host=cvsup3.jp.FreeBSD.org<br />*default base=/usr/local/etc/cvsup<br />*default prefix=/usr<br />*default release=cvs tag=.<br />*default delete use-rel-suffix<br />*default compress<br />ports-all<br />---<br /><br />また、このままでは全てのディストリビューションの情報を持ってきてしまう<br />ので、ドイツ語やフランス語など不要なディストリビューションは持ってこない<br />ように/usr/local/etc/cvsup/supディレクトリいかにrefuseファイルを<br />作成します。<br /><br />前回の記事を引用しますので参考にしてください。<br />> stable-supfileと同様に/usr/share/examples/cvsup/以下から <br />> refuseファイルをコピーしてきます。 <br />> # mkdir /usr/local/etc/cvsup/sup <br />> としてsupディレクトリを作成してから、その中にrefuseファイルを<br />> コピーします。 <br />> このファイルは、その名前の通りcvsupによるソース取得を"拒否"する <br />> パッケージを指定するファイルです。 <br />> そして今回は、doc/ja_*の行とports/japaneseの行をコメントアウトします。<br /><br />ここまで済んだらいよいよcvsupの実行です。<br /><br /># cvsup -g -L 2 /usr/local/etc/cvsup/ports-supfile<br /><br />としてportsツリーを最新にします。<br /><br /><br />終わったら、apache-2.1.4のインストールを行います。<br /><br />アプリケーションをインストールするときは、/usr/ports以下の該当する<br />ディレクトリに移動する必要がありますが、初めてインストールするアプリ<br />などは、どのディレクトリにあるのかわからないことがあります。<br /><br />そういった場合のために、whereisコマンドがあります。<br />例えば今回インストールするapache-2.1.4の場合、<br /><br /># whereis apache21<br /><br />とすると、<br /><br />apache21: /usr/ports/www/apache21<br /><br />という出力がなされるはずです。しかし、最新のバージョンの番号がわから<br />ないときは、うまくいかないことがあります。<br />一番確実なのは、<br /><br /># find /usr/ports -name "apache*"<br /><br />とするか、locateコマンドを使うことです。<br />locateコマンドは、ファイル情報のデータベースから即座にファイルの場所を<br />出力するコマンドですが、このコマンドを使うにはデータベースを作らねば<br />なりません。そのためには、<br /><br /># /usr/libexec/locate.updatedb<br /><br />として、ファイル情報データベースを作る必要があります。<br />また、これはあくまでデータベースのため、更新しないと古くなり、<br />新しく追加されたファイルが反映されなくなります。<br />そのため、locateコマンドを頻繁に使うようでしたら、定期的に<br />データベースを更新する必要があります。これについてはまた改めて書きます。<br />データベースの作成が終了したら、<br /><br /># locate apache | grep "/usr/ports"<br /><br />とします。<br /><br /><br />さて、話を戻してapacheのインストールを行いましょう。<br /><br /># cd /usr/ports/www/apache21<br /><br />とし、<br /><br /># make<br /><br />します。すると、apache-2.1.4本体と、それと依存関係にあるファイルを<br />ports-supfileに書いたcvsupサーバから取得し、コンパイルを始めます。<br />今回は、以下のエラーを吐いて止まってしまいました。<br /><br />---<br />===>  Installing for perl-5.8.7<br />===>   Generating temporary packing list<br />===>  Checking if lang/perl5.8 already installed<br />===>   An older version of lang/perl5.8 is already installed (perl-5.8.6_2)<br />      You may wish to ``make deinstall'' and install this port again<br />      by ``make reinstall'' to upgrade it properly.<br />      If you really wish to overwrite the old port of lang/perl5.8<br />      without deleting it first, set the variable "FORCE_PKG_REGISTER"<br />      in your environment or the "make install" command line.<br />*** Error code 1<br />---<br /><br />どうやらperl-5.8.7をコンパイルしようとしたが、古いバージョンのperlが<br />既にインストールされていることが原因でした。<br />perlのバージョンに特にこだわりはないので、言われた通り古いバージョンを<br />deinstallして新しいバージョンをinstallします。<br /><br /># cd /usr/ports/lang/perl5.8<br /># make deinstall<br /><br />とし、古いバージョンをdeinstallした後、もう一度<br /><br /># cd /usr/ports/www/apache21<br /># make<br /><br />とします。今度はpythonのオプションについて聞かれましたが、<br />OKと答えて進みます。<br /><br /><br />さて、インストールが済んだので、さっそく起動してみます。<br /><br /># /usr/local/sbin/apachectl start<br /><br />しかし、下のようなエラーが出て失敗しました。<br /><br />[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter<br /><br />色々調べてみると、accf_http.koというカーネルモジュールがないために<br />出るエラーだとわかりました。（参照：<a href="http://www.unpush.net/modules/bwiki/index.php?Computer%2FFreeBSD%2Fapache%A4%CE%C6%B3%C6%FE" target="_blank">こちら</a>）<br /><br /># kldload /boot/kernel/accf_http.ko<br /><br />とすると、上記のエラーは出なくなりました。<br /><br />しかし、psコマンドでプロセスを確認してもhttpdの文字は<br />ありません。なぜか起動していない模様。。<br />エラーメッセージも特に吐いてくれていませんので、<br />これには困りました。必死に調べてみると、unique_id_moduleという<br />モジュールのロードが原因であるとわかりました。<br /><br />httpd.confでこのモジュールをロードするように設定している<br />行をコメントアウトし、再度起動を試みます。<br /><br />すると、とりあえず無事起動できました。<br /><br />デフォルトのhttpd.confでは、他にも沢山のモジュールを<br />ロードするように設定されており、各自の要求に応じて不必要な<br />モジュールのロードをやめることにより、性能向上なども<br />望めるようです。<br /><br />各モジュールについての簡単な説明は<a href="http://www-6.ibm.com/jp/servers/aix/developer/special/java/02-2.html" target="_blank">こちら</a>にありました。<br />詳細な説明はapacheの<a href="http://httpd.apache.org/docs-2.1/ja/mod/" target="_blank">本家HP</a>にあります。<br /><br />説明を読んでみましたが、今回起動しなかった理由はよく<br />わかりませんでした。今回のHTTPサーバは同時に大量なアクセス<br />が発生することはないと考え、ひとまず放置するとします。。。<br /><br />最後に、他のホストのWebブラウザから、今回立てたHTTPサーバ<br />のホストIPアドレスにアクセスし、テストページが表示されている<br />ことを確認します。 ]]>
</content:encoded>
<dc:subject>FreeBSD</dc:subject>
<dc:date>2005-07-10T16:39:49+09:00</dc:date>
<dc:creator>nkj</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://nkjma.blog14.fc2.com/blog-entry-2.html">
<link>http://nkjma.blog14.fc2.com/blog-entry-2.html</link>
<title>FreeBSD 5.4-Releaseに最新パッチをあてる</title>
<description> さて、FreeBSDはパッチという形で日々更新されています。それに対してインストールしたばかりのFreeBSD 5.4-Releaseはパッチレベル0、すなわち丸裸の状態ということになります。そこでまず、インストールしたFreeBSDを最新の状態にします。すなわち、最新バージョンのパッチを当てます。今回は、cvsupを使って、このOSのアップデートを行います。cvsupとはネットワーク経由でソースを更新するためのツールです。手元のソースとの差
 </description>
<content:encoded>
<![CDATA[ さて、FreeBSDはパッチという形で日々更新されています。それに対して<br />インストールしたばかりのFreeBSD 5.4-Releaseはパッチレベル0、<br />すなわち丸裸の状態ということになります。<br /><br />そこでまず、インストールしたFreeBSDを最新の状態にします。<br />すなわち、最新バージョンのパッチを当てます。<br /><br />今回は、cvsupを使って、このOSのアップデートを行います。<br /><br />cvsupとは<br />ネットワーク経由でソースを更新するためのツールです。<br />手元のソースとの差分のみ入手するため、効率が良く、<br />任意の時点のソースに更新することができます。<br /><br />まずはこのcvsupがきちんと(?)インストールされているか確認しましょう。<br /><br /># which cvsup (-> /usr/local/bin/cvsupと出力されればひとまずOK)<br /># cvsup -v (-> Software version: SNAP_16_1h)<br /><br />次に、cvsupを行うにあたって必要な設定を行います。<br />対象となるファイルは、/usr/local/etc/cvsup/stable-supfileと<br />/etc/make.confです。前者はインストール時にはありませんので、<br />/usr/local/etc/cvsupディレクトリを作成してから<br />サンプルである/usr/share/examples/cvsup/stable-supfileを<br />そのディレクトリにコピーしましょう。<br /><br />このファイルを、今回は次のように編集しました。<br /><br />---<br />*default host=cvsup2.jp.freebsd.org<br />*default base=/usr/local/etc/cvsup<br />*default prefix=/usr<br />*default release=cvs tag=RELENG_5_4<br />*default delete use-rel-suffix<br />*default compress<br />src-all<br />---<br /><br />RELENG_5_4としてるのは、FreeBSD5.4 CURRENTの最新バージョンに<br />したいからです。<br /><br />FreeBSDにはFreeBSD-STABLEとFreeBSD-CURRENTがあり、前者が<br />安定志向、後者が先端開発と位置づけられています。<br />RELENG_5とすると前者、RELENG_5_xとすると後者の最新版のソースを<br />ダウンロードしてきます。<br /><br />（RELEASE版は、基本的にFreeBSD-stableから定期的に作られる<br />スナップショットだそうです）<br /><br />またbase=/usr/local/etc/cvsupとは、更新時間とかを記録する状態<br />ファイルを置く場所の指定だと思ってよい。このファイルは、<br />効率のため置かれる。この状態ファイルが　$base/sup/　以下に生成される。<br />（<a href="http://www.doi.cs.keio.ac.jp/~junchan/wiki/index.php?FreeBSD%2Fcvsup%A4%A2%A4%C9%A4%D0%A4%F3%A4%B9#content_1_3" target="_blank">このサイト</a>を参考にさせていただきました）<br /><br />prefixはソースの場所を示します。今回は/usr/srcにソースがあるので<br />上記のように設定しました。<br /><br /><br />次に、/etc/make.confの編集です。ここは色々な設定があるようなので<br />別のサイトも参考にしてください。<br /><br />---<br />NO_GAME=true<br />SUP_UPDATE=	yes<br />SUP=		/usr/local/bin/cvsup<br />SUPFLAGS=	-g -L 2<br />SUPHOST=	cvsup2.jp.FreeBSD.org<br />PORTSSUPFILE=  /usr/local/etc/cvsup/ports-supfile<br />SUPFILE=	    /usr/local/etc/cvsup/stable-supfile<br />MASTER_SITE_BACKUP?=ftp://cvsup2.jp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/<br />MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}<br />---<br /><br />#カーネルを別名で再構築している場合は次の一行を加える。<br />KERNCONF=<カーネル名><br /><br /><br />おっと、もう一つやるべきことがありました。<br />それは/usr/local/etc/cvsup/sup/refuseの編集です。<br />上記のstable-supfileではsrc-allとしているため、このまま<br />cvsupすると、gameなど不要なソースも持ってきてしまうことになります。<br /><br />そこで、stable-supfileと同様に/usr/share/examples/cvsup/以下から<br />refuseファイルをコピーしてきます。<br /># mkdir /usr/local/etc/cvsup/sup<br />としてsupディレクトリを作成してから、その中にrefuseファイルをコピーします。<br /><br />このファイルは、その名前の通りcvsupによるソース取得を"拒否"する<br />パッケージを指定するファイルです。<br /><br />そして今回は、doc/ja_*の行とports/japaneseの行をコメントアウトします。<br /><br /><br />それではいよいよcvsupを実行してソースを取ってきましょう。<br /><br /># mkdir /usr/local/etc/cvsup/log<br /># cd /usr/local/etc/cvsup<br /># cvsup -g -L 2 stable-supfile > ./log/cvsup.log<br /><br />結構時間がかかりますので、終わるまでしばらく待ちます。<br /><br />終わったら、<br /><br /># cd /usr/src<br /># make -j4 buildworld > /var/log/buildworld.log<br /># make -j4 buildkernel > /var/log/buildkernel.log<br /># make installkernel > /var/log/installkernel.log<br /># make installworld > /var/log/installworld.log<br /><br />を順番に行います。確実に行うには、その都度logを確認してください。<br />buildworldには特に時間がかかります。（１時間以上と見てください）<br /><br />終了後、再起動して<br /><br /># uname -a<br /><br />でパッチレベルを確認します。 ]]>
</content:encoded>
<dc:subject>FreeBSD</dc:subject>
<dc:date>2005-07-10T01:56:46+09:00</dc:date>
<dc:creator>nkj</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
</rdf:RDF>