PepoLinuxのreadme

********* PepoLinux README since 2000.12.21 to 2011.5.30 Version:0.47 Copyright IZAMUKARERA *********
最初に
世界に唯一これだけ!?このサイズでこれ程の高機能を実現したLinuxシステムは他にはない!?。(^o^;;//PepouSo~//
XWindowを捨てネットワークとサーバーに徹した1CDLinux、USBメモリやWindowsXPのHDからも起動できます。
初期設定で web、mail、dns、snmp、mrtg、webalizer、等々が立ち上がっていますので、直ぐにサーバーの実験が出来ます。
FDやUSBメモリより設定を読み込ますことが出来るので、CDROMを持ったPC-AT機であれば目的に合わせて色々なサーバーを作れます。メモリが256MB以上あれば、CDROMからのローディング時間が少々かかりますが全てオンメモリで動作します。 容量の関係でinfo、doc関係と動作・立ち上げに不要なものは削っていますがmanは削っていません。

初期状態で立ち上げ時にメモリの容量を計算して十分であればオンメモリで動作します。立ち上がった後は、 CDROMを取り出し別のマシンにセットして使えますので、一枚のCDでも何台ものサーバーを作れる、 ちょっとPepoLinuxのおりこうさんな特徴です。
メモリに余裕があれば、yumを使ったupdateやプログラムをmake、install出来ます。立ち上がったら試しに /usr/src/epicon-4.7.tar.gzをhomeディレクトリにコピー、makeしてみよう。

128M以下のメモリではsmall-memoryモードを自動選択、64Mでも起動が出来るので、VitualPC、VitualBOX、VMwareなど仮想化でネットワークや多くのLinuxサーバを検証することが出来ます。

起動と終了方法
1.IPアドレスを必ず設定し、CDROMからブート出来るようにBIOSの設定をします、CDROMをセットし電源ON又は再起動操作をします。
2.起動の画面でメモリが少ない場合は、3番目のsmall-memory・・・・を選択する。 128Mbyte以下のメモリではsmall-memoryを自動選択し最低限のサービスを起動して立ち上がります(標準はメモリの容量を自動的に判断しメモリへ展開します。)
3.loginプロンプトが表示されたら、ユーザー名とパスワードを入力します、rootとpepo1~4のパスワードは pepolinux です。
4.終了させる場合には reboot 又は Alt+Ctrl+Delete キーにてBIOS画面の表示中にCDROMを取り出します。
5.WindowsXPへインストールした場合HDDブートできます。Windows起動選択画面でGNU GRUB for PepoLinuxをカーソルキーで選ぶだけです、次画面に切り替わりるとEnterキーを入力するか30秒待てば自動的に起動します。デフォルトではWindows側が有効です。

OSがWindows2000、XPのCDROMの無いPCは、ネットワーク経由でHDDへインストールしてVer2.6系Kernelを使いHDDから立ち上がります。USBメモリから起動可能のPCはUSBメモリへインストールして使えます。
USBメモリへのインストールは、一旦CDROMから起動させpepolinuxから、『pepousb-install』コマンドでインストールします。

最近、ユーザー先でメンテナンス用に接続したWindowsPCからウイルスを感染させ、訴訟問題にも発展するケースが発生してます。
しかしPepoLinuxはLinuxですし、CDROMの為ウイルスが感染する危険も非常に少ないです。
万が一、感染しても再起動すれば初期状態、CDROMにはどんなに頑張ってウイルスは感染出来ませんから、他のユーザーへ伝染させる心配はありません


インストール方法
CDROMの\READMEフォルダからstartup.sをC:\peplinux\へコピーします。後はC:\peplinux\startup.sを自分の環境に合わせて編集して下さい。 (このファイルがC:\peplinux\startup.sに無くてもCDROMにあるデフォルトの設定で立ち上がり、ドライブD,Fでも\peplinux\startup.sがあれば有効ですが
USBやFDに\startup.sがあると優先されます。)

PepoLinuxをWindows 2k、XPへインストール出来ます。
ハードディスクのパーティションを切るなど操作が不要で、 Windows 2000,XP からCDROMのPepo_installer_W2k.batをクリックのみです。・・・確認なし、いきなりインストールします。
以前起動していたものがある日、PepoLinuxが起動しなくなります。<--WindowsのAuto Defrag機能でインストールした時のgrubの設定と相違する為らしく、この場合は、再度HDの\peplinux\Pepo_installer_W2k.batをクリックします。
それと、インストール時にboot.iniを書き換える為AntiVirusソフトで保護され失敗する場合があります。この場合は、インストール時にAntiVirusソフトを停止します。
もし、HDDからのPepoLinuxが起動しなくてもCDブートすれば、ブートローダだけCDを使い後はHDDから起動するはずです。
新しいバージョンのCDROMから起動する場合、HDDのイメージとCDROMの内容が一致しない為、不具合が発生します。
この場合、Uninstaller_W2k.batで一旦HDDからアンインストールして、再度Pepo_installer_W2k.batをインストールします。
注)この作業は Windows の基本部分(boot.ini)を変更しますので危険です、ご自身の責任で作業を行なって下さい。 万一トラブルが発生しても作者が責任を負うものではありません。


アンインストール方法
PepoLinuxをWindows 2000、XPの起動メニューを自動でアンインストール出来るようにしました。
Uninstaller_W2k.batをクリックします。c:\boot.iniからC:\boot\grub\stage1="GNU GRUB for PepoLinux"を削除し c:\bootフォルダも削除します。
但し、C:\peplinuxは手動で削除して下さい。
手動で行う場合はc:\boot.iniをプロパティで読み取り専用を解除した後メモ帳で開きます。 C:\boot\grub\stage1="GNU GRUB for PepoLinux" を削除し再起動すれば、 起動画面からGRUBメニュー消え通常のWindowsの起動に戻ります。

ネットワークに関する問題であれば、いつでも、どこでも、CDROMから起動可能なPC-ATにポケットからちょっと取り出し、立ち上げて即ソリューションなんちゃって、ちょーかっこいいPepoLinuxです。
FOMA携帯電話とUSB接続ケーブルがあれば、世界中の何処でもリモートハンドでネットワーク機器のリモートメンテナンスが出来ますよね。

開発目標として、MS-Windowsで出来ることはMSでLinuxで出来ることはLinuxで、便利なものは便利に使え、無いものは作れ、良いものが出来たらContribution、そして情報は共有せよ!お互い助け合い。 なんてちゃって、大それたことは言えませんがまーそんなコンセプトです。

名前について
ピポ・リナックと読みます、当初 PinLinux と名付け様としたが検索エンジンで某rpmで有名なサイトに既にあった為 Pipolinux と名付けました、しかし筆者がたまたま米国へ出張した時に Pipolinux をどう発音するか尋ねたら、パイポライナックスと発音するとの事でした。日本でリナックスがライナックス、Pipo がパイポとの事でスペルを PepoLinux へ改めUPとなりました、関西生まれの関西育ちのPepoLinux どうか可愛がって下さい。

Pepoとひらめきました(作成した本来の目的)
普通Linuxのミニrootシステムを作成する時、Windows、Linux等のOSがHDから起動出来ない時などレスキュー用に起動出来る物を考えるのですが、Pepo的発想はWindowsが正常に稼動している状態より、設定ファイル一つで簡単に誰でも?使えるLinuxを目指した結果、ネットワーク機器のメンテナンスをされている方が泣いて喜ぶ?パッケージソフトとなりました。
OSやコンフィグがトンデしまって、ハードは生きていてもソフトがなければただの電気を食う箱や、センプーキになってしまった『おなくなりになった』症状の場合でも大丈夫です。そうですネットワーク機器のリモートメンテナンス用に作成しました。
ノートPC+携帯電話+PepoLinux+接続ケーブルと最後にこれをセットUPしてもらえる人さえいれば、世界中のルータやネットワーク機器を生き返らせる事が 出来てしまうとんでもないパッケージソフトです。。そうです、ネットワーク機器の119番ぴーぽー、ピーポー PepoLinux です。
使う前の約束事
本パッケージソフトは完全無保証です。使用して何が起こっても責任を持てません必ず使用する側、各自の責任においてお使い下さい。ハードディスクが破損しても責任は持てません。最悪の事を考え事前に Windows の緊急起動FDとエディタの御準備だけは必ず行っておいて下さい。

PepoLinuxの特徴
最大の特徴として起動前にC:\peplinux\startup.sをMS-Windows上のワードパッド等で、あの複雑なlinuxの環境を簡単にカスタマイズが出来ます。
設定ファイルには日本語で詳しく解説してます、『#』のコメントを外すだけで各種サーバーやアプリケーションが起動します。

1500を超えるコマンド搭載
筆者が厳選したネットワークコマンドがてんこもりです。又筆者のオリジナル実験コマンドも/usr/local/bin/pepoXXにあります。
デフォルトでapache、dns、mail、pop、ftp、ssh、mrtg、等々が立ち上がっていますので直ぐにネットワークのデモやテスト環境が整います。
又各種ツール類tethereal、netwox、nmap、peposnmpon、pepopktgen等々によりネットワーク負荷試験や検証が出来ます。

pepolinuxはあまりセキュリテイは厳しくありません。セキュリテイよりまずは、各サーバー、ルーター、ブリッジ機能を簡単に動かしてネットワークとLinuxの技術を体験的に習得出来るように開発しています。もちろんiptablesipchainsebtables等によるファイルタリング機能を使えばセキュリテイの強化も行えますが、常時サーバーで稼動させる用途には適していません、その点はこれだけのサイズと簡単操作のメリットとのトレードオフです。

これが本命!モバイルPCに最適、リモートコンソールになります。ルーター等のSEの方やCEさんに最適です。現場で困っているCEさんへ いざとなったら携帯電話+携帯カードでSEさんのリモートで支援が出来てしまいます。

CDROMブートなのでHDDを必要としない、その為linuxをお試しで使ってみたいが、HDDの別パーテションが用意できず、インストール出来ない場合や、ちょっとお試しなりたい方、ネットワーク、ルータ、サーバーに興味のある方に最適です。

mrtg、peposnmponを利用してルータやLinuxマシンのSNMPのデータやWebログの収集と集計したデータをWebで表示します。初期状態では自サーバーの収集とデータを表示しています。

CentOS5.4のバイナリー をベースとしています。Windowsから設定を簡単にいじれる様に日本語でコメントを入れ、簡潔で分かり易くしています。 shellはbashなのでヒストリー、ファイル名補完等コマンド入力支援がとても便利です。

dhcptftp、ftp、dns、telnet、route、pppsnmp、 www、vtun、mail等各種unixネットワークのサーバー機能も充実、# の コメントを削除するだけですぐ起動する様にしています。 C:\peplinux\startup.s のスクリプトをよく読んで下さいこの設定ファイルで一応動くと思います。

ルーターにもなります、ネットワークカード2枚差しにて、IPマスカレードルーターやブリッジにもなります。

Tips
残念ながら最新のノートPCには対応していません一世代古いPCを対象としています。但しメモリは128MB以上必要です。 ノートPCで PCMCIA を2スロット持ち、LANカードと携帯電話とUSBモデムを用意すると最大限の機能が引き出せます。⇒リモートハンドが本来の開発目的。

起動後ファイルをDISKをREADする必要がある時はHDDをマウントすれば、/dos/~ よりwindows98・XPのVFATやNTFSのファイルはリードオンリーで参照可能です。
ログや立ち上げ後に変更した設定内容等はRAMディスクの中です。 shutdown や電源OFFで全てなくなります。設定の保存が必要な場合、FDやUSBメモリにセーブする必要があります。
USBメモリやFDにセーブする場合
# mount /dev/hda1 /mnt/usb    →fdにセーブする場合は→# mount /dev/fd0 /mnt/fd 
# cp startup.s /mnt/usb
# sync
# umount /mnt/usb

epiconはずばりLinuxで使える通信ソフトです。リモーハンドのコンソール使います、リモート側に接続されたNW機器をシリアル経由で操作する為に開発しました。
Cisco製のスイッチやルータなど、シリアルポートでConfigを設定する機器はメーカーや機種を問わず使えると思います。
rootやpepoのユーザー名でログイン後は下記コマンドで立ち上げます。
epicon →デフォルトでcom1ポート、9600bps、8bitノンパリティです。
epicon -l /dev/ttyS0 -s 9600 →上記と同じ(8bitノンパリティは変更不可)
epicon -n 127.0.0.1:23 →telnetで接続できます
ルータのシリアルコンソールとして重要なキャラクタとCR送信デレイが使えるので安心してコンフィグのコピー&ペーストが出来ます。
epicon -d 20 -D 50 -n 127.0.0.1:23 →キャラクタデレイ:20ms CRデレイ:50ms
epicon の終了方法
エンターキーを何度か押下後 ~. 『半角のチルダとピリオド』を入力すると終了します。

ファイル転送
epiconが立ち上がっているときに、リモート側へ何らかのファイル転送を行う時(ルーターのOSイメージやコンフィグ等)、ローカル側より zmodem プロトコルにてファイルを送信します、epiconがzmodemプロトコルを自動的に判断してUPロードします。(ダウンロードは、sz "ファイル名" でローカル側でZMODEM受信を起動)

ppp環境
携帯電話経由は電波の良い状態でお使い下さい。もちろん有線モデムだとそれなりのパフォーマンスが得られます。(以下にWindowsクライアントの設定を方法書きます。)
添付ファイルのppp.scpをWindows98のProgram Files\Accessories\にコピー。XPはwindows\system32\ras\にコピー
ダイヤルUPの新しい接続にて ppp を作成する。
プロパティでスクリプト処理にてファイルの編集より ppp.scp のスクリプトファイルを起動するようにしてください。
WindowsXPは、プロパティ→セキュリティ→スクリプトを実行する→windows\system32\ras\ppp.scpを選択して下さい。
ダイヤルUP接続時のユーザー名、passwd はスクリプトファイルが優先される為無視されます。IPアドレスはサーバーが、割り当てたアドレスを使用するに設定。
以上でダイヤルUPが完了すれば後はインターネット、イントラネットも基本的にはアクセス出来るはずです。リモート側のさらにリモート側のルータのメンテナンスにも使えると思います。(IPマスカレードを使用する事)

上記方法でダイヤルインが出来ない場合は以下の方法を試します。
WindowsXP(ダイヤルアップ側)の準備
前記とは違うダイヤルアップ環境を、新しい接続からユーザー:ppp パスワード:fradfrad 電話番号等を設定しておきます。
pepolinux(ダイヤルインサーバー側の準備)
/etc/ppp/ppp-in と /usr/local/bin/pepop2pchatのスクリプトを確認します。内容を理解出来たら、usbへ携帯電話を接続します。
tail /var/log/messages で携帯電話が/dev/ttyACM0で認識されている事を確認して下記コマンドを入力
/etc/ppp/ppp-in
WindowsXP(ダイヤルアップ側)からダイヤルアップしてください。

FOMAを使ったダイヤルインサーバーの準備
注意!! これはFOMAの64kデジタル通信を使ったもので、『定額制のサービス適用外』の従量制サービスです。
!!30秒間30円!!と物凄い料金が発生して、過去に1万6千円程の請求を受けたことがあります。
docom社のサイトで従量制料金表を確認して、くれぐれも覚悟して実験して下さい。

startup.s の下記設定を#を削除すると、FOMAをUSBへ接続すれば自動的にダイヤルインサーバーを起動します。
#0-59/1 * * * * /usr/local/bin/peporemote
あとは、WindowsXPからユーザー:ppp パスワード:fradfrad 電話番号を設定してダイヤルインすれば接続します。
但し、RTT(Round-Trip Time)は1秒~2秒と超遅いが、ダイヤルイン→インターネットへ抜ければ64kbpsそれなりの速度が得られます。
ダイヤルイン後、同じネットワークのWindowsXPへリモート・デスクトップ接続したことがあるが、かなり厳しい状況でした。
筆者は試した事がありませんがISDNからの着信も出来るはずなのでそれなりの操作が出来ると思います。

Wakeup On LAN(WOL)を使ってみる
Wakeup On LAN対応のマシンならMACアドレスさえ知っていれば、下記コマンドで電源を入れることが出来ます。「Wakeonlan」 (http://gsd.di.uminho.pt/jpo/software/wakeonlan/)<m(__)m>
[root@~]# wakeonlan -i 192.168.0.255 00:11:22:33:44:55
Sending magic packet to 192.168.0.255:9 with 00:11:22:33:44:55
インフェースの指定が必要なら、Wakeup On LANの標準コマンドether-wakeを使います。ipアドレスの指定はできません。
[root@~]# ether-wake -i eth1 00:11:22:33:44:55
以下はMACアドレスをブロードキャストでMagicPacketを送出します。-bの後のMACアドレスはダミーです、省略すると叱られます。
[root@~]# ether-wake -i eth1 -b 00:11:22:33:44:55

tftp,ftp,nfs,samba,sshfs
UNIXワールドの少々のテクニックが必要ですが、ルーターのOSをLha、bzip2、zip 等の圧縮形式のファイルを転送しリモート側で展開する事も出来ます。
展開後はパーミッションを666に変更しルーターのtftpプロトコルによりOSのダウン・アップロードが出来ます。(tftpサーバーがデフォルトで動作します。)
ftpサーバーも可能です、ログイン名 ftp でパスワード何でも良い。 その他のコマンドは ls /bin /usr/bin /local/bin 等を確認して下さい。
コマンドにより root でないと実行出来ない物もあります su コマンドで root になって実行して下さい。各コマンド使用方法は巷の linux 本を参照して下さい。
nfs client で mountする際は portmap サービスを事前に起動させる必要があります。
# mount -t nfs 192.168.0.250:/public /mnt/nfs
nfsサーバでマウントされる公開ディレクトリはメモリ・ファイルシステム(tmpfs)は指定できません、下記ログが記録される。
rpc.mountd: getfh failed: Operation not permitted
sambaクライアントでWindows2003の共有ファイルをマウントする時に失敗する場合
# mount -t smbfs //192.168.0.250/public /mnt/smb -o username=administrator,passwrd=XXXX
cli_negprot: SMB signing is mandatory and we have disabled it.
4995: protocol negotiation failed
SMB connection failed
PepoLinuxをKernel2.6.Xで立ち上げmount.cifsコマンドで試してください(2003サーバー側のローカルセキュリティポリシーで、『Microsoft ネットワーク サーバー: 常に通信にデジタル署名を行う』にデフォルトでなっている為です。)→samba3.0.X+Kernl2.6.XでActiveDirectoryへの参加が出来るようになりました。
# mount.cifs //192.168.0.1/public /mnt/smb -o username=administrator,passwrd=XXXX
sambaサーバーで立ち上げた場合は、\\pepolinux_IPADDR\publicへユーザー名:nobody、パスワード:なしでファイルの共有が使えます。

sshfsとはsshプロトコルで相手ホストのファイルシステムをマウント 出来るようにしたもので、sshさえ通じればファイルの読み書きができる簡単且つセキュリテイも満たしたすぐれものです


適当なマウントポイントを作成
[root@~]# mkdir t
fuseモジュールをロードします
[root@~]# modprobe fuse
相手ホストの / をマウントします
[root@~]# sshfs 192.168.0.250:/ t
root@192.168.0.250's password:
[root@~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/tmpfs                  193536     51016    142520  27% /
/dev/hdc                166540    166540         0 100% /cdrom
none                    128268       136    128132   1% /dev
/cdrom/USR              143360    143360         0 100% /usr
192.168.0.250:/      1048576000         0 1048576000   0% /root/t
[root@~]# ll t/
total 128
drwxr-xr-x  1 root root 1940 Jun 28 20:53 bin
drwxr-xr-x  1 root root   40 Nov  8 19:11 BIN+
drwxr-xr-x  1 root root  220 Nov  8 19:12 boot
drwxr-xr-x  1 root root 2048 Jun 28 22:15 cdrom
    ~ 中略 ~
drwxr-xr-x  1 root root   40 Sep  1  2004 tmpfs
drwxr-xr-x  1 root root   40 Jul  1  2007 UNIONFS
drwxr-xr-x  1 root root  209 Jan 30  2008 usr
drwxr-xr-x  1 root root   40 Nov  8 19:11 usr+
drwxr-xr-x  1 root root  480 Nov  8 10:13 var
[root@~]# mkdir t/work
[root@~]# ll t
total 132
drwxr-xr-x  1 root root 1940 Jun 28 20:53 bin
drwxr-xr-x  1 root root   40 Nov  8 19:11 BIN+
drwxr-xr-x  1 root root  220 Nov  8 19:12 boot
drwxr-xr-x  1 root root 2048 Jun 28 22:15 cdrom
    ~ 中略 ~
drwxr-xr-x  1 root root   40 Sep  1  2004 tmpfs
drwxr-xr-x  1 root root   40 Jul  1  2007 UNIONFS
drwxr-xr-x  1 root root  209 Jan 30  2008 usr
drwxr-xr-x  1 root root   40 Nov  8 19:11 usr+
drwxr-xr-x  1 root root  480 Nov  8 10:13 var
drwxr-xr-x  1 root root   40 Nov  9 16:34 work
[root@~]#

tethereal コマンドでLANの解析が出来ます。LANの中が見えます、出先にて無断で他人の家の覗き見は避けましょう。
tcpdump -s 128 -w route のコマンドで『route』にファイルされます、この後 ethereal にてこのファイルを読み込めばローカル側のpcでGUIにて詳細を解析する事が出来ます。etherealについて詳しくは http://www.ethereal.com/ をご覧下さい。
以下は tcpdump コマンドで pepo1からpeplinuxのftpサーバーへ ftp を行うところを捕らえたものです。

16:15:58.580000 pepo1.osaka.kansaiben.jp.1033 > pepolinux.ftp: S 1894521:1894521(0) win 8192 <mss 1460> (DF)
16:15:58.580000 pepolinux.ftp > pepo1.osaka.kansaiben.jp.1033: S 3894325265:3894325265(0) ack 1894522 win 16368 <mss 1460>
16:15:58.580000 pepo1.osaka.kansaiben.jp.1033 > pepolinux.ftp: . ack 1 win 8760 (DF)
以下省略

tetherealが収録されているのでフィルタ付、ethereal形式でセーブし、GUIのetherealで読み込み・解析がスムーズになります。
tethereal -f "host 192.168.0.1" -F libpcap -w dump.cap

SNMPの簡易収集モニターを搭載しました。インターフェースのインプット/アウトプットデータをインターフェース毎に、自動的に指定時間の間隔で収集します。ftp で get しEXCEL等でグラフ化出来ます。   (本プログラムはエラー処理を殆ど考慮していませんし得られたデータに対し何の保証もありません。あくまで簡易モニタですご了解を願います。)

使用方法
ユーザー名 pepo パスワード pepolinux でログインします。 
 peposnmpon 192.168.100.100 public 1
 コマンド名 IPアドレス コミニュティ名 収集間隔(分)で起動すると EXCEL.CSV と NODE_STATUS が作成されます。
終了方法 peposnmpoff と入力します。

以下が収集開始時のNODE_STATUS。
Sat Feb 17 17:00:41 2001
system.sysDescr.0 = OCTET STRING: "Linux PepoLinux 2.2.18 i586"
system.sysObjectID.0 = OBJECT IDENTIFIER: enterprises.tubs.ibr.linuxMIB
system.sysUpTime.0 = Timeticks: (681) 0:00:06
system.sysContact.0 = OCTET STRING: "IZAMU.KARERA"
system.sysName.0 = OCTET STRING: "PepoLinux "
system.sysLocation.0 = OCTET STRING: "osaka.kansaiben.jp"
system.sysServices.0 = INTEGER: 72
system.sysORLastChange.0 = Timeticks: (0) 0:00:00
system.sysORTable.sysOREntry.sysORID.1 = OBJECT IDENTIFIER: enterprises.tubs.ibr.linuxMIB.1.1
system.sysORTable.sysOREntry.sysORDescr.1 = OCTET STRING: "LINUX agent"
system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (681) 0:00:06
interfaces.ifNumber.0 = INTEGER: 3
interfaces.ifTable.ifEntry.ifDescr.1 = OCTET STRING: "lo" Hex: 6C 6F
interfaces.ifTable.ifEntry.ifDescr.2 = OCTET STRING: "eth0" Hex: 65 74 68 30
interfaces.ifTable.ifEntry.ifDescr.3 = OCTET STRING: "ppp0" Hex: 70 70 70 30
interfaces.ifTable.ifEntry.ifSpeed.1 = Gauge: 20000000
interfaces.ifTable.ifEntry.ifSpeed.2 = Gauge: 10000000
interfaces.ifTable.ifEntry.ifSpeed.3 = Gauge: 28800
interfaces.ifTable.ifEntry.ifOperStatus.1 = INTEGER: up(1)
interfaces.ifTable.ifEntry.ifOperStatus.2 = INTEGER: up(1)
interfaces.ifTable.ifEntry.ifOperStatus.3 = INTEGER: down(2)
以下省略


LANの帯域制御について
CBQ.init traffic management scriptは/sbin/tc コマンドで送信の帯域制御を設定する時に、比較的容易に出来るように、
スクリプト化したものです。 詳細は、traffic control Mini-Howtoを参照してください。
/etc/syconfig/cbq/cbq-xxx へ以下のような設定ファイルを書きます。例:ネットワーク内 192.168.0.0/24 のhttpトラフィックを1Mbitに制限するものです。
/etc/syconfig/cbq/cbq-100.http
DEVICE=eth0,100Mbit,10Mbit
RATE=1Mbit
WEIGHT=100Kbit
PRIO=5
RULE=192.168.0.0/24:80

DEVICE=ifname,bandwidth[,weight]
ifname は eth0 eth1 などデバイス名
bandwidth は実際のデバイス ethernet 10Mbit 又は 100Mbit の帯域
weight は帯域に比例して調整します。推奨は weight = bandwidth / 10
RATE は割り当帯域 WEIGHT は RATEに対応して値 WEIGHT = RATE / 10 PRIO はプライオリティ1~8 デフォルト5 RULE は実際に適用するIP、プロトコル RULE=192.168.0.1:20/0xfffc この場合20~24ポートを帯域制限の対象になります。 設定を入力したら、実際に起動させて動作確認します。
/etc/init.d/cbq.init start

通信速度の測定について
iperf でLAN間のスピードや負荷試験を行うことが出来ます、WAN側では行わないこと!
ipのフィルタリングがされていると各種実験が出来ません通信速度の測定に関わらず、iptablesを停止させます。
[root@~]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
[root@~]#
サーバー側を起動してから、クライアント側を起動する。接続が成功すると結果を両方へ表示してくれます。
まずは、サーバー側の起動から、Ctl-c で停止させます。
[root@centos ~]# iperf -s 
------------------------------------------------------------ <---クライアントが接続されると以下結果を表示
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.0.6 port 5001 connected with 192.168.0.254 port 32773
[ 4] 0.0-10.0 sec 112 MBytes 94.1 Mbits/sec
つきに、クライアント側の起動
[root@ ~]# iperf -c 192.168.0.254
lient connecting to 192.168.0.254, TCP port 5001 <---サーバーへ接続されると以下結果を表示
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.6 port 32910 connected with 192.168.0.254 port 5001
[ 3] 0.0-10.0 sec 112 MBytes 94.1 Mbits/sec

送信の帯域制御をネットワーク全体でかかるように設定して計測してみます。
/etc/syconfig/cbq/cbq-100.http <---設定ファイル
DEVICE=eth0,100Mbit,10Mbit
RATE=1Mbit
WEIGHT=100Kbit
PRIO=5
RULE=192.168.0.0/24 <---このネットワーク全てのIPトラフィックで帯域制限

[root@~]# /etc/init.d/cbq.init restart <---設定したらスクリプトの再起動
[root@~]# iperf -c 192.168.0.254
------------------------------------------------------------
Client connecting to 192.168.0.254, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.6 port 34899 connected with 192.168.0.254 port 5001
[ 3] 0.0-10.1 sec 1.19 MBytes 982 Kbits/sec
[root@~]#
ほぼ、帯域制限どおりの結果が表示されます。iperf はペイロード(実データ)の帯域を表示しますので少なめです。く

ルータ機能
ダイヤルUPサーバー、クライアント、IPマスカレードも動作します。現在のバージョンではeth-pcmciaカードを2枚挿入したまま立ち上げると、動作しない場合があります。その場合はカードを挿入しない状態で立ち上げその後一枚づつ挿入して認識させます。

ブリッジ機能(LANカード経由のローカルブリッジ)
ethカードを2枚挿入して認識しているなら下記コマンドでブリッジ機能が使えます。
pepobrct eth1 start  ←ブリッジ機能のスタート
pepobrct eth1 stop  ←ブリッジ機能停止

リモートブリッジ機能(WAN、インターネット経由のリモートブリッジ)ppp等で接続されたpepolinux同士のイーサネットをリモートでブリッジ化するものです。
VTun(Virtual Tunnel overTCP/IP network)はIPパッケトの圧縮と暗号化を行うIPトンネルを設定する機能です(ブリッジ接続編
予めstartup.sファイルのVtun関係のIPアドレスを設定し起動を有効にしておけば、立ち上げ時に各IPアドレスを反映したvtund.conf.newファイルが作成され、自動で接続(IPトンネルが掘れる)します。以下は手動で起動する場合です。ifconfigtapX(tap0又はtap1)にIPアドレスが設定されている事を確認するとプロトコルに関係無く、LANのセグメントがインターネットを通じ延長したイメージでイーサネット通信が出来ます。
vtund -s -f /etc/vtund.conf.new -P 待ちポートNO   ←サーバー側の起動
vtund lion -f /etc/vtund.conf.new -P サーバーの待ちポートNO  サーバーのIPアドレス   ←クライアント側の起動

VTun(Virtual Tunnel over TCP/IP network)機能(IP接続編
予めstartup.sファイルのVtun関係のIPアドレスを設定し起動を有効にしておけば、立ち上げ時に各IPアドレスを反映したvtund.conf.newファイルが作成され、自動で接続(IPトンネルが掘れる)します。以下は手動で起動する場合です。
vtund -s -f /etc/vtund.conf.new -P 待ちポートNO   ←サーバー側の起動
vtund cobra -f /etc/vtund.conf.new -P サーバーの待ちポートNO  サーバーのIPアドレス   ←クライアント側の起動
TUNSERVERとTUNCLIENTのアドレスにpingが飛ぶ事を確認。以後両方のpepolinuxにHOSTがデフォルトを向ければ双方でセキュアなIP通信が出来ます。

sshdについて
sshdの公開鍵を使いパスワードなしでログイン出来るようにします。
クライアントで公開鍵の作成をします。
----------以下クライアント側操作----------------------------------------------
[root@~]# ssh-keygen -t rsa -f pc
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in pc.
Your public key has been saved in pc.pub.
The key fingerprint is:
b3:e1:b8:65:2e:41:11:f4:9d:fb:fd:cb:a9:89:0b:32 root@epicon
クライアント公開鍵をサーバ側の /rootへ転送します。 → pc.pub
----------以下サーバ側操作----------------------------------------------------
[root@~]# cat pc.pub >>.ssh/authorized_keys ←authorized_keysへ追加します。
[root@~]# vi /etc/ssh/sshd_config を編集します。
PasswordAuthentication no ← yes を no へ
[root@~]# service sshd restart ← sshdを再起動します。
----------以下クライアント側操作----------------------------------------------
これで、sshクライアントより自分の秘密鍵を使いパスワードなしでログインできます。
[root@~]# ssh -i pc root@192.168.0.100 ←秘密キーpcを使い192.168.0.100へパスワードなしでログインします。

rsyncを使い、ファイルをリモート側へミラーします。
[root@~]# rsync -auzv --delete -e 'ssh -i /root/pc' /var/www/html/ root@192.168.0.100:/var/www/html/
これをスクリプトにまとめ、cronで回せば、WEBサーバーの同期がとれます。

Open VPNについてhttp://openvpn.net/<m(__)m>
OpenVPNはフル機能のSSL VPNであり、インターネット越しに安全なVPN通信路を構築できます。先ずは簡単に設定してVPNを動作させてみよう。
詳しくはhttp://freescitech.net/2/ovpn2_howto_ja.htmlを参照してください。
1.WindowsXPは、http://openvpn.se/から OpenVPN GUI for Windows をダウロード・インストールして下さい。
インストール方法はOpenVPNで構築するリモートアクセス環境を参考にします。

[root@~]# cd /etc/openvpn/easy-rsa/
[root@easy-rsa]# vi vars
# Don't leave any of these fields blank.
export KEY_COUNTRY=JP ←国名
export KEY_PROVINCE=KANSAI ←県名
export KEY_CITY=OSAKA ←市名
export KEY_ORG="PepoLinux" ←組織名
export KEY_EMAIL="info@pepolinux.local" ←メールアドレス
[root@easy-rsa]# ls
2.0          build-key         build-req       list-crl     revoke-crt   Windows
build-ca     build-key-pass    build-req-pass  make-crl     revoke-full
build-dh     build-key-pkcs12  clean-all       openssl.cnf  sign-req
build-inter  build-key-server  keys            README       vars
[root@easy-rsa]# . ./vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
[root@easy-rsa]# ./clean-all
[root@easy-rsa]# ./build-ca
Generating a 1024 bit RSA private key
............................................++++++
...++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [KANSAI]:
Locality Name (eg, city) [OSAKA]:
Organization Name (eg, company) [OpenVPN-PepoLinux]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:epicon
Email Address [info@pepolinux.local]:
[root@easy-rsa]# ./build-key-server server
Generating a 1024 bit RSA private key
................................................................++++++
............++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [KANSAI]:
Locality Name (eg, city) [OSAKA]:
Organization Name (eg, company) [OpenVPN-PepoLinux]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:epicon
Email Address [info@pepolinux.local]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'KANSAI'
localityName          :PRINTABLE:'OSAKA'
organizationName      :PRINTABLE:'OpenVPN-PepoLinux'
commonName            :PRINTABLE:'epicon'
emailAddress          :IA5STRING:'info@pepolinux.local'
Certificate is to be certified until Feb 10 12:32:10 2018 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Diffie-Helmanパラメータを作成します。
[root@easy-rsa]#  ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
............+...............................................................+.+........................+................................................++*++*++*
[root@easy-rsa]#
[root@easy-rsa]# ./build-key client1
build-key-pass client1 を入力すると対話型でパスワードの入力が求められますが、今回は簡単な方で行います。
Generating a 1024 bit RSA private key
...........++++++
....................++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [KANSAI]:
Locality Name (eg, city) [OSAKA]:
Organization Name (eg, company) [PepoLinux]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:client1 ←ここのみ入力
Email Address [info@pepolinux.local]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'KANSAI'
localityName          :PRINTABLE:'OSAKA'
organizationName      :PRINTABLE:'PepoLinux'
emailAddress          :IA5STRING:'info@pepolinux.local'
Certificate is to be certified until Feb 10 12:32:40 2018 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@easy-rsa]#

2./etc/openvpn/easy-rsa/keys/ から ca.crt client1.crt client1.key とコンフィグファイルの /etc/openvpn/client_xp.ovpn を取り出し
WindowsXPクライアントの C:\Program Files\OpenVPN\config\ へ貼り付けます。
3.以下の設定ファイルを自分の環境に合わせて編集します。
[root@~]# vi /etc/openvpn/server.conf
[root@~]# vi /etc/openvpn/openvpn_up.sh
サーバー側でopenvpnを起動します。
[root@~]# service openvpn start
4.WindowsXPクライアントで C:\Program Files\OpenVPN\config\client_xp.ovpn を編集し、サーバーのIPを設定します。
remote 192.168.0.1 ← サーバーのインターネット側のアドレスを設定
WindowsXPの通知領域の OpenVPN GUI アイコンの右クリックから connect を選択します。

VLAN(802.1q tagging Virtual LAN)機能
vconfig add eth0 100  ←eth0に100番のVLANを追加
ifconfig eth0.100 192.168.196.1 netmask 255.255.255.0

IPアドレスの追加
ifconfig eth0:1 192.168.10.1 ←eth0 へサブインターフェース追加
ifconfig eth0:1 down ←eth0 へ追加したサブインターフェースの削除

TCPでトレースルートをする、tcptraceroute
tcptraceroute -n yahoo.co.jp 80
traceroute to yahoo.co.jp (203.216.227.176), 30 hops max, 80 byte packets
1 192.168.0.1 0.922 ms 1.376 ms 1.847 ms


12 203.216.238.242 34.255 ms 33.256 ms 28.694 ms
13 203.216.227.176 29.422 ms 24.981 ms 20.572 ms

ネットワークの冗長化、複数のネットワーク I/F を束ねて負荷分散と可用性向上を行う bondingについて
下記ネットワークでHOST Aへbondingの設定を行い付加分散と冗長化ができます。
+----------+            +---+               +----------+
|          |eth0 10Mbps |   |   100Mbps eth0|          |
| Host A   +------------|SW |---------------+  Host B  |
|          +------------|   |               |          |
|          |eth1 10Mbps |   |               |          |
+----------+            +---+               +----------+
[root@~]# modprobe bonding miimon=100 mode=0  ←ドライバをロードします。詳細は上記URLを参照
[root@~]# ifconfig bond0 192.168.0.123   ←共用インターフェースにIPを設定します。
[root@~]# ifenslave bond0 eth1 eth2      ←共用インターフェースにeth1とeth2をスレーブインターフェースとして追加します。
[root@~]# ifconfig ←MACアドレスが全て同じになっていることが確認できます。
bond0     Link encap:Ethernet  HWaddr 00:0C:29:21:6A:77
          inet addr:192.168.0.123  Bcast:192.168.0.255  Mask:255.255.255.0
          ~ 中略 ~
eth1      Link encap:Ethernet  HWaddr 00:0C:29:21:6A:77
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          ~ 中略 ~
eth2      Link encap:Ethernet  HWaddr 00:0C:29:21:6A:77
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

ネットワークテストツールnetwoxについて
netwoxとはネットワークのテストツールを222個も集めた素晴しいソフトです、 少しだけ使い方を紹介しておきます。
テストツールの中にはネットワークに大変な負荷をかける危険なものがあります、訳が分からなくなったらにCtrl+Cで終了しましょう。
オプションなしのnetwoxだけで起動するとメニューが表示されます。
[root@~]# netwox
Netwox toolbox version 5.36.0. Netwib library version 5.36.0.

######################## MAIN MENU #########################
 0 - leave netwox
 3 - search tools
 4 - display help of one tool
 5 - run a tool selecting parameters on command line
 6 - run a tool selecting parameters from keyboard
 a + information
 b + network protocol
 c + application protocol
 d + sniff (capture network packets)
 e + spoof (create and send packets)
 f + record (file containing captured packets)
 g + client
 h + server
 i + ping (check if a computer if reachable)
 j + traceroute (obtain list of gateways)
 k + scan (computer and port discovery)
 l + network audit
 m + brute force (check if passwords are weak)
 n + remote administration
 o + tools not related to network
Select a node (key in 03456abcdefghijklmno): g

########################## client ##########################
 0 - leave netwox
 1 - go to main menu
 2 - go to previous menu
 3 - search tools
 4 - display help of one tool
 5 - run a tool selecting parameters on command line
 6 - run a tool selecting parameters from keyboard
 a + UDP client
 b + TCP client
Select a node (key in 0123456ab): b

######################## TCP client ########################
 0 - leave netwox
 1 - go to main menu
 2 - go to previous menu
 3 - search tools
 4 - display help of one tool
 5 - run a tool selecting parameters on command line
 6 - run a tool selecting parameters from keyboard
 a + generic TCP client
 b + DNS (tcp) client
 c + FTP client
 d + HTTP client
 e + IDENT client
 f + IRC client
 g + NNTP client
 h + SMB client
 i + SMTP client
 j + TELNET client
 k + WHOIS client
Select a node (key in 0123456abcdefghijk): j

###################### TELNET client #######################
 0 - leave netwox
 1 - go to main menu
 2 - go to previous menu
 3 - search tools
 4 - display help of one tool
 5 - run a tool selecting parameters on command line
 6 - run a tool selecting parameters from keyboard
 a - 99:TELNET client
 b - 100:TELNET client executing one or several commands
 c - 101:Brute force telnet client
Select a node (key in 0123456abc): a

################# help for tool number 99 ##################
Title: TELNET client
+------------------------------------------------------------------------+
| This tool is a very simple implementation of a telnet client.          |
| In vi editor, keys jklm can be used instead of arrows.                 |
| To have a better environment, run 'export TERM=vt100'.                 |
|                                                                        |
| Parameter --line-by-line defines if client works line by line          |
| (obsolete, but it will work with all servers).                         |
| Parameter --dst-ip is the address of remote host/server.               |
| Parameter --dst-port is the port number where to connect.              |
| Optional parameter --src-ip defines the local IP address to use.       |
| Optional parameter --src-port defines the local port number to use.    |
| Optional parameter --ip4opts permits to add IP4 options encoded as     |
| mixed.                                                                 |
| Optional parameter --ip6exts permits to add IP6 options encoded as     |
| mixed (first byte is the next header number).                          |
| Optional parameters --device, --src-eth and --dst-eth permits to       |
| create a virtual client using fake addresses (in this case, tool have  |
| to be run with admin privilege in order to sniff and spoof at          |
| Ethernet level).                                                       |
+------------------------------------------------------------------------+
Usage: netwox 99 -i ip [-d device] [-E eth] [-e eth] [-I ip] [-P port] [-p port] [-o ip4opts] [-O ip6exts] [-L|+L]
Parameters:
 -i|--dst-ip ip                 destination IP address {5.6.7.8}
 -d|--device device             device name {Eth0}
 -E|--src-eth eth               source ethernet address {0:2:3:4:5:6}
 -e|--dst-eth eth               destination ethernet address {0:8:9:a:b:c}
 -I|--src-ip ip                 source IP address {192.168.2.230}
 -P|--src-port port             source port number {0}
 -p|--dst-port port             destination port number {23}
 -o|--ip4opts ip4opts           IPv4 options
 -O|--ip6exts ip6exts           IPv6 extensions
 -L|--line-by-line|+L|--no-line-by-line line by line mode
Example: netwox 99 -i "5.6.7.8"
Example: netwox 99 --dst-ip "5.6.7.8"
Press 'r' or 'k' to run this tool, or any other key to continue

################## running tool number 99 ##################
Enter optional tool parameters and press Return key.
netwox 99 -i 192.168.2.1

Telnet Server 1.10  All rights reserved.


login   :

事前にテスト番号が分かっているならnetwoxとテスト番号とオプションを入力します。
[root@~]# netwox 99 -i 192.168.2.1

Telnet Server 1.10  All rights reserved.


login   :

www サーバーが立ち上がり、Perl-V5のCGI、SSIスクリプトが動作します。C:\peplinux のディレクトリ index.htm にホームページを作成出来ます。
PepoLinuxが立ち上がりましたら http://xxx.xxx.xxx.xxx.xxx(pepolinuxのIPアドレス)へアクセスしてくださいNICを認識しているならPepoLinuxReadmeが見えます。

mail サーバーが立ち上がります、デフォルトではpostfixですが、sendmailも切り替えてメールのテストが出来ます。なかなか良い話相手になります。

squidについて
squidとは言わずとしれた、HTTPなどの通信を中継・キャッシュするプロキシサーバですが、少し変わった使い方を紹介します。
[root@~]# vi root/etc/squid/squid.conf
#redirect_program /sbin/squirm ←最終行付近、コメントを削除
#redirect_children 5 ←コメントを削除

[root@~]# vi /etc/httpd/conf.d/pepo_redirect.conf
#<Directory / > ←コメントを削除
#Redirect permanent / http://www.linux.or.jp ←コメントを削除
#</Directory> ←コメントを削除

[root@~]# vi /etc/squirm/squirm.conf
network 10.0.0.0/8 ←自分のネットワークに合わせる
network 192.168.0.0/24 ←自分のネットワークに合わせる

[root@~]# vi /etc/squirm/squirm.patterns
abortregex ^http://(.*)\.linux\.or\.jp/ ←http://*.linux.or.jp 以外は以下の判定をする(http://*.linux.or.jp は変換しない)
regex ^http://(.*)\. http://127.0.0.1:80 ←http://.* はlocalhostの80番ポートへ変換する

httpd と squidを起動又は再起動させ、クライアントからこのサーバーの3128番ポートへプロキシを設定してください。
[root@~]# service httpd start
[root@~]# service squid start
クライアントは http://*.linux.or.jp 以外のURLは閲覧できなくなります。
cloopとsquashfsについて
cloopと言えば、大変有名な1CDLinuxのKnoppixで使われています。このPepoLinuxのVersion10.4まではお世話になりました。
cloop<m(__)m>
しかしcloopのソースを筆者のRedHat Linux9.0の環境では、Kernel2.6がmake出来ない状態でした。そこで、やむ得ずKnoppixのKernelとモジュールをコピーしてパッケージ化を行っていました。
Version10.5からは、squashfsを採用してKernel2.6と2.4でも問題なくmakeする事が出来ます。
しかもCloopより高圧縮率と処理速度が速いのとファイルシステムを構築するのにloopイメージを作る必要が無いと良い事ずくめです。
それでは、下記に両方のFileシステムの作成とマウント、スクリプトを比較してみます。
#でコメントアウトされた部分がCloopの時に必要な処理です。ここから如何にsquashfs簡単に利用出来るかが分かります。squashfs<m(__)m>

ファイルシステム作成→もっと簡単な方法が在るのかも
# mkdir -p ${MNTPNT} ${LOOPFSMNT}
# dd if=/dev/zero of=${LOOPFS} bs=1k count=${USRSIZE} 2>/dev/null 1>/dev/null
#       mke2fs -m 0 -q -F -N 65536 ${LOOPFS} 2>/dev/null 1>/dev/null
#       tune2fs -i 0 -c 0 ${LOOPFS} 2>/dev/null 1>/dev/null
#       mount -t ext2 -o loop ${LOOPFS} ${LOOPFSMNT}
#       cp -ap ${USR}/* ${LOOPFSMNT}
#       umount -f ${LOOPFSMNT}
#       create_compressed_fs ${LOOPFS} 65536 >${IMG}
modprobe squashfs
mksquashfs ${USR} ${IMG}
#       rm -rf ${MNTPNT} ${LOOPFSMNT} ${LOOPFS}
マウント
# insmod lib/cloop.ko file=$CD/USR
#               mount -o ro,loop dev/cloop usr
mount -t squashfs -o ro,loop $CD/USR usr

PepoっとLinuxウンチク
まずは、皆さんLinuxをインストールして何にお使いでしょうか?又どこのディストルビューションをお使いでしょうか?又何に使って良いか分からず新バージョンをインストールしてはアンインストールし続けてるのではないでしょうか?

筆者も当初は同じ様に色々なディストルビューションのインストールばかり行っていましたが、ようやくずばりLinuxはネットワークで使う物と悟りました。

Linuxをインストールしてみようとお考えの方はアンチ・マイクロソフトの方が多いと思いますが現在、日本の社会では少なからずともWindows2000、XPとマイクロソフトにお世話になっている方が多い筈です。
Linux配下で文書、メール、計算、グラフィック、等々扱う優秀なソフトがあるようですが残念ながら筆者は今のところそれをビジネスで使おうとは思いません。
皆さんもきっとワード、エクセル等の方が使い慣れているでしょうし、幾らMS-Windowsがクラッシュしようが利便性、互換性を重視して使い続けていると思います。

要するに餅屋は餅屋的に目的に合った便利である物を選べば良いと思います、つまりMS-Windowsが有利な事をMS-Windowsで行い、Linuxで有利な事をLinuxでおこなえば良いと思います。

以上の思想からネットワーカーがMS-Windowsに標準では出来ないようなネットワークツールを集め必要に応じてMS-Windowsから即起動出来て軽く動作し、いざとなったらリモートハンドとして使える様にと何とか考えた結果PepoLinuxが生まれました。ちなみにGUIインターフェースのX-windowは設計思想から外れる為載せていません。

少なくともネットワーカーと呼ばれる方はping、traceroute(windowsXPはtracert)、telnet等のコマンドや、ルーター等の設定コマンドはCUIで操作していると思いますが、このPepoLinuxも全てCUIインターフェースの作業となります。

Windows2000/XP/Vistaのパスワードをクリアする。但し大変危険です!自己責任で操作して下さい。
Windows2000/XP/Vistaのパスワードが思い出せない、アカウントロックされた、忘れた場合のレスキュー用ツールです。パスワードの変更は出来ません、初期化:パスワードなしに設定のみ可能です。
赤文字が入力箇所です。Windows2003サーバーのドメインコントローラは救済できませんが、Workgroupでは成功しています。

# This document for Windows2000/XP/Vista Administrator's passwords reset.
# Author IZAMUKARERA 2007.12.19
# Thanks. Petter N Hagen --> http://home.eunet.no/~pnordahl/ntpasswd<m(__)m>
# Thanks. Linux-NTFS project --> http://www.linux-ntfs.org/ <m(__)m>
# /dev/hda1→WindwosXPのシステムディスク、c:\WINDOWS\system32\config\SAM がパスワードファイルの場合の操作方法です。

[root@~]# mount.ntfs-3g /dev/hda1 /mnt/hdd/
[root@~]# cd /mnt/hdd/WINDOWS/system32/config
[root@config]# cp -ap SAM SAM.old       <---WindowsXPのパスワードファイルをバックアップ
[root@config]# chntpw -i SAM           <---パスワードの変更(会話形式)
chntpw version 0.99.3 040818, (c) Petter N Hagen
Hive's name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c <lf>
Page at 0x6000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 230/16880 blocks/bytes, unused: 15/3440 blocks/bytes.

* SAM policy limits:
Failed logins before lockout is: 3
Minimum password length : 0
Password history count : 0

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

1 - Edit user data and passwords
2 - Syskey status & change
3 - RecoveryConsole settings
- - -
9 - Registry editor, now with full write support!
q - Quit (you will be asked if there is something to save)


What to do? [1] -> 1      <---"1"を入力


===== chntpw Edit User Info & Passwords ====

RID: 01f4, Username: <Administrator>, *disabled or locked*
RID: 01f5, Username: <Guest>, *disabled or locked*
RID: 03ed, Username: <HelpAssistant>, *disabled or locked*
RID: 03eb, Username: <pepo>, *disabled or locked*
RID: 03ea, Username: <SUPPORT_388945a0>, *disabled or locked*

Select: ! - quit, . - list users, 0x<RID> - User with RID (hex)
or simply enter the username to change: [Administrator]    <---Administratorの変更なので"Enter"を入力
RID : 0500 [01f4]
Username: Administrator
fullname:
comment : ???????
homedir :

Account bits: 0x0211 =
[X] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[X] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |

Failed login count: 3, while max tries is: 3
Total login count: 4
Account is disabled
Do you wish me to reset the failed count, unset disabled and lockout,
and set the "password never expires" option? (y/n) [n]y   <---Administratorのアカウントロックされている場合これを表示
Unlocked!

* = blank the password (This may work better than setting a new password!)
Enter nothing to leave it unchanged
Please enter new password: *     <---Administratorのpasswordをリセット(空)"*" を入力
Blanking password!

Do you really wish to change it? (y/n) [n] y <---確認の為 "y" を入力
Changed!


Select: ! - quit, . - list users, 0x<RID> - User with RID (hex)
or simply enter the username to change: [Administrator] ! <---Administrator以外の変更が無ければ "!" を入力

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

1 - Edit user data and passwords
2 - Syskey status & change
3 - RecoveryConsole settings
- - -
9 - Registry editor, now with full write support!
q - Quit (you will be asked if there is something to save)


What to do? [1] -> q      <---変更確認の為 "q" を入力

Hives that have changed:
# Name
0 <SAM>
Write hive files? (y/n) [n] : y <---変更確認の為 "y" を入力
0 <SAM> - OK
[root@config]# cd
[root@~]# sync          <---必ず入力のこと
[root@~]# umount /mnt/hdd
[root@~]# reboot
この後リブートすれば、Administratorでパスワードが無しの状態でログオン出来ます。

partimageについて
partimageは、Diskのパーテションをイメージでバックアップ又は、リストアする為のツールです。
以下にWindowsXPのパーティションのバックアップとリストア方法について説明します。但し大変危険です!自己責任で操作して下さい。
私の経験ではWindowsXPでは失敗していますが、grubでLinuxと2003サーバーのデュアルブートにしたマシンでは、2003サーバーの
バックアップとリストアには成功しています。何れにせよNTFSは、かなり限られた条件と覚悟が必要です。さらに実験段階とソフトの作者も書いています。

1.PepoLinuxをCDブートで立ち上げたら、ネットワーク越しにバックアップするPCのWindowsXP側で共有フォルダを適当なセキュリティで作成します。
この例では、192.168.0.100のWndowsXPへbackupの名前で共有フォルダを作成(適当なユーザー名とパスワードでフルコントロールの権限を設定)
2.mount -t smbfs -o username=ユーザー名,password=パスワード //192.168.0.100/backup /mnt/hdd
3.dd if=/dev/hda of=/mnt/hdd/mbr-img bs=512 count=1  <--DiskのMBRをバックアップこれは復旧に必要です。
4.partimage  <--partimageを起動する・・・カーソルで操作する画面が表示(残念ながらスクリーンショットは取ってません)
5.Parition to save/restore   へバックアップするパーティションを↑↓でこの場合hda1(ntfs)を選択しTABキーを押す
6.Image file to create/use   へ/mnt/hdd/windowsXP を入力TABキーを押す
7.Save partition into a ・・・  に*で選択されている事を確認してF5キーを押す
8.次画面では、デフォルトのままF5キーを押す
9.次画面では、適当なコメントを入れる例:WindowsXP-backup
10.TABキーを押しokが選択出来たらEnterキーを押す
11.Waringの画面が表示されるがEnterキーを押す
12.次画面でもEnterキーを押すとバックアップが開始され経過時間が表示される。
13.指定したファイル名に2GByte毎に000、001と番号がつくイメージが保存される。

restoreの方法。ここでは既に、/mnt/hddにバックアップを取ったイメージがネットワーク経由でマウントされているものとして説明します。
1.dd of=/dev/hda if=/mnt/hdd/mbr-img bs=512 count=1  <--DiskのMBRのリストア
2.parted /dev/hda   <--パーティションを確認します。(pを入力すると表示される、qで元の画面に戻ります)
3.mkntfs /dev/hda1  <--ntfsでフォーマットします。かなり時間が掛かる -Qのオプションだと直ぐに終わるが薦めない。
4.partimage  <--partimageを起動する
5.Parition to save/restore   へパーティションを↑↓でこの場合hda1(ntfs)を選択しTABキーを押す
6.Image file to create/use  へ/mnt/hdd/windowsXP.000 <--バックアップを指定したファイル名に2GByte毎に000、001と番号がつく
7.Restore partition from an image file  までTABキーで選択してスペースキーで*をマークしたらF5キーを押す
8.次画面でバックアップ時に入力したコメントが表示されるのでEnterキーを押す
9.次画面では、デフォルトのままF5キーを押す
10.Waringの画面が表示されるがEnterキーを押すとリストアが開始され経過時間が表示される。
11.再起動すれば、WindowsXPが正常起動するはずです。

ntfsツールについて 以下は大変変危険です!自己責任で操作して下さい。
partimage似ていますがNTFS専用のバックアップツールでLinux-NTFS projectのntfscloneがあります。
# Thanks. Linux-NTFS project --> http://www.linux-ntfs.org/ <m(__)m>
1.既に/mnt/smb/へネットワーク越しでファイルがマウントされているものとし、gzip圧縮形式でntfsパーテションのセーブをする。
ntfsclone --save-image -o - /dev/hda1 | gzip -c > /mnt/smb/winxp.img.gz
2.gzipで圧縮されたイメージをリストアする。
gzip -dc /mnt/smb/winxp.img.gz | ntfsclone --restore-image --overwrite /dev/hda1 -
3.ntfsのパーテションサイズが大きすぎてセーブ出来ても、戻せなくなる場合は事前に、ntfsresizeでサイズを縮小・調整します。
# ntfsresize --size 5G /dev/hda1
この後、WindowXPを起動すると自動的にCHKDSKが走り再起動後、resizeが完了する。(ntfsresizeは縮小方向だけ操作できる。)
但し、ntfsresizeはパーテション情報を操作しませんので、fdsikで一旦、NTFSパーテションを削除、作成の手順が必要です。以下参照
# fdisk /dev/hda
The number of cylinders for this disk is set to 4865.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p  →パーテション情報の表示

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device   Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        2550    20482843+   7  HPFS/NTFS
/dev/hda2            2551        4865    18595237+  83  Linux

Command (m for help): q  →一旦fdiskを終了する。

# ntfsresize --size 5G /dev/hda1  →NTFSパーテションを縮小する。
# fdisk /dev/hda

The number of cylinders for this disk is set to 4865.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p  →パーテション情報の表示・・先程と変わらず。

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device    Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        2550    20482843+   7  HPFS/NTFS
/dev/hda2            2551        4865    18595237+  83  Linux

Command (m for help): d  →NTFSパーテションを削除
Partition number (1-4): 1

Command (m for help): p

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device    Boot      Start         End      Blocks   Id  System
/dev/hda2            2551        4865    18595237+  83  Linux

Command (m for help): n  →NTFSパーテションを作成
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4865, default 1): 1  →1番目のパーテションサイズを5Gbyte確保
Last cylinder or +size or +sizeM or +sizeK (1-2550, default 2550): +5000M
Command (m for help): p  →パーテション情報の表示
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/hda1 1 609 4891761 83 Linux  →初期状態ではLinuxのパーテションが確保される
/dev/hda2 2551 4865 18595237+ 83 Linux

Command (m for help): t  →パーテションIDをNTFSへ書き換えます。
Partition number (1-4): 1
Hex code (type L to list codes): 7  →NTFSのIDを入力。
Changed system type of partition 1 to 7 (HPFS/NTFS)
Command (m for help): p
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device    Boot      Start         End      Blocks   Id  System
/dev/hda1 1 609 4891761 7 HPFS/NTFS  →パーテションIDがNTFSへセットされた。
/dev/hda2            2551        4865    18595237+  83  Linux

Command (m for help): a  →必要に応じてブートフラグ(起動)をセット
Partition number (1-4): 1

Command (m for help): p

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device    Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         609     4891761    7  HPFS/NTFS
/dev/hda2            2551        4865    18595237+  83  Linux

Command (m for help): w  →今までセットした内容をDISKに書き込みます。入力で失敗してもこれをしなければ、いつでもqで終了できます。
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

4.その他、NTFS Master File Table (MFT)の表示
ntfsinfo -m -d /dev/hdaolume Information
        Name of device: /dev/hda1
        Device state: 3
        Volume Name:
        Volume State: 1
        Volume Version: 3.1
        Sector Size: 512
        Cluster Size: 4096
        Volume Size in Clusters: 5120710
MFT Information
        MFT Record Size: 1024
        MFT Zone Multiplier: 1
以下省略

WindowsXPのHDDレスキュー
Windowsが起動出来なくなった場合、諦めて再インストールする前に、PepoLinuxで、故障PCのHDDを共有フォルダで
見えるようにして、正常なPCから救えるファイルをネットワーク越に、バックアップする方法を紹介します。

1.PepoLinuxのCDROMから¥README¥startup.sファイルをFDやUSBメモリにコピーして、IPアドレスをネットワークに
合わせ設定します。
export IPADD=192.168.0.100/24   ←startup.sファイルの17行目付近です。

2.故障PCにPepoLinuxのCDROMセットして立ち上げます。ブートメッセージが出力されたら、startup.sが入っている
FDやUSBメモリを挿入する。
3.PepoLinuxが立ち上がったら、rootでログインして、以下のコマンドを入力

[root@~]# vi /etc/samba/smb.conf    ←viエディタでsambaのコンフィグファイルを編集します。
280                ←281行目へジャンプ
i                  ←小文字のアイを入力してインプットモードへ移行させる。入力したアイは表示しません。
[public]
path = /mnt/hdd       ←Delキー、矢印キー、で編集をする→ path = /home/samba  →  path = /mnt/hdd
comment = PepoLinux Stuff
public = yes
writable = no         ←Delキー、矢印キー、で編集をする→ writable = yes  →  writable = no
printable = no        ←Escキー、ZZを入力で編集を反映して終了。確認のみ時は、Escキー、:、q!

[root@~]# mount /dev/hda1 /mnt/hdd/ -o ro,iocharset=sjis,uid=nobody,gid=nobody    ←C:ドライブをマウント
[root@~]# df     ←C:ドライブが正常にマウントされたか確認します。
Filesystem 1K-blocks Used Available Use% Mounted on
/tmpfs 784384 29916 754468 4% /
/dev/hdc 182102 182102 0 100% /cdrom
/dev/loop0 16704 16704 0 100% /BIN
/cdrom/USR 158912 158912 0 100% /usr
/dev/hda1 10241404 9325264 916140 92% /mnt/hdd    ←マウントされている事を確認。数字関係は無視します。

[root@~]# service smb start     ←sambaサービスの起動
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
2010.1.24上記操作を下記コマンドで一発で起動できるようにしました
[root@~]# pepomsrescue
又はCDROM\README\startup.sを事前コピーしてFDやUSBメモリの\startup.sに書き込み280行目付近#pepomsrescueの#を消します
280行目付近
# WindowsXPが起動出来なくなった時、DISKをマウントして共有フォルダで公開します。
#pepomsrescue

正常なPCから、スタート→ファイル名を指定して実行→\\故障機のIPアドレス Enter
ユーザー名:nobody パスワードなし でログオンする。PepoLinuxの設定が正常なら、
publicの共有フォルダ内にPepoLinuxがマウントしたHDDの全てが見える筈なので、
必要なファイルをバックアップして下さい。
バックアップが終了したら、故障機をHDDからリブートして下さい。・・リブートしても立ち上がらない筈ですが
[root@~]# service smb stop     ←sambaサービスの停止
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
[root@~]# umount /mnt/hdd/   ←C:ドライブをアンマウント
[root@~]# reboot           ←リブート、PepoLinuxが再起動する前に、CDROMを取り外す。

NTFSのライトについて、これも実験的なので危険ですがntfs-3gを使えば簡単にNTFSをリード/ライト出来ます。
[root@~]# mount -t ntfs-3g /dev/hda1 /mnt/windows -o locale=ja_JP.eucjp,uid=nobody,gid=nobody たったこれだけでWindowsXPのNTFS領域がリード/ライトが出来てしまいます。但しマウント時には、WinsowsXP側でクリーン・シャットダウンしておかないといけません。
NTFS-3G<m(__)m>

LVM(Logical Volume Manager)について
最初に予備知識:LVM-HOWTO.html 抜粋
物理媒体
/dev/hda、/dev/hda6、 /dev/sda など
物理ボリューム (PV)
物理ボリュームとは管理データをいくつか物理媒体に付加した物理媒体そのものを表します。
これを付加すると、LVM からは物理エクステントを入れる器に見えます。
物理エクステント(PE)
物理エクステントは、通常は数 MB の大きさになります。物理エクステントはボリューム・グループに配置されます。
ボリューム・グループ (VG)
ボリューム・グループは、いくつかの物理エクステント(複数の物理ボリュームやハード・ドライブから成る)から構成されます。
論理ボリューム (LV)
論理ボリュームは、パーティションと同じ意味
ファイルシステム
ext2 や ReiserFS、NWFS、 XFS、JFX、NTFS など

LVMを使ってファイルシステムを作成するには、以下の手順が必要です。
1.物理ボリュームの作成
[root@~]# fdisk /dev/sda ←スライスの作成、パーティションタイプをLVM:8e)
[root@~]# pvcreate /dev/sda1 /dev/sda2 ←物理ボリュームの作成
[root@~]# pvremove /dev/sda1 ←物理ボリュームの削除
[root@~]# pvchange -x y /dev/sda1 ←物理ボリュームの有効化(エクステンションの有効化)

2.ボリュームグループの作成
[root@~]# vgcreate VolGroup00 /dev/sda1 /dev/sda2←ボリュームグループの作成
[root@~]# vgremove VolGroup00          ←ボリュームグループの削除

3.論理ボリュームの作成          
[root@~]# lvcreate -L 3G -n LogVol00 VolGroup00   ←論理ボリュームの作成(3Gbyte、論理ボリューム名:LogVol00)
[root@~]# lvremove /dev/VolGroup00/LogVol00     ←論理ボリュームの削除

4.ファイルシステムの構築
[root@~]# mkfs.ext3 /dev/VolGroup00/LogVol00

5.物理ボリュームの追加(容量を増やす)
[root@~]# vgextend VolGroup00 /dev/sda3 ←スライスの作成済みボリューム

以下は、既にLVMで作成されたボリュームをマウントするまでの操作方法をまとめました。
[root@~]# modprobe mptspi		←scsiのモジュール(LSI Logic)をロードします。
[root@~]# modprobe dm_mod		←device-mapperモジュールをロードします。
[root@~]# pvdisplay				←物理ボリュームの表示
  --- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup00
PV Size 7.90 GB / not usable 23.41 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              252
  Free PE               0
  Allocated PE          252
  PV UUID               iFWMJG-uXV3-LOGN-lEY0-Wgtn-eqIj-Me5a2O

[root@~]# vgscan				←ボリュームグループの検索をします。
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2

[root@~]# vgdisplay VolGroup00	←ボリュームグループの情報表示
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.88 GB
  PE Size               32.00 MB
  Total PE              252
  Alloc PE / Size       252 / 7.88 GB
  Free  PE / Size       0 / 0
  VG UUID               eLPVOo-s3WH-EeP7-qzXz-X8ec-TSC4-o5nV9G

[root@~]# vgchange -a y VolGroup00     ←ボリュームグループの有効化
  2 logical volume(s) in volume group "VolGroup00" now active

[root@~]# mount /dev/VolGroup00/LogVol00 /mnt/sda1/     ←ボリュームグループの1番目をマウント
[root@~]# mount               ←マウント状態の確認
/tmpfs on / type tmpfs (rw)
/proc on /proc type proc (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw)
/sys on /sys type sysfs (rw)
none on /dev type tmpfs (rw)
none on /dev/pts type devpts (rw)
/USR on /usr+ type squashfs (ro,loop=/dev/loop0)
unionfs on /usr type unionfs (rw,dirs=/UNIONFS=rw:/usr+=ro)
/dev/mapper/VolGroup00-LogVol00 on /mnt/sda1 type ext3 (rw)
root@~]# ls /mnt/sda1/          ←マウントポイントからDISKの内容を操作することができ
ます。
bin   dev  home  lost+found  misc  net  poweroff  root  selinux  sys  usr
boot  etc  lib   media       mnt   opt  proc      sbin  srv      tmp  var
initramfsとinitrdについて
initramfsとinitrd (Initial RAM Disk)はgrubなどのboot-lodaerでvmlinuz等のkernelイメージを読み込んだ後の処理を引き継いでrootfsをマウント、initを起動するものです
initrdはまず、ddコマンドで必要なサイズのファイルを作りそれをloopbackマウントしファイルシステムを構築して、その中にinit起動までに必要なコマンドやmodules詰め込みます
initrd用のMakefile
#Create pepo26.img
  dd if=/dev/zero of=${INITRD} bs=1k count=8192 2>/dev/null 1>/dev/null
  mke2fs -m 0 -q -F -N 8192 ${INITRD} 2>/dev/null 1>/dev/null
  tune2fs -i 0 -c 0 ${INITRD} 2>/dev/null 1>/dev/null
  rm -rf ${MNTPNT}/lost+found
  mount -t ext2 -o loop ${INITRD} ${MNTPNT}
  mkdir -p "${MNTPNT}/${DSTMODDIR26}"
  cp -ap ${SINITRD}/* ${MNTPNT}
     for i in ${ADDMODULES26}; do \
       mod="`find ${SRCMODDIR26}/kernel -name "$${i}.ko"  2>/dev/null`" ; \
       [ -f "$${mod}" ] && cp -af $${mod} ${MNTPNT}/${DSTMODDIR26}/; \
  done
kernelが2.6.xxからinitramfsが採用され、予めファイルサイズに制限を加えたloopbackファイルを作る必要がない為、自由度がある PepoLinuxでは手抜きでmodulesを全てコピーして入れ込み14M程のサイズとなっています
intramfsはまず、適当なディレクトリを作りその中に必要なファイルを詰め込みcpioとgzipで固めます
initramfs用のMakefile
#Create pepo26.img
  mkdir -p "${MINITRD}/${DSTMODDIR26}"
  cp -ap ${SINITRD}/* ${MINITRD}
  cp -af ${SDRIVER} ${MINITRD}/${DSTMODDIR26}/
  cp -af ${SMODDEP} ${MINITRD}/${DSTMODDIR26}/
  umount ${MNROOT}
  (cd ${MINITRD}; find . | cpio -o -H newc ) | gzip -9c > $@.img
  rm -rf ${TMP} ${MNT} ${ISOLINUX}
initrdとinitramfsの違いはミニルートに/initがあればinitramfs
initrd場合:
イメージ: ファイルシステム (ext3など + gzip)
実装: ブロックデバイス (RAM ディスク)
実行: /linuxrc
rootfsをディレクトリへマウントして→pivot_root
/linuxrc 終了させると、カーネルがinitを起動
initramfsの場合:
イメージ アーカイブ (cpio + gzip)
実装: ファイルシステム
rootfsを適当なディレクトリへマウントして→switch_root
/init が exec /sbin/init する
実行: /init
initrdの展開
[root@~]# ll pepo.img
-rw-r--r-- 1 root root 1198051  6月  6 07:05 pepo.img
[root@~]# cat pepo.img |gzip -dc >pepo
[root@~]# mkdir t
[root@~]# mount pepo t -o loop
[root@~]# ll t/
drwxr-xr-x 2 root root  3072 11月 20  2005 bin
drwxr-xr-x 2 root root  1024  1月  9  2002 boot
drwxr-xr-x 2 root root  1024  8月 29  2004 cdrom
drwxr-xr-x 9 root root  5120  1月 24  2009 dev
drwxr-xr-x 2 root root  1024  8月 29  2004 dos
drwxr-xr-x 2 root root  1024  1月 26 21:31 etc
drwxr-xr-x 3 root root  1024  1月 26 21:31 initrdlocal
drwxr-xr-x 2 root root  1024 12月 11  2004 lib
-rwxr-xr-x 1 root root 18415 11月 25  2009 linuxrc
drwx------ 2 root root 12288  1月 26 21:31 lost+found
drwxr-xr-x 9 root root  1024  7月 25  2000 mnt
drwxr-xr-x 2 root root  1024  8月 15  1998 proc
drwxr-xr-x 3 root root  1024  9月 28  2004 root
drwxr-xr-x 2 root root  1024  1月 11  2009 sbin
drwxr-xr-x 2 root root  1024  2月  2  2006 sys
drwxrwxrwt 2 root root  1024  8月 29  2004 tmp
drwxr-xr-x 3 root root  1024 11月 19  2004 usr
drwxr-xr-x 5 root root  1024  7月 25  2000 var
[root@~]# du t/
.
.
3       t/usr
1       t/var/log
1       t/var/run
1       t/var/lock
4       t/var
2521    t/
[root@~]# vi t/linuxrc
.
.
umount /proc >/dev/null 2>&1
pivot_root . initrd >/dev/null 2>&1
exec sbin/init <>dev/console 2>&1
この後、新しいrootfsのinitが起動
initramfsの展開
[root@~]# ll pepo.img
-rw-r--r-- 1 root root 13897879  6月  6 07:14 pepo.img
[root@~]# mkdir t
[root@~]# cd t/
[root@t]# cat ../pepo.img | gzip -dc | cpio -i
67020 blocks
[root@t]# ll
total 20
drwxr-xr-x 2 root root  1640  6月  6 07:15 bin
drwxr-xr-x 2 root root    40  6月  6 07:15 boot
drwxr-xr-x 2 root root    40  6月  6 07:15 cdrom
drwxr-xr-x 2 root root    40  6月  6 07:15 dev
drwxr-xr-x 2 root root    40  6月  6 07:15 dos
drwxr-xr-x 6 root root   300  6月  6 07:15 etc
-rwxr-xr-x 1 root root 16844  6月  6 07:15 init
drwxr-xr-x 4 root root   740  6月  6 07:15 lib
drwxr-xr-x 9 root root   180  6月  6 07:15 mnt
drwxr-xr-x 2 root root    40  6月  6 07:15 proc
drwxr-xr-x 3 root root   100  6月  6 07:15 root
drwxr-xr-x 2 root root  1020  6月  6 07:15 sbin
drwxr-xr-x 2 root root    40  6月  6 07:15 sys
drwxrwxrwt 2 root root    40  6月  6 07:15 tmp
drwxr-xr-x 2 root root    40  6月  6 07:15 tmpfs
drwxr-xr-x 3 root root    60  6月  6 07:15 usr
drwxr-xr-x 5 root root   100  6月  6 07:15 var
[root@t]# du ./
.
.
3800    ./lib/udev
31212   ./lib
0       ./dos
36140   ./
[root@t]# vi init
.
.
exec switch_root "$NEWROOT" "$INIT"
この後、新しいrootfsのinitが起動
独自コマンドの紹介
pepoaltmta sendmail | postfix sendmailかpostfixに切り替える。例→ service sendmail stop ; pepoaltmta postfix ; service postfix start
(収録容量の関係でredhat-switchmailが使えないので自前でつくりました。)
pepobrct eth1 start | stop →eth0とeth1をブリッジ化します。
pepomailaccount →簡易的にmailのアカウントを連続的に例えばpepo1~pepo100を自動作成する。ログインシェルは作成しない。
pepouseradd →簡易的にuserアカウントを連続的に例えばpepo1~pepo100を自動作成する。
pepouserdel →簡易的に作成したmailのアカウントを連続的に例えばpepo1~pepo100を削除する。
pepopktgen →kernel2.6.xのpktgenモジュールを使ってネットワークに大量の負荷をかけます。homeディレクトにコピーして、各パラメータを編集してから使用する。/usr/local/bin/pktgen/の各サンプルスクリプトを参照して使って下さい。 これとは別にiprefを使いクライアント・サーバーで測定したほうがよいかも
pepoproxy →開発中のperlのpingモジュールとiptablesを使ったリダイレクトツール
peposnmpon localhost public 1 →全インターフェースのトラフィックを1分間毎に収集し、結果をパーセンテージでEXCEL..CSVへ出力しEXCELでグラフ化出来ます。pepopktgenと併用する事でswitchやrouterのインターフェースの通過トラフィックを簡易測定する事が出来ます。 Smartbitはべらぼうに高いですから少しまねてSmart-chobitなんちゃって
peposnmpoff →上記コマンドを停止させる。
pepouseraddcsv USER_DATA.CSV →USER_DATA.CSVへ『username@pepolinux.com,password』 のデータを作成し、指定したグループに順次登録と同時にhomeディレクトリにpublic_htmlも作成する。
pepomailaddcsv USER_DATA.CSV →USER_DATA.CSVへ『username@pepolinux.com,password』のデータを作成して、指定したグループに順次登録、ログインシェルは作成しない
pepousb-install →PepoLinuxのCDROMをマウントしている状態から指定したUSBメモリへPepoLinuxをインストールします。
pepop2pchat →FOMAのダイヤルイン用chatスクリプト、ppp-inコマンドのヘルパー
peporemote →FOMA携帯電話をUSB接続を自動で検出してダイヤルインを設定するスクリプトです。
pepomsrescue →WindowsXPが起動出来なくなった時、DISKをマウントして共有フォルダで公開します。
pepopodcastget →登録したpodcastのURLのmp3ファイルをゲットします。
WindowsXPのHDDレスキューを参照

免責
本パッケージソフトは全て完全無保証です。使用して如何なる損害が発生しても使用者側にその全ての責任が有ります。如何なる保障も責任も製作者側に求めない及ばない事を了承の上、御使用願います。又動かない不安定な動作をする等十分考えられますが、解決は全て使用者側の努力によります。 一切のサポートはしません!又、各収録パッケージでライセンス上問題を発見された方はお手数ですが、ご連絡頂けますよう宜しくお願いします。
Copyright pepolinux.com by IZAMUKARERA(アイザムカレラ) pepolinux@users.sourceforge.jp 2001.1.5-2011

履歴
2006.4.2:Ver0.10
1.PepoLinux-11.2をCentOS4.3ベースで再構築したので各パッケージのバージョンが最新へなった。
2.WindowsXPへインストール出来ないなど、かなりbugがありますが、Enterprise Linuxサーバーの検証などがより現実的になります。
3.PepoLinux-11.2がKernel2.4系と2.6系のデュアルブートに対し、シングルブートで今回はKernel2.6.15.4のみ

2006.4.19:Ver0.11
1.WindowsXPへインストール出来ないバグを修正(RAMSIZE:4096→16384)
2.Kernel2.6.16.5

2006.5.13:Ver0.12
1.Kernel2.6.16.11
2.CentOS4.4収録パッケージのバージョンUP
3.WindowsXPのHDDレスキュー、ドキュメント追加

2006.6.18:Ver0.13
1.Kernel2.6.16.16
2.CentOS4.4収録パッケージのバージョンUP
3.USBメモリからの設定ファイルが読めない件のバグ修正

2006.7.29:Ver0.14
1.Kernel2.6.17.6
2.CentOS4.4収録パッケージのバージョンUP

2007.1.8:Ver0.15
1.Kernel2.6.9-42.0.3-EL・・Centos4.4のモジュールを削減して使っています。
2.CentOS4.4収録パッケージのバージョンUP
3. ntfs-3gを収録しNTFSがリード/ライト出来るようになった。
4.USBメモリへのインストールと起動が可能になった。

2007.1.28:Ver0.16
1.Kernel2.6.9-42.0.3-EL・・Centos4.4のモジュールを削減して使っています。
2. mkisofs収録、ntfs-3g動作不能、他バグ修正。
3.CentOS4.4収録パッケージのバージョンUP

2007.4.8:Ver0.17
1.Kernel2.6.20-pepo
2.CentOS4.4収録パッケージのバージョンUP
3.Docomo FOMAの携帯電話を使ったダイヤル・インサーバーの設定を追加
4.他バク修正

2007.4.22:Ver0.18
1.Kernel2.6.20-pepo
2.CentOS4.4収録パッケージのバージョンUP
3.Docomo FOMA modem driver update:P,N系でもUSB抜き差し不要
4.firewall,他バク修正

2007.12.17:Ver0.19
1.Kernel2.6.23.9-pepo
2.CentOS4.5収録パッケージのバージョンUP
3.UNIONFSを使い、/usrをR/W出来るようにした。開発環境を整えた
4.yumを使ったパッケージ管理が出来るようにした(一部動作不安定)
5.FOMAドライバのバージョンUP
6.Remote Hand機能強化
7.Wake on LAN(WOL)パッケージ収録、ドキュメント掲載
8.FOMAのダイヤルインサーバーの設定加筆

2007.12.20:Ver0.20
1.Kernel2.6.20-pepo
2.CentOS4.4収録パッケージのバージョンUP
3.iptables 設定修正
4.chntpwコマンドのドキュメント修正

2008.6.28:Ver0.21
1.Kernel-2.6.25.6-pepo(kernel-2.6.25.6-55.fc9.src.rpm)
2.CentOS4.6収録パッケージのバージョンUP
3.Remote-Hand関連スクリプト修正
4.LVM,PPTP,OpenVPNパッケージ収録、他ドキュメント追加
5.リモートハンドの項目へFOMAの従量制料金の注意!を記載
6.unionfsのメモリ消費対策で起動時に未使用モードを追加
7.立ち上げ時に"HDD/peplinux/"のイメージを優先するようにした
8.epicon-4.4収録
9.WebShell-0.9.5収録:起動したら https://PepoLinux-IP:8022 でpythonのJavaScript and AJAXを体験

2008.11.9:Ver0.22
1.Kernel-2.6.25.6-pepo(kernel-2.6.25.6-55.fc9.src.rpm)
2.CentOS4.6収録パッケージのバージョンUP
3.sshfsのドキュメントと供に収録

2009.1.13:Ver0.23
1.Kernel-2.6.25.6-pepo(kernel-2.6.25.6-55.fc9.src.rpm)
2.CentOS4.7収録パッケージのバージョンUP
3.起動スクリプトを全面変更しハードウェアの検出方法など変更

2009.1.18:Ver0.24
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-73.fc9.src.rpm)
2.acm-FOMA.v0.26.06へバージョンUP
3.一部ハードウェア検出不可バグ修正

2009.1.24:Ver0.30
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-73.fc9.src.rpm)
2.CentOS5.2ベースに再開発

2009.2.1:Ver0.31
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-159.fc10.src.rpm)
2.boot時3選択、/usrをunionfsでmount出来ないバグ修正
3.ドキュメント整理
4.acm-FOMA.v0.26.07収録

2009.3.4:Ver0.32
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-159.fc10.src.rpm)
2.webドキュメントを見易く整理
3.収録パッケージの一部削除・追加
4.web,phpでeth設定機能追加
5.unionfsをデフォルトへ変更

2009.3.24:Ver0.33
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-159.fc10.src.rpm)
2.phpのssh2関連パッケージ追加

2009.4.3:Ver0.34
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-159.fc10.src.rpm)
2.Cetos5.3へアップグレード

2009.4.26:Ver0.35
1.Kernel-2.6.27.9-pepo(kernel-2.6.27.9-159.fc10.src.rpm)
2.Cetos5.3収録パッケージのバージョンUP

2009.5.6:Ver0.36
1.Kernel-2.6.29.1-pepo(kernel-2.6.29.1-111.fc11.src.rpm)

2009.6.15:Ver0.37
1.Kernel-2.6.29.4-pepo(kernel-2.6.29.4-167.fc11.src.rpm)
2.Cetos5.3収録パッケージのバージョンUP
3.Ruby on Railsパッケージインストール

2009.7.18:Ver0.38
1.Kernel-2.6.29.4-pepo(kernel-2.6.29.4-167.fc11.src.rpm)
2.Cetos5.3収録パッケージのバージョンUP
3.epicon-4.6インストール

2009.8.13:Ver0.39
1.Kernel-2.6.29.4-pepo(kernel-2.6.29.4-167.fc11.src.rpm)
2.Cetos5.3収録パッケージのバージョンUP
3.メモリ128Mbyte以下の動作モード追加

2009.8.31:Ver0.40
1.Kernel-2.6.29.6-pepo(kernel-2.6.29.6-217.2.16.fc11.src.rpm)
2.Cetos5.3収録パッケージのバージョンUP
3.netwox収録

2009.11.5:Ver0.41
1.Kernel-2.6.31.1-pepo(kernel-2.6.31.1-56.fc12.src.rpm)
2.Cetos5.4へバージョンUP
3.epicon-4.7収録
4.netwoxのremake(libpcapインクルード漏れ修正)

2009.11.25:Ver0.42
1.Kernel-2.6.31.1-pepo(kernel-2.6.31.1-56.fc12.src.rpm)
2.Cetos5.4収録パッケージのバージョンUP
3.メモリ容量優先から起動モード優先へ修正

2010.1.26:Ver0.43
1.Kernel-2.6.31.1-pepo(kernel-2.6.31.1-56.fc12.src.rpm)
2.Cetos5.4収録パッケージのバージョンUP
3.javaコンパイラ収録(C,C++,java言語の学習環境構築)

2010.6.13:Ver0.44
1.Kernel-2.6.32.12-pepo(kernel-2.6.32.12-115.fc12.src.rpm)
2.Cetos5.4収録パッケージのバージョンUP
3.起動方式をinitrdからinitramsfsへ変更

2011.2.12:Ver0.45
1.Kernel-2.6.35.6-pepo(kernel-2.6.35.6-48.fc14.src.rpm)
2.Cetos5.5収録パッケージのバージョンUP
3.epicon-4.8収録
4.boot方法にWindowsXPパーテションから手動立ち上げ追加

2011.3.15:Ver0.46
1.Kernel-2.6.35.6-pepo(kernel-2.6.35.6-48.fc14.src.rpm)
2.Cetos5.5収録パッケージのバージョンUP
3.boot時にsda1~検出できないバグ修正、他

2011.5.30:Ver0.47
1.Kernel-2.6.38.6-pepo(kernel-2.6.38.6-26.rc1.fc15.src.rpm)
2.Cetos5.6収録パッケージのバージョンUP
3.tlsmail install
4.pppスクリプト修正(FOMAパケット接続用)