Armadillo 440 - Debian設定方法

1. WindowsでTFTPサーバーを設定してlinux.bin.gzromfs.img.gzをTFTP経由でダウンロードできる状態にする
2. Serial Port経由でHermitからこんな感じにsetbootdeviceを設定

hermit> setbootdevice tftp 192.168.10.10 192.168.10.1
        --kernel=linux.bin.gz --userland=romfs.img.gz

3. 設定ジャンパーをはずして、リブートさせる。
4. ネットワーク経由で起動したらしたらmicroSDのパーテションを作る

[armadillo ~]# fdisk /dev/mmcblk0
The number of cylinders for this disk is set to 124277.
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): d                                                     
Selected partition 1
Command (m for help): n                                                     
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-124277, default 1):                                       
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-124277, default 124277):      
Using default value 124277
Command (m for help): w                                                     
The partition table has been altered!
Calling ioctl() to re-read partition table.
 mmcblk0: p1
 mmcblk0: p1
Syncing disks.
[armadillo ~]#

5. microSDを初期化する

[armadillo ~]# mke2fs -j /dev/mmcblk0p1
mke2fs 1.25 (20-Sep-2001)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
497984 inodes, 994220 blocks
49711 blocks (5%) reserved for the super user
First data block=0
31 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180.00 days, whichever comes first.  Use tune2fs -c or -i to override

6. microSDをマウントしてカーネルをダウンロード

[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# mkdir /mnt/boot
[armadillo ~]# cd /mnt/boot
[armadillo /mnt/boot]# wget http://download.atmark-techno.com/armadillo-440/image/linux-a400- ⏎
[version].bin.gz
[armadillo /mnt/boot]# mv linux-a400-[version].bin.gz /mnt/boot/linux.bin.gz
[armadillo /mnt/boot]# cd
[armadillo ~]# umount /mnt

7. Linuxをダウンロード

[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# mkdir tmp
[armadillo ~]# mount -t ramfs ramfs tmp
[armadillo ~]# cd tmp
[armadillo ~/tmp]# for N in 1 2 3 4 5 a4x0; do
> wget http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-${N}.tgz;
> gzip -cd debian-lenny-armel-${N}.tgz | (cd /mnt; tar xf -);
> sync;
> rm -f debian-lenny-armel-${N}.tgz;
> done
[armadillo ~/tmp]# cd
[armadillo ~]# umount tmp
[armadillo ~]# rmdir tmp
[armadillo ~]# umount /mnt

8. 電源を切って設定ジャンパーをONにして起動
9. Hermitが立ち上がったら、以下の設定を入れる

hermit> setbootdevice mmcblk0p1
hermit> setenv console=ttymxc1,115200 root=/dev/mmcblk0p1 noinitrd rootwait

10. 電源を切って設定ジャンパーをはずして起動
11. Debianが無事起動することを確認

AFSで使用するディスクを準備する

AFSで使用するディスクはextended file system (ext2,ext3,ext4)が一般的に最適といわれています。物理ディスクを準備するのが好ましいでしょう。ディスクサイズについてですが、データのたまり具合が早い環境や、画像や動画などの数メガ、数百メガのファイルが多い場合は大容量(1TB-2TB)が有利ですが、そもそもAFSはあまりデータの追加頻度が高いもの、画像や動画のファイルサイズの大きめのレポジトリには不向きです。長期的にはハードディスククラッシュ後のリカバリー等も考えると中容量(250GB-500GB)くらいが理想でしょう。金融などミッションクリティカルなシーンを想定する環境ではRAID構成で設計するのも手です。

まずはパーテションから行います。

# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 32635.
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)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-32635, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-32635, default 32635):
Using default value 32635

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
# ls /dev/sdb*
sdb  sdb1

次にmkfs.ext3を使ってext3でパーテションを初期化します。

# mkfs.ext3 -b 4096 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
32768000 inodes, 65535151 blocks
3276757 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
2000 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

/etc/fstabを編集してマウント情報を追加します。

  LABEL=/                 /                       ext3    defaults        1 1
  LABEL=/boot             /boot                   ext3    defaults        1 2
  tmpfs                   /dev/shm                tmpfs   defaults        0 0
  devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  sysfs                   /sys                    sysfs   defaults        0 0
  proc                    /proc                   proc    defaults        0 0
  /dev/hda6               /v                      xfs     rw              0 0
+ /dev/sdb1               /vicepa                 ext3    defaults        1 1
  LABEL=SWAP-sda3         swap                    swap    defaults        0 0

最後にmount先をmkdirして、mountコマンドでデバイスをマウントします。

# mkdir /vicepa
# mount /vicepa
# ls -la /vicepa
total 28
drwxr-xr-x  3 root root  4096 Sep 18 06:31 .
drwxr-xr-x 27 root root  4096 Sep 18 06:41 ..
drwx------  2 root root 16384 Sep 18 06:31 lost+found
# echo 'Hello, world!' > test.txt
# cat test.txt
Hello, world!

CentOS Client Machineのインストール手順

CentOS 5

まずは、起動時にGraphical Desktop走らないようにinittabを調整。

tkpfdev1 # yum install vim-enhanced
tkpfdev1 # vim /etc/inittab
- id:5:initdefault:
+ id:3:initdefault:
tkpfdev1 # reboot

次に、マシンのMAC Addressを確認して、DHCPに登録します。ここではtkpfdev1.home.localというホスト名とそれに割り当てるIPアドレスを192.168.0.20としています。

tkpfdev1 # /sbin/ifconfig | grep -i HWaddr
eth0      Link encap:Ethernet  HWaddr 54:XX:XX:XX:XX:3B
tkpfdev1 $ ssh yizumi@dns1
dns1 $ cd /etc/tinydns/root
dns1 $ sudo ./add-host tkpfdev1.home.local 192.168.0.20
dns1 $ sudo make
dns1 $ sudo svc -dx /service/dnscache
dns1 $ sudo svc -dx /service/tinydns
dns1 $ dig tkpfdev1.home.local
dns1 $ dig -x 192.168.0.20
dns1 $ sudo vim /etc/dhcp3/hosts.static
> host tkpfdev1 {
>     hardware ethernet 54:XX:XX:XX:XX:3B;
>     fixed-address tkpfdev1.home.local;
> }
dns1 # sudo /etc/init.d/dhcp3-server restart
dns1 # exit
tkpfdev1 $ sudo /etc/init.d/network stop
tkpfdev1 $ sudo /etc/init.d/network start
tkpfdev1 $ /sbin/ifconfig
inet addr:192.168.0.20
tkpfdev1 $ sudo yum install ntp
tkpfdev1 $ sudo vim /etc/sysconfig/ntpd
tkpfdev1 $ sudo vim /etc/ntpd.conf
+ server ntp1.home.local
tkpfdev1 $ sudo chkconfig ntpd on
tkpfdev1 $ sudo chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
tkpfdev1 $ sudo /etc/init.d/ntpd start
tkpfdev1 $ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 dns1.home.local 219.123.70.90    3 u   39   64    7    1.015  659.814   0.474
 LOCAL(0)        .LOCL.          10 l   37   64    7    0.000    0.000   0.001
tkpfdev1 $ ######################### IPTABLE無効化 #######################
tkpfdev1 $ chkconfig iptables off
tkpfdev1 $ sudo /etc/init.d/iptables stop

tkpfdev1 $ ############### KERBEROS SETUP #################
tkpfdev1 $ sudo yum install krb5-workstation pam_krb5
tkpfdev1 $ sudo vim /etc/krb5.conf
> HOME.LOCAL
tkpfdev1 $ su
tkpfdev1 # kadmin -p sysadmin
kadmin:  addprinc -randkey host/tkpfdev1.home.local
kadmin:  ktadd host/tkpfdev1.home.local
kadmin:  quit
tkpfdev1 # klist -ke
tkpfdev1 #
tkpfdev1 # ################ LDAP SETUP ###################
tkpfdev1 # yum install openldap openldap-clients cyrus-sasl-ldap cyrus-sasl-gssapi nss_ldap
tkpfdev1 # vim /etc/ldap.conf
> host afs2.home.local
> base dc=home,dc=local
tkpfdev1 # vim /etc/openldap/ldap.conf
> BASE dc=home,dc=local
> URI ldap://afs2.home.local ldap://afs2.home.local:666
> SASL_MECH GSSAPI
tkpfdev1 # kinit sysadmin
tkpfdev1 # ldapsearch -LLL
tkpfdev1 # ################# OPENAFS ###################
tkpfdev1 # exit
tkpfdev1 $ cd
tkpfdev1 $ mkdir src
tkpfdev1 $ cd src
tkpfdev1 $ sudo yum install kernel-2.6.18-308.1.1.el5
tkpfdev1 $ wget http://www.openafs.org/dl/openafs/1.6.1/rhel5/i386/kmod-openafs-1.6.1-1.2.6.18_308.1.1.el5.i686.rpm
tkpfdev1 $ wget http://www.openafs.org/dl/openafs/1.6.1/rhel5/i386/openafs-1.6.1-1.el5.i386.rpm
tkpfdev1 $ wget http://www.openafs.org/dl/openafs/1.6.1/rhel5/i386/openafs-client-1.6.1-1.el5.i386.rpm
tkpfdev1 $ wget http://www.openafs.org/dl/openafs/1.6.1/rhel5/i386/openafs-docs-1.6.1-1.el5.i386.rpm
tkpfdev1 $ wget http://www.openafs.org/dl/openafs/1.6.1/rhel5/i386/openafs-krb5-1.6.1-1.el5.i386.rpm
tkpfdev1 $ sudo rpm -ihv *.rpm
tkpfdev1 $ cd /usr/vice/etc
tkpfdev1 $ su
tkpfdev1 # echo "home.local" > ThisCell
tkpfdev1 # vim CellServDB.dist
tkpfdev1 # vim CellServDB.local
tkpfdev1 # cat /etc/sysconfig/openafs
# OpenAFS Client Configuration
AFSD_ARGS="-dynroot -fakestat -afsdb"
# OpenAFS Server Configuration
BOSSERVER_ARGS=
tkpfdev1 # reboot
tkpfdev1 # kinit sysadmin
tkpfdev1 # aklog
tkpfdev1 # ln -s /afs/home.local /dena
tkpfdev1 # ##################### nsswitch config ####################
tkpfdev1 # cat /etc/pam.d/system-auth
  #%PAM-1.0
  # This file is auto-generated.
  # User changes will be destroyed the next time authconfig is run.
  auth        required      pam_env.so
  auth        sufficient    pam_unix.so nullok try_first_pass
  auth        requisite     pam_succeed_if.so uid >= 500 quiet
+ auth        sufficient    pam_krb5.so use_first_pass
  auth        required      pam_deny.so

  account     required      pam_unix.so
  account     sufficient    pam_succeed_if.so uid < 500 quiet
  account     required      pam_permit.so

  password    requisite     pam_cracklib.so try_first_pass retry=3
  password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
+ password    sufficient    pam_krb5.so use_authtok
  password    required      pam_deny.so

  session     optional      pam_keyinit.so revoke
  session     required      pam_limits.so
  session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
  session     required      pam_unix.so
+ session     optional      pam_krb5.so
tkpfdev1 # vim /etc/nsswitch.conf
< passwd:     files
< shadow:     files
< group:      files
> passwd:     files ldap
> shadow:     files ldap
> group:      files ldap
tkpfdev1 # vim /etc/ssh/ssh_config
  Host *
          GSSAPIAuthentication yes
+         GSSAPIDelegateCredentials yes

NTPの設定

すでに、ネットワーク上においてあるNTPサーバー(192.168.0.8)にクライアントをシンクロさせる場合の、クライアント側の設定は以下のとおり。

$ sudo yum install ntp
$ sudo /etc/init.d/ntpd stop
$ sudo ntpdate 192.168.0.8
$ sudo hwclock --systohc # system clockをhcクロックにシンクロさせる
$ sudo vim /etc/ntp.conf
+ server 192.168.0.8
- server 127.0.0.1
$ sudo chkconfig ntpd on
$ sudo chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
$ /etc/init.d/ntpd start
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*dns1.home.local 59.106.180.168   3 u    7   64    7    2.688    0.510   1.027

DNSが落ちたときにサーバー間の時間がずれて、最悪ホストにログインできなくなってしまうので/etc/ntp.confに設定するserverの値はIPアドレスにしておくほうがお勧めです。名前解決の時間も短縮できますし。

ほかのホストの時間と比べてみる。

$ ssh dns1 date && date
Fri Jun 15 08:21:10 JST 2012
Fri Jun 14 16:21:10 PDT 2012
$

おっと、、なぜか太平洋標準時間になっているようだ。
タイムゾーンを変更する。

$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
$ ssh dns1 date && date
Fri Jun 15 08:22:31 JST 2012
Fri Jun 15 08:22:31 JST 2012
$

ハッピー。

vmware-tools installation fails

Installing vmware-tools is generally easy, but you can run into hick-ups here and there.

If you see the following:

Searching for a valid kernel header path...
The path "" is not valid.
Would you like to change it? [yes]

You probably need to install the kernel header. You can do this by

# apt-get update
# apt-get install linux-headers-$(uname -r) gcc make gcc-4.1 libglib2.0-0

Then retry by running vmware-install.pl

Trouble shooting

That annoying locale message perl gives you

This may occur after installing perl on your Debian for the first time.

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US.UTF-8",
        LC_ALL = "en_US.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

You can fix this by installing "locales" and configuring it.

$ su apt-get install locales
$ su dpkg-reconfigure locales

Once you have the configuration screen, select en_US.UTF-8.