「SetupDevEnv.sh」の編集履歴(バックアップ)一覧はこちら
「SetupDevEnv.sh」(2008/02/03 (日) 04:00:07) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
標準Linuxの/usr/local/sbin/内にある。
開発用Linuxに必要な材料をHDDに展開する役割を担う。
また、ユーザーの意思次第でHDDブートの設定も行う。
*動作内容
-/mnt/mtdにhddrootfs.tar.gz、uImage.buffaloがあるかどうかを確認して以下を実行。
****ある場合
>-/mnt/bootディレクトリを作成し、/dev/sda1をext3形式でマウントして、そこにuImage.buffaloをコピーする。
>-/mnt/rootfsディレクトリを作成し、/dev/sda2をxfs形式でマウントして、そこにhddrootfs.tar.gzを展開する。
>|デバイス|マウントポイント|マウント形式|
>|/dev/sda1|/mnt/boot|ext3|
>|/dev/sda2|/mnt/rootfs|xfs|
>-/usr/local/bin/[[kuro_lib]]を/mnt/rootfs/usr/local/binにコピーする。
>-ChangeMyUbootEnvがあればU-Boot環境変数を書き換える。なければそのまま終了する。
****ない場合
>-エラー終了させる。
*スクリプト
#!/bin/sh
. /usr/local/bin/kuro_lib
TMP_BOOT_MPT=/mnt/boot
TMP_ROOT_MPT=/mnt/rootfs
HDD_ROOTFS=${MTD_MPT}/hddrootfs.tar.gz
UIMAGE=${MTD_MPT}/uImage.buffalo
CHANGE_UBOOT_ENV=${MTD_MPT}/ChangeMyUbootEnv
# check material
if [ -e ${HDD_ROOTFS} -a -e ${UIMAGE} ] ; then
# I believe sda is already fdisked and format is finished.
# That's a KUROBOX quality....www
#
mkdir ${TMP_BOOT_MPT}
mkdir ${TMP_ROOT_MPT}
mount -t ext3 ${DISK1_DEV}1 ${TMP_BOOT_MPT}
[ $? -ne 0 ] && exit 1
mount -t xfs ${DISK1_DEV}2 ${TMP_ROOT_MPT}
[ $? -ne 0 ] && exit 1
cp -afp ${UIMAGE} ${TMP_BOOT_MPT}/
tar -zxvf ${HDD_ROOTFS} -C ${TMP_ROOT_MPT}/
cp -f /usr/local/bin/kuro_lib ${TMP_ROOT_MPT}/usr/local/bin/
# OK! prepare of hdd is finished.
# change u-boot environment or not ?
if [ -e ${CHANGE_UBOOT_ENV} ] ; then
nvram -c set default_kernel_addr 0x00100000
nvram -c set bootargs_base 'console=ttyS0,115200'
nvram -c set bootargs_root 'root=/dev/sda2 rw panic=5'
nvram -c set bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09'
nvram -c set bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)'
nvram -c set nand_boot no
fi
# OK! u-boot environment is changed.
else
exit 1
fi
*スクリプト詳細
ブロックごとに見てみる。
#!/bin/sh
. /usr/local/bin/kuro_lib
シェルにshを指定して、/usr/local/bin/[[kuro_lib]]をサブシェルで実行している。
この[[kuro_lib]]内の
-MTD_MPT変数(=/mnt/mtd)
-DISK1_DEV変数(=/dev/sda)
を使用するためだ。
TMP_BOOT_MPT=/mnt/boot
TMP_ROOT_MPT=/mnt/rootfs
HDD_ROOTFS=${MTD_MPT}/hddrootfs.tar.gz
UIMAGE=${MTD_MPT}/uImage.buffalo
CHANGE_UBOOT_ENV=${MTD_MPT}/ChangeMyUbootEnv
TMP_BOOT_MPTという変数を用意し、そこに/mnt/bootを代入。
TMP_ROOT_MPTという変数を用意し、そこに/mnt/rootfsを代入。
HDD_ROOTFSという変数を用意し、そこに/mnt/mtd/hddrootfs.tar.gzを代入。
UIMAGEという変数を用意し、そこに/mnt/mtd/uImage.buffaloを代入。
CHANGE_UBOOT_ENVという変数を用意し、そこに/mnt/mtd/ChangeMyUbootEnvを代入。
# check material
必要材料のチェック。
**HDDブートの準備
if [ -e ${HDD_ROOTFS} -a -e ${UIMAGE} ] ; then
/mnt/mtd/hddrootfs.tar.gzが存在し、かつ/mnt/mtd/uImage.buffaloも存在するならば次を実行する。
# I believe sda is already fdisked and format is finished.
# That's a KUROBOX quality....www
#
「sdaはもうfdiskされフォーマットもされていると信じています。これが玄箱クオリティです。」とコメントされている。
mkdir ${TMP_BOOT_MPT}
mkdir ${TMP_ROOT_MPT}
[[mkdirコマンド]]で/mnt/bootと/mnt/rootfsというディレクトリを作成している。
mount -t ext3 ${DISK1_DEV}1 ${TMP_BOOT_MPT}
[[mountコマンド]]で、/dev/sda1をext3形式で/mnt/bootにマウントしている。
[ $? -ne 0 ] && exit 1
その[[mountコマンド]]実行時に終了ステータスが「0」(つまり正常)でなければ、終了ステータス「1」(つまり異常)を設定しスクリプトを終了する。
mount -t xfs ${DISK1_DEV}2 ${TMP_ROOT_MPT}
[[mountコマンド]]で、/dev/sda2をxfs形式で/mnt/rootfsにマウントしている。
[ $? -ne 0 ] && exit 1
その[[mountコマンド]]実行時に終了ステータスが「0」(つまり正常)でなければ、終了ステータス「1」(つまり異常)を設定しスクリプトを終了する。
cp -afp ${UIMAGE} ${TMP_BOOT_MPT}/
[[cpコマンド]]で/mnt/mtd/uImage.buffaloを/mnt/boot/にコピーしている。
「-afp」オプションは、「-a」で「できるだけ属性や構造を保持する」、「-f」で「同名ファイルを警告せずに上書きする」、「-p」で「パーミッションやタイムスタンプを保持したままコピー」という意味だ。
tar -zxvf ${HDD_ROOTFS} -C ${TMP_ROOT_MPT}/
tarコマンドで/mnt/mtd/hddrootfs.tar.gzを/mnt/rootfs/に展開している。
「-zxvf」オプションは、「-z」で「アーカイブ展開と同時にzip形式での解凍も行う(拡張子:.tar.gz)」、「-x」で「アーカイブからファイル・ディレクトリを取り出す」、「-v」で「処理の詳細を表示する」、「-f」で「アーカイブファイルのファイル名/デバイスファイル名を指定する」という意味だ。
cp -f /usr/local/bin/kuro_lib ${TMP_ROOT_MPT}/usr/local/bin/
ふたたび[[cpコマンド]]で/usr/local/bin/[[kuro_lib]]を/mnt/rootfs/usr/local/bin/に「-f」オプション(同名ファイルを警告せずに上書きする)でコピーしている。
# OK! prepare of hdd is finished.
HDDの準備は完了しました、とのコメント。
# change u-boot environment or not ?
U-Bootの環境も変更するかどうか、というコメント。ここからU-Bootの環境変数の変更処理だ。
**U-Boot環境変数の設定
if [ -e ${CHANGE_UBOOT_ENV} ] ; then
/mnt/mtd/ChangeMyUbootEnvが存在すれば次を実行。
nvram -c set default_kernel_addr 0x00100000
nvram -c set bootargs_base 'console=ttyS0,115200'
nvram -c set bootargs_root 'root=/dev/sda2 rw panic=5'
nvram -c set bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09'
nvram -c set bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)'
nvram -c set nand_boot no
[[nvramコマンド]]を使ってU-Boot環境変数を設定している。
各環境変数の変更内容については[[環境変数について]]で説明する。
ここではルートファイルシステムを/dev/sda2、ブートするカーネルを/dev/sda1、NANDフラッシュからのブートはしない、という設定になっている。
fi
/mnt/mtd/ChangeMyUbootEnvの有無の条件分岐を終了する。
# OK! u-boot environment is changed.
U-Boot環境を変更しました、というコメント。
実際は/mnt/mtd/ChangeMyUbootEnvがなくてもここを通るので「変更しました」では間違っているが、コメントなので問題はない。
else
/mnt/mtd/hddrootfs.tar.gzかあるいは/mnt/mtd/uImage.buffaloがなければ以下を実行。
exit 1
終了ステータスに「1」(つまり異常)を設定しスクリプトを終了する。
fi
/mnt/mtd/hddrootfs.tar.gzと/mnt/mtd/uImage.buffaloの有無の条件分岐を終了する。
----
標準Linuxの/usr/local/sbin/内にある。
開発用Linuxに必要な材料をHDDに展開する役割を担う。
また、ユーザーの意思次第でHDDブートの設定も行う。
#contents()
*動作内容
-/mnt/mtdにhddrootfs.tar.gz、uImage.buffaloがあるかどうかを確認して以下を実行。
&bold(){ある場合}
>-/mnt/bootディレクトリを作成し、/dev/sda1をext3形式でマウントして、そこにuImage.buffaloをコピーする。
>-/mnt/rootfsディレクトリを作成し、/dev/sda2をxfs形式でマウントして、そこにhddrootfs.tar.gzを展開する。
>|デバイス|マウントポイント|マウント形式|
>|/dev/sda1|/mnt/boot|ext3|
>|/dev/sda2|/mnt/rootfs|xfs|
>-/usr/local/bin/[[kuro_lib]]を/mnt/rootfs/usr/local/binにコピーする。
>-ChangeMyUbootEnvがあればU-Boot環境変数を書き換える。なければそのまま終了する。
&bold(){ない場合}
>-エラー終了させる。
*スクリプト
#!/bin/sh
. /usr/local/bin/kuro_lib
TMP_BOOT_MPT=/mnt/boot
TMP_ROOT_MPT=/mnt/rootfs
HDD_ROOTFS=${MTD_MPT}/hddrootfs.tar.gz
UIMAGE=${MTD_MPT}/uImage.buffalo
CHANGE_UBOOT_ENV=${MTD_MPT}/ChangeMyUbootEnv
# check material
if [ -e ${HDD_ROOTFS} -a -e ${UIMAGE} ] ; then
# I believe sda is already fdisked and format is finished.
# That's a KUROBOX quality....www
#
mkdir ${TMP_BOOT_MPT}
mkdir ${TMP_ROOT_MPT}
mount -t ext3 ${DISK1_DEV}1 ${TMP_BOOT_MPT}
[ $? -ne 0 ] && exit 1
mount -t xfs ${DISK1_DEV}2 ${TMP_ROOT_MPT}
[ $? -ne 0 ] && exit 1
cp -afp ${UIMAGE} ${TMP_BOOT_MPT}/
tar -zxvf ${HDD_ROOTFS} -C ${TMP_ROOT_MPT}/
cp -f /usr/local/bin/kuro_lib ${TMP_ROOT_MPT}/usr/local/bin/
# OK! prepare of hdd is finished.
# change u-boot environment or not ?
if [ -e ${CHANGE_UBOOT_ENV} ] ; then
nvram -c set default_kernel_addr 0x00100000
nvram -c set bootargs_base 'console=ttyS0,115200'
nvram -c set bootargs_root 'root=/dev/sda2 rw panic=5'
nvram -c set bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09'
nvram -c set bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)'
nvram -c set nand_boot no
fi
# OK! u-boot environment is changed.
else
exit 1
fi
*スクリプト詳細
ブロックごとに見てみる。
#!/bin/sh
. /usr/local/bin/kuro_lib
シェルにshを指定して、/usr/local/bin/[[kuro_lib]]をサブシェルで実行している。
この[[kuro_lib]]内の
-MTD_MPT変数(=/mnt/mtd)
-DISK1_DEV変数(=/dev/sda)
を使用するためだ。
TMP_BOOT_MPT=/mnt/boot
TMP_ROOT_MPT=/mnt/rootfs
HDD_ROOTFS=${MTD_MPT}/hddrootfs.tar.gz
UIMAGE=${MTD_MPT}/uImage.buffalo
CHANGE_UBOOT_ENV=${MTD_MPT}/ChangeMyUbootEnv
TMP_BOOT_MPTという変数を用意し、そこに/mnt/bootを代入。
TMP_ROOT_MPTという変数を用意し、そこに/mnt/rootfsを代入。
HDD_ROOTFSという変数を用意し、そこに/mnt/mtd/hddrootfs.tar.gzを代入。
UIMAGEという変数を用意し、そこに/mnt/mtd/uImage.buffaloを代入。
CHANGE_UBOOT_ENVという変数を用意し、そこに/mnt/mtd/ChangeMyUbootEnvを代入。
# check material
必要材料のチェック。
**HDDブートの準備
if [ -e ${HDD_ROOTFS} -a -e ${UIMAGE} ] ; then
/mnt/mtd/hddrootfs.tar.gzが存在し、かつ/mnt/mtd/uImage.buffaloも存在するならば次を実行する。
# I believe sda is already fdisked and format is finished.
# That's a KUROBOX quality....www
#
「sdaはもうfdiskされフォーマットもされていると信じています。これが玄箱クオリティです。」とコメントされている。
mkdir ${TMP_BOOT_MPT}
mkdir ${TMP_ROOT_MPT}
[[mkdirコマンド]]で/mnt/bootと/mnt/rootfsというディレクトリを作成している。
mount -t ext3 ${DISK1_DEV}1 ${TMP_BOOT_MPT}
[[mountコマンド]]で、/dev/sda1をext3形式で/mnt/bootにマウントしている。
[ $? -ne 0 ] && exit 1
その[[mountコマンド]]実行時に終了ステータスが「0」(つまり正常)でなければ、終了ステータス「1」(つまり異常)を設定しスクリプトを終了する。
mount -t xfs ${DISK1_DEV}2 ${TMP_ROOT_MPT}
[[mountコマンド]]で、/dev/sda2をxfs形式で/mnt/rootfsにマウントしている。
[ $? -ne 0 ] && exit 1
その[[mountコマンド]]実行時に終了ステータスが「0」(つまり正常)でなければ、終了ステータス「1」(つまり異常)を設定しスクリプトを終了する。
cp -afp ${UIMAGE} ${TMP_BOOT_MPT}/
[[cpコマンド]]で/mnt/mtd/uImage.buffaloを/mnt/boot/にコピーしている。
「-afp」オプションは、「-a」で「できるだけ属性や構造を保持する」、「-f」で「同名ファイルを警告せずに上書きする」、「-p」で「パーミッションやタイムスタンプを保持したままコピー」という意味だ。
tar -zxvf ${HDD_ROOTFS} -C ${TMP_ROOT_MPT}/
tarコマンドで/mnt/mtd/hddrootfs.tar.gzを/mnt/rootfs/に展開している。
「-zxvf」オプションは、「-z」で「アーカイブ展開と同時にzip形式での解凍も行う(拡張子:.tar.gz)」、「-x」で「アーカイブからファイル・ディレクトリを取り出す」、「-v」で「処理の詳細を表示する」、「-f」で「アーカイブファイルのファイル名/デバイスファイル名を指定する」という意味だ。
cp -f /usr/local/bin/kuro_lib ${TMP_ROOT_MPT}/usr/local/bin/
ふたたび[[cpコマンド]]で/usr/local/bin/[[kuro_lib]]を/mnt/rootfs/usr/local/bin/に「-f」オプション(同名ファイルを警告せずに上書きする)でコピーしている。
# OK! prepare of hdd is finished.
HDDの準備は完了しました、とのコメント。
# change u-boot environment or not ?
U-Bootの環境も変更するかどうか、というコメント。ここからU-Bootの環境変数の変更処理だ。
**U-Boot環境変数の設定
if [ -e ${CHANGE_UBOOT_ENV} ] ; then
/mnt/mtd/ChangeMyUbootEnvが存在すれば次を実行。
nvram -c set default_kernel_addr 0x00100000
nvram -c set bootargs_base 'console=ttyS0,115200'
nvram -c set bootargs_root 'root=/dev/sda2 rw panic=5'
nvram -c set bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09'
nvram -c set bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)'
nvram -c set nand_boot no
[[nvramコマンド]]を使ってU-Boot環境変数を設定している。
各環境変数の変更内容については[[環境変数について]]で説明する。
ここではルートファイルシステムを/dev/sda2、ブートするカーネルを/dev/sda1、NANDフラッシュからのブートはしない、という設定になっている。
fi
/mnt/mtd/ChangeMyUbootEnvの有無の条件分岐を終了する。
# OK! u-boot environment is changed.
U-Boot環境を変更しました、というコメント。
実際は/mnt/mtd/ChangeMyUbootEnvがなくてもここを通るので「変更しました」では間違っているが、コメントなので問題はない。
else
/mnt/mtd/hddrootfs.tar.gzかあるいは/mnt/mtd/uImage.buffaloがなければ以下を実行。
exit 1
終了ステータスに「1」(つまり異常)を設定しスクリプトを終了する。
fi
/mnt/mtd/hddrootfs.tar.gzと/mnt/mtd/uImage.buffaloの有無の条件分岐を終了する。
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: