玄人志向 KURO-BOX/PRO

このサーバーは2007年8月23日より wide.dip.jp サーバーとして密かに戸塚別宅で実証試験中です。



KURO-BOX/PRO をゲット!



HDD を実装しました



Debian Linux 立ち上げと開発環境構築



  1. Debian Linux 化します

    1. KURO-BOX/PRO を組み立てて、まだ一度も HDD ブート化していない状態で作業します。 まずは BusyBox Linux の状態で Windows PC から samba 共有ディレクトリ「mtd device」 (\\kurobox-pro\mtd device\) へ以下のファイルをコピーします。 「mtd device」とは FlashMemory にある共有エリアです。 約200MB の容量があります。


    2. root で telnet ログインして、以下のコマンド操作をして /mnt/mtd に展開してから、インストーラ InitDisk1.sh を起動します。

      # cd /mnt/mtd
      # tar xf inst.tar
      # ./InitDisk1.sh
      # shutdown -r now
      
    3. 電源ボタン ON で HDD から Debian Linux が立ち上がります。

    4. これ以降、telnet ログイン不可となり、代わりに SSH2 でログインします。 ID, Password は root / kuroadmin で変わりません。 また、IP address は DHCP クライアント機能で自動取得します。 aptitude コマンドで Debian Linux を最新状態にします。

      # aptitude update
      # aptitude upgrade
      
    5. これで Debian Linux 化は完了です。
      こんなに簡単なのは、複雑な手順がスクリプトに記述してあるキットとなっているからです。

    6. ディスク使用状況を確認してみました。 Debian Linux 本体が入っているのは /dev/sda2、ユーザエリア /home は /dev/sda4 となっています。 こういう HDD パーティションの切り方もイイですね。 サーバソフト関連は3GB もあれば容量的に問題ないし、容量を食うユーザエリアが分離していますから。

      kurobox:~# df
      
      Filesystem           1K-blocks      Used Available Use% Mounted on
      /dev/sda2              2893660    312424   2434244  12% /
      tmpfs                    62964         0     62964   0% /lib/init/rw
      tmpfs                    62964         4     62960   1% /dev/shm
      /dev/sda4            150751552     74264 143019508   1% /home
      
    7. この Debian Linux kit では、既に OpenSSH 4.3wget 1.10.2 がインストールされていました。



  2. セルフ開発環境を構築します

    1. gcc などの開発環境をインストールします

      # aptitude install gcc make libc-dev libc6-dev
      
    2. patch コマンドをインストールします

      # aptitude install patch
      


  3. samba 3.024 をインストールします

    1. samba は Debian 環境の設定に必要なので、先にインストールします。 KURO-BOX/HG の samba インストール手順と同じですが、共有ディレクトリだけが違います。 ファイル共有ディレクトリは /home/share としました。 違う箇所だけ以下に記述します。

    2. /etc/samba/smb.conf を以下のように記述します。 赤字 の部分は KURO-BOX/HG の設定からの変更点です。

      # Samba config file
      
      [global]
      	smb passwd file = /etc/samba/smbpasswd
      	display charset = eucJP
      	server string = Samba %h
      	dos charset = CP932
      	workgroup = workgroup
      	os level = 20
      	username map = /etc/samba/smbusers
      	encrypt passwords = yes
      	hosts allow = all
      	security = user
      	unix charset = eucJP
      
      
      [share]
      	writeable = yes
      	path = /home/share
      	force directory mode = 0700
      	force group = nogroup
      	force create mode = 0700
      	create mask = 0700
      	force user = nobody
      	directory mask = 0700
      	valid users = nobody
      
    3. /home/share デレクトリを作成し、オーナーを nobody : nodroup、パーミッションを700とします。

      # mkdir /home/share
      # chown nobody /home/share
      # chgrp nogroup /home/share
      # chmod 700 /home/share
      
    4. これ以外の設定は KURO-BOX/HG の samba インストール手順を参照ください。



  4. カーネル・モジュールのインストール

    1. デバイス・ドライバなどのカーネル・モジュールを展開します。 modules.tar を /usr/local/src ディレクトリにコピーして以下のコマンドを実行します。

      # cd /lib/modules
      # tar xpf /usr/local/src/modules.tar
      
    2. これで完了です。



  5. nvram, miconapl を使えるようにする



  6. ファンの制御と電源スイッチのスクリプト追加



  7. root の bash を使いやすくする

    1. /root/.bashrc を編集します。

      # ~/.bashrc: executed by bash(1) for non-login shells.
      
      export PS1='\h:\w\$ '
      umask 022
      
      # You may uncomment the following lines if you want `ls' to be colorized:
      export LS_OPTIONS='--color=auto'
      eval `dircolors`
      alias ls='ls $LS_OPTIONS -a'
      alias ll='ls $LS_OPTIONS -l -a'
      alias l='ls $LS_OPTIONS -lA'
      alias dir='ls $LS_OPTIONS -la'
      
      # Some more alias to avoid making mistakes:
      alias rm='rm -i'
      alias cp='cp -i'
      alias mv='mv -i'
      
    2. /root/.bash_profile を編集します。

      # ~/.profile: executed by Bourne-compatible login shells.
      
      if [ -f ~/.bashrc ]; then
        . ~/.bashrc
      fi
      
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      export PATH
      
      mesg n
      
    3. 以上の変更は私の好みなので、使いやすいように各人の好みに調整してください。



  8. aliases の設定

    1. 最低限、以下の aliases 設定はしておいたほうがよいです。 /etc/aliases に設定します。

      # See man 5 aliases for format
      mailer-daemon: postmaster
      postmaster: root
      nobody: root
      hostmaster: root
      usenet: root
      news: root
      webmaster: root
      www: root
      ftp: root
      abuse: root
      noc: root
      security: root
      
    2. /etc/aliases を変更したら、newaliases コマンドを実行して有効化します。

      # newaliases
      


  9. nano の使い方



サーバソフトなどの導入





シリアルケーブルの製作



シリアルケーブル

U-Boot



U-Boot について

U-Boot の環境変数

  1. U-Boot はどのデバイスのどのパーティションから Linux をブートさせるかなどのブート情報は、U-Boot の環境変数に記述します。 U-Boot の環境変数の読み出し/書き込みは、以下のいずれかでできます。

    1. U-Boot の setenv コマンドを使う

      • Linux が何らかの要因で立ち上がらなくなっても使えます。

      • setenv でブートのパラメータなどを変更しても、電源 OFF にしたり、リブートしたりすると消えてしまいます。

        • これは欠点ではなく、環境変数を変更してチェックするのにむしろ有利です。 誤った変数を設定しても、電源 OFF 等で元に戻りますから。

        • setenv で設定した環境変数を保存するには saveenv を実行します。

    2. Linux の nvram コマンドを使う

      • nvram は KURO-BOX/PRO 特有のコマンドです。

      • 環境変数を書き込むには以下のようにします。 setenv と違い、変更内容は直ちに書き込みされます。

        # nvram -c set [環境変数名] [環境変数の内容]
        
      • 以下のようにコマンド発行すると、環境変数の全リストが表示されます。 上記の変更に入力誤りはないか、このコマンド操作でチェックします。

        # nvram -c printenv
        
  2. U-Boot の初期状態(工場出荷時設定)の環境変数でブートすると、FlashMemory から BusyBox Linux が立ち上がります。 KURO-BOX/HG の EM-mode のような最小限の Linux です。 以下は U-Boot のコマンドでこの環境変数をリスト出力したものです。

    Marvell>> printenv
    
    baudrate=115200
    loads_echo=0
    ipaddr=192.168.11.150
    serverip=192.168.11.1
    rootpath=/nfs/arm
    cpuName=926
    CASset=min
    MALLOC_len=4
    bootargs_end=:::DB88FXX81:eth0:none
    ethact=egiga0
    ethaddr=00:16:01:XX:XX:XX
    buffalo_ver=BOOTVER=1.091
    build_time=15:59:38
    initrd=initrd.buffalo
    kernel=uImage.buffalo
    bootargs_base=console=ttyS0,115200
    bootargs_root=root=/dev/mtdblock2 rw panic=5
    bootargs=$(bootargs_base) $(bootargs_root) $(buffalo_ver)
    nand_uImage_offset=20000
    default_kernel_addr=0x00100000
    default_initrd_addr=0x02000000
    bootcmd=nboot $(default_kernel_addr) 0 $(nand_uImage_offset) ;setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr)
    def_tftp=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); setenv bootargs $(bootargs_base) $(bootargs_root)  rw initrd=0x02000040,20M panic=5 $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr)
    nand_boot=yes
    stdin=serial
    stdout=serial
    stderr=serial
    enaMonExt=no
    enaFlashBuf=yes
    enaCpuStream=no
    ethprime=egiga0
    bootdelay=3
    disaMvPnp=no
    overEthAddr=no
    usb0Mode=host
    usb1Mode=host
    
    Environment size: 1099/4092 bytes
    
  3. 以下は、内臓 HDD からブートできる状態での U-Boot 環境変数を nvram コマンドでリスト出力したものです。

    # nvram -c printenv
    
    1: [baudrate=115200]
    2: [loads_echo=0]
    3: [ipaddr=192.168.11.150]
    4: [serverip=192.168.11.1]
    5: [rootpath=/nfs/arm]
    6: [cpuName=926]
    7: [CASset=min]
    8: [MALLOC_len=4]
    9: [bootargs_end=:::DB88FXX81:eth0:none]
    10: [ethact=egiga0]
    11: [ethaddr=00:16:01:XX:XX:XX]
    12: [stdin=serial]
    13: [stdout=serial]
    14: [stderr=serial]
    15: [enaMonExt=no]
    16: [enaFlashBuf=yes]
    17: [enaCpuStream=no]
    18: [ethprime=egiga0]
    19: [buffalo_ver=BOOTVER=1.091]
    20: [build_time=18:10:02]
    21: [initrd=initrd.buffalo]
    22: [kernel=uImage.buffalo]
    23: [nand_uImage_offset=20000]
    24: [default_initrd_addr=0x02000000]
    25: [def_tftp=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); setenv bootargs $(bootargs_base) $(bootargs_root)  rw initrd=0x02000040,20M panic=5 $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr)]
    26: [bootdelay=3]
    27: [disaMvPnp=no]
    28: [overEthAddr=no]
    29: [usb0Mode=host]
    30: [usb1Mode=host]
    31: [default_kernel_addr=0x00100000]
    32: [bootargs_base=console=ttyS0,115200]
    33: [bootargs_root=root=/dev/sda2 rw panic=5]
    34: [bootargs=console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09]
    35: [bootcmd=ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)]
    36: [nand_boot=no]
    


ブートデバイスの選択



バックアップ&リストア



バックアップ

  1. バックアップ方針

  2. /home/share のバックアップ

  3. /home のバックアップ



リストア