■ シェルについて
Linuxで最も一般的なシェルは、bash(Bourne-Again Shell)です。
Debian GNU/Linuxでも、標準のシェルとして採用されています。
Armadillo 400/800(Atmark Distを使用した場合)は、bashの代わりにBusyBoxのashが使われます。
ashは、bashと良く似ていますが一部の機能が省かれており、軽量ですので組み込みシステムに向いています。
現在使われているシェルは、以下のコマンドで分かります。
[root@armadillo440-0 (ttymxc1) ~]# echo $SHELL
/bin/ash
[root@armadillo440-0 (ttymxc1) ~]#
■ シェルプロンプトの環境変数
シェルプロンプトは、PS1環境変数で設定されています。
[root@armadillo440-0 (ttymxc1) ~]# echo "$PS1"
[\u@\h (ttymxc1) \w]\$
[root@armadillo440-0 (ttymxc1) ~]#
PS1環境変数は、/etc/profile中に記載されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/profile
# /etc/profile
alias ll="ls -lF"
alias ls="ls -F"
alias rm="rm -i"
TZ=JST-9
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
PS1="[\u@\h (`tty | cut -b6-`) \w]\\$ "
ulimit -c 0
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
umask 002
else
umask 022
fi
USER=`id -un`
LOGNAME=$USER
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
EDITOR=vi
VISUAL=vi
export TZ PATH PS1 USER LOGNAME HOSTNAME HISTSIZE EDITOR VISUAL
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
unset i
[root@armadillo440-0 (ttymxc1) ~]#
■ PS1="[\u@\h (`tty | cut -b6-`) \w]\\$ "の意味
" " | "で囲まれた部分が、シェルプロンプトとして表示されます。 |
[ ] | 見易くするための文字列です。特に意味はありません。 |
\u | ユーザ名を表示します。 |
@ | ユーザ名とホスト名を区切るために表示している文字列です。特に意味はありません。 |
\h | ホスト名を表示します。 |
tty | 標準入力になっている端末のデバイスファイル名(使用しているポート名)を表示します。 |
cut -b6- | デバイスファイル名の6バイト目以降を出力します。ここではデバイスファイル名/dev/ttymxc1の/dev/をカットしています。 |
\w | ホームディレクトリを基準にカレントディレクトリを表示します。 |
\\$ | \$: rootユーザの場合は#、それ以外のユーザの場合$を表示します。 |
■ ホスト名の変更
シェルプロンプトを変更する例として、ここではホスト名を変更してみます。
現在のホスト名は、以下のコマンドで確認できます。
[root@armadillo440-0 (ttymxc1) ~]# hostname
armadillo440-0
ここでは現在のホスト名がarmadillo440-0であることが分かります。
ホスト名は/etc/HOSTNAME (/etc/config/HOSTNAMEにシンボリックリンク)に記述されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/HOSTNAME
armadillo440-0
[root@armadillo440-0 (ttymxc1) ~]#
また、ドメイン名は/etc/hosts(/etc/config/hostsにシンボリックリンク)に記述されています。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 armadillo440-0
::1 localhost.v6
[root@armadillo440-0 (ttymxc1) ~]#
ホスト名を変更する場合は、/etc/HOSTNAMEと/etc/hostsの両方を変更します。
ホスト名をarmadillo440-0からarmadillo440-1に変更した場合の例を以下に示します。
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/HOSTNAME
armadillo440-1
[root@armadillo440-0 (ttymxc1) ~]#
[root@armadillo440-0 (ttymxc1) ~]# cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 armadillo440-1
::1 localhost.v6
[root@armadillo440-0 (ttymxc1) ~]#
変更したホスト名を(一時的に)有効にするために、以下のコマンドを実行します。
[root@armadillo440-0 (ttymxc1) ~]# hostname -F /etc/HOSTNAME
[root@armadillo440-1 (ttymxc1) ~]# hostname -f
armadillo440-1
ホスト名がarmadillo440-0からarmadillo440-1に変更されていることが確認できます。
■ 変更したホスト名の保存
ArmadilloはRAMDISKという仕組みでRAMの一部をHDDのように使い、そこにルートファイルシステムを置いています。
前記したhostname -F /etc/HOSTNAMEを実行しても、ホスト名の変更内容はルートファイルシステムへの変更のため、電源を切ると全て失われてしまいます。
ただし例外として/etc/configディレクトリ以下のファイルだけは、保存できるようになっています。
/etc/HOSTNAME(/etc/config/HOSTNAMEにシンボリックリンク)と/etc/hosts(/etc/config/hostsにシンボリックリンク)を保存するためには、以下のコマンドを実行して下さい。
[root@armadillo440-1 (ttymxc1) ~]# flatfsd -s
flatfs[1573]: using storage at /dev/flash/config
flatfs[1573]: saving fs to partition 1, tstamp=19
flatfs[1573]: Wrote 666 bytes to flash in 3 seconds
Flash filesystem is valid
Armadilloを再起動すると、ホスト名が変更されていることが確認できます。
■ 参考情報1
/etc/defaultには、ATDEで設定した内容が保存されています。
上記で変更した内容をデフォルト設定に戻したい(初期化したい)場合は、以下のコマンドを実行して下さい。
[root@armadillo440-1 (ttymxc1) ~]# flatfsd -w
flatfsd[1576]: Nonexistent or bad flatfs (0), creating new one...
flatfsd[1576]: Created 8 configuration files (699 bytes)
flatfs[1577]: using storage at /dev/flash/config
flatfs[1577]: saving fs to partition 0, tstamp=20
flatfs[1577]: Wrote 636 bytes to flash in 2 seconds
Flash filesystem is valid
[root@armadillo440-1 (ttymxc1) ~]# cat /etc/HOSTNAME
armadillo440-0
[root@armadillo440-1 (ttymxc1) ~]# cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 armadillo440-0
::1 localhost.v6
[root@armadillo440-1 (ttymxc1) ~]#
上記コマンドを実行すると、/etc/configの下にあるファイルが削除され、/etc/defaultの内容が/etc/configの下にコピーされます。 そして、この内容がフラッシュメモリのconfig領域に保存されます。 Armadilloを再起動すると、デフォルト設定でArmadilloが動作します。
■ 参考情報2
クロスコンパイル時にホスト名等を指定する場合は、ATDEを起動してromfs/etc/default下の以下のファイルを変更して下さい。
atmark@atde5:~/atmark-dist/romfs/etc/default$ cat HOSTNAME
armadillo440-0
atmark@atde5:~/atmark-dist/romfs/etc/default$ cat hosts
127.0.0.1 localhost
127.0.0.1 armadillo440-0
::1 localhost.v6
atmark@atde5:~/atmark-dist/romfs/etc/default$