設備用 Linux 環境

2002/10/25 kumagai

目標
方針
パーティション構成
  サイズ hda1起動時 hda2 起動時
hda1 2GB / /sys/system
hda2 2GB /sys/setup /
hda3 - - -
hda4 4GB以上 (hda5,hda6) (hda5,hda6)
hda5 2GB /sys/arc /sys/arc
hda6 2GB /sys/backup /sys/backup
ディレクトリ構成
ram0=/dev/ram0
ram1=/dev/ram1
ram2=/dev/ram2

ramdisk=/sys/ramdisk
systemdata=$ramdisk/.systemdata
userhome=$ramdisk/userhome
userdata=/user
arc=/sys/arc
+ dev (ram0)
+ sys luser システム関連ディレクトリ
| + arc (hda5)
| | + systemdata システム設定ファイル
| | + userhome ユーザーホームディレクトリ
| | + userdata ユーザーデータ
| + ramdisk (ram1)
| | + .systemdata $arc/systemdata からロード&セーブ
| | + userhome $arc/userhome からロード&セーブ
| .+ netscape
| + cache ->/tmp/user/.netscape/cache
| + backup (hda6)
| | + bin バックアップ関連コマンド
| | + system hda1 のバックアップ
| | + setup hda2 のバックアップ
| | + arc hda5 のバックアップ
| + system hda1 のマウントポイント
| + setup hda2 のマウントポイント
+ home
| + user ->$userhome
+ user (ram2)
+ lib
| + modules
| + 2.2.16-22LL6
| + modules.dep ->$systemdata/lib/modules/2.2.16-22LL6/modules.dep
+ etc
| + mtab ->/proc/mouts
| resolv.conf ->$systemdata/:etc/resolv.conf
| + aliases.db ->$systemdata/etc/aliases.db
| + HOSTNAME ->$systemdata/etc/HOSTNAME
| + ioctl.save ->$systemdata/etc/ioctl.save
| + issue ->$systemdata/etc/issue
| + modules.conf ->$systemdata/etc/modules.conf
| + remove_old.conf ->$systemdata/etc/remove_old.conf
| + sysconfig
| + hwconf ->$systemdata/etc/sysconfig/hwconf
| + keyboard ->$systemdata/etc/sysconfig/keyboard
| + network-scripts
| + ifcfg-eth0 ->$systemdata/etc/sysconfig/network-scripts/ifcfg-eth0
+ tmp ->$systemdata/tmp
+ var ->$systemdata/var
+ lock ->$systemdata/var/lock
+ log ->$systemdata/var/log
+ run ->$systemdata/var/run
+ spool ->$systemdata/var/spool
+ tmp ->$systemdata/var/tmp
設定シーケンス
01).起動時に /etc/rc.d/ramdisk start によりラムディスク設定をして、全てのパーティションをリードオンリーに設定する。

start() {
  action "Setting hard disk parameter" /sbin/hdparm -d1 -c3 /dev/hda
  action "Remounting root filesystem in read-only mode" mount -n -o remount,ro /
  action "Creating dev ramdisk" mke2fs $ram0
  action "Creating system/userhome data ramdisk" mke2fs $ram1
  action "Creating user data ramdisk" mke2fs $ram2

  action "Premounting dev ramdisk" mount -n $ram0 $ramdisk
  action "Loading dev ..." cp -a /dev/* $ramdisk
  action "Unmounting dev ramdisk" umount -n $ramdisk
  action "Overwrite mounting dev ramdisk" mount -n $ram0 /dev

  action "Mounting system/userhome data ramdisk" mount -n $ram1 $ramdisk
  action "Mounting user data ramdisk" mount -n $ram2 $userdata
  action "Mounting archive filesystem" mount -n -o ro /dev/hda5 $arc
  action "Loading system data ..." cp -a $arc/systemdata $systemdata
  action "Loading user home ..." cp -a $arc/userhome $ramdisk
  action "Loading user data ..." rsync -ax $arc/userdata/ $userdata/
  action "Removing lost+found directory" rm -Rf /user/lost+found
  action "Creating save flag" touch $ramdisk/.save_flag
}

02).終了時に /etc/rc.d/init.d/halt -> /etc/rc.d/ramdisk stop により /sys/arc を一瞬リードライトにして、変更点を書き戻す。

stop() {
  if [ -f $ramdisk/.save_flag ]; then
    runcmd "Removeing old data(s)" /usr/local/bin/remove_old
    runcmd "Remounting archive filesystem in read-write mode" mount -o remount,rw $arc
    runcmd "Saving system data etc ..." rsync -aux --delete $systemdata/etc/ $arc/systemdata/etc/
    runcmd "Saving system data lib ..." rsync -aux --delete $systemdata/lib/ $arc/systemdata/lib/
    #runcmd "Saving user home data ..." rsync -aux --delete $userhome/ $arc/userhome/
    runcmd "Saving user data ..." rsync -aux --delete $userdata/ $arc/userdata/
    runcmd "Remounting archive filesystem in read-only mode" mount -o remount,ro $arc
  fi
}
既知の問題点
  1. /etc/modules.conf が kudzu で変更できない。
  2. grub-install で失敗する。以下の手順でインストールできる。
    #mv /etc/mtab /etc/mtab-
    #sed 's/root/hda1/' mtab- > /etc/mtab
    #grub-install /dev/hda
    #mv /etc/mtab- /etc/mtab