前回に引き続きオープンソースルータのVyatta CORE 6.4をOpenBlocks AX3で動かします。前回は各サブモジュールのビルドまでを行いましたが、今回はISO LIVEイメージを作成しUSBメモリを用いてVyattaを起動させます。その後内蔵のSSDにVyattaをインストールしSSDから起動するようにします。そしてVyattaの簡単な動作確認を行います。
前回の記事はこちら: OpenBlocks AX3でVyattaを動かす(ビルド編)
◆VyattaのISO LIVEイメージ作成
パッケージリストから不要なパッケージの削除と必要なパッケージの追加を行います。
$ cd ~/build-iso自動で取得できないパッケージはあらかじめ pkgs ディレクトリにコピーします。
$ vi livecd/config.vyatta/chroot_local-packageslists/vyatta-full.list
(以下を削除)
grub-common
grub-pc
(以下を追加)
libnet0
libsablot0
以下は、前回Debian lenny用リポジトリから取得したパッケージです
$ cp /var/cache/apt/archives/libsablot0_1.0.3-1+b1_armel.deb pkgsatmel-firmwareについてはpackages.vyatta.comから取得します。
$ cp /var/cache/apt/archives/libnet0_1.0.2a-7_armel.deb pkgs
$ cd pkgslivecd/mk.livecd.functions を編集します。レポジトリURLの変更と使用しない開発用レポジトリの削除を行います。
$ wget http://packages.vyatta.com/vyatta/pool/main/atmel-firmware_1.3-4_all.deb
$ cd ..
diff --git a/livecd/mk.livecd.functions b/livecd/mk.livecd.functionslivecd/mk.livecd を編集してgrub関連部分の削除を行います。また生成されるイメージはbinary-hybrid.isoではなくbinary.isoのため該当部分を修正します。
index 248a4e2..1c92d19 100644
--- a/livecd/mk.livecd.functions
+++ b/livecd/mk.livecd.functions
@@ -288,11 +288,10 @@ set_up_lh_config ()
fi
# set up the debian repo
- LB_MIRROR_BINARY="http://packages.vyatta.com/debian-$branch"
- LB_MIRROR_BOOTSTRAP="http://packages.vyatta.com/debian-$branch"
+ LB_MIRROR_BINARY="ftp://ftp.plathome.co.jp/pub/debian"
+ LB_MIRROR_BOOTSTRAP="ftp://ftp.plathome.co.jp/pub/debian"
export LB_MIRROR_BINARY LB_MIRROR_BOOTSTRAP
- local dev_repo_root=http://packages.vyatta.com/vyatta-dev
local repo_dir=unstable
if ! eval "$VYATTA_DEV_BUILD"; then
# not dev build => use testing.
@@ -310,17 +309,11 @@ set_up_lh_config ()
# set up chroot_sources
cd ../config/chroot_sources
- ## "this" branch
- if [ ! -f vyatta.chroot ]; then
- echo "deb $dev_repo_root/$branch/$repo_dir $branch main" >vyatta.chroot
- fi
## "base" and "extra" branches for overlay
for branch in "$VBUILD_BASE_BRANCH" "${VBUILD_EXTRA_BRANCHES[@]}"; do
if [ -z "$branch" ] || [ -f "vyatta-$branch.chroot" ]; then
continue
fi
- echo "deb $dev_repo_root/$branch/$repo_dir $branch main" \
- >"vyatta-$branch.chroot"
cp vyatta.chroot.gpg "vyatta-$branch.chroot.gpg"
done
diff --git a/livecd/mk.livecd b/livecd/mk.livecdLinuxカーネルを指定します。
index dc2795e..6187fa9 100755
--- a/livecd/mk.livecd
+++ b/livecd/mk.livecd
@@ -99,9 +99,6 @@ cp -f config/chroot_apt/preferences chroot/etc/apt
# but that's even uglier.
echo 'do_initrd = Yes' >chroot/etc/kernel-img.conf
-echo 'I: creating default grub config'
-create_default_grub_config
-
# build the XenSource partition image
if eval "$create_xensourcevm"; then
vyatta-xensource-partition-image || exit 1
@@ -114,8 +111,6 @@ if ! lh binary ; then
exit 1
fi
-# new image name (hybrid image)
-mv binary-hybrid.iso binary.iso
ln -nsf binary.iso livecd-"$BUILDID".iso
echo I: Done
$ echo "linux-image-3.0.32-1-obsax3-vyatta" > livecd/config.vyatta/chroot_local-packageslists/vyatta-kernel.obsax3-vyattaVyattaのデフォルトのシリアルの速度は9600bpsです。OpenBlocks AX3のブートローダのデフォルトは115200bpsなので115200に変更します。変更箇所はシステムのデフォルト値とVyattaの設定ファイルの二ヶ所です。
livecd/config.vyatta/chroot_local-hooks/05-event_tty:OpenBlocks AX3に附属しているpshd, runledと起動スクリプトをコピーします。
$ sed -i -e 's/9600/115200/' livecd/config.vyatta/chroot_local-hooks/05-event_tty
livecd/templates/community/config.boot.default:
diff --git a/livecd/templates/community/config.boot.default b/livecd/templates/community/config.boot.default
index 1fb6e3c..a7c043d 100644
--- a/livecd/templates/community/config.boot.default
+++ b/livecd/templates/community/config.boot.default
@@ -31,7 +31,7 @@ system {
}
console {
device ttyS0 {
- speed 9600
+ speed 115200
}
}
config-management {
$ mkdir -p livecd/config.vyatta/chroot_local-includes/usr/sbin続いてルートファイルシステム生成中に実行される4つのスクリプトを追加します。
$ cp -p /usr/sbin/pshd livecd/config.vyatta/chroot_local-includes/usr/sbin
$ cp -p /usr/sbin/runled livecd/config.vyatta/chroot_local-includes/usr/sbin
$ mkdir -p livecd/config.vyatta/chroot_local-includes/etc/init.d
$ cp -p /etc/init.d/pshd livecd/config.vyatta/chroot_local-includes/etc/init.d
$ cp -p /etc/init.d/runled livecd/config.vyatta/chroot_local-includes/etc/init.d
livecd/config.vyatta/chroot_local-hooks/90-update-initramfs:
(initramfsの生成)
#! /bin/sh
update-initramfs -c -k 3.0.32-1-obsax3-vyatta
livecd/config.vyatta/chroot_local-hooks/91-obsax3:
(pshd, runledの起動)
#!/bin/sh
update-rc.d pshd start 01 2 . stop 01 0 6 .
update-rc.d runled start 01 2 . stop 01 0 6 .
livecd/config.vyatta/chroot_local-hooks/92-disable-grub:
(install system実行時のgrub installを抑制)
#!/bin/sh
sed -e 's/^\(install_grub\)$/#\1/' -i /opt/vyatta/sbin/install-system
livecd/config.vyatta/chroot_local-hooks/93-inittab:
(inittabから不要エントリを削除)
#!/bin/sh
sed -e 's/^\([123456]:.*\)/#\1/' -i /etc/inittab
ISOイメージ生成中にuImageを生成するために以下のスクリプトを追加します。
livecd/config.vyatta/binary_local-hooks/90-uimage:これらに実行フラグを立てます。
#!/bin/sh
gzip -9 < binary/live/vmlinuz-3.0.32-1-obsax3-vyatta > binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz
mkimage -n "Vyatta Linux 3.0.32" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz:binary/live/initrd.img 3.0.32-1-obsax3-vyatta binary/uImage
rm -f binary/live/vmlinuz-3.0.32-1-obsax3-vyatta.gz
$ chmod +x livecd/config.vyatta/chroot_local-hooks/9?-*configureを実行します。
$ chmod +x livecd/config.vyatta/binary_local-hooks/90-uimage
$ export PATH=/sbin:/usr/sbin:$PATH生成された livecd/mk.livecd.conf を編集します。
$ autoreconf -i
$ ./configure --with-kernel-flavor=obsax3-vyatta --with-devbuild=false
(LB_APTをaptitudeからapt-getに変更。debugに効果あり)最後にisoイメージの生成を行います。一般ユーザで作業すると途中chrootのあたりでエラーになるためrootで行います。
declare -x LB_APT="apt-get"
(以下の行は不要なので削除)
declare -x LB_BOOTLOADER="syslinux"
パッケージのダウンロード等も行われるので多少時間を要します。
$ su
# make iso
.
.
P: Deconfiguring file /etc/apt/apt.conf
P: Deconfiguring file /usr/sbin/policy-rc.d
P: Begin unmounting /sys...
P: Deconfiguring file /usr/sbin/initctl
P: Begin unmounting /selinux...
P: Begin unmounting /proc...
P: Begin unmounting /dev/pts...
P: Begin unmounting filesystems...
I: Done
# ls -l livecd/binary.iso
-rw-r--r-- 1 root root 196575232 Aug 30 20:41 livecd/binary.iso
◆OpenBlocks AX3でVyattaをlive起動
vfatでフォーマットされたUSBメモリを使ってvyattaを起動します。
binary.isoを中身をそのままUSBメモリにコピーします。
$ cd ~build_isoOpenBlocks AX3を再起動して適当なキーを押しブートローダで停止させます。
$ su
# mkdir /tmp/mnt2
# mount livecd/binary.iso /tmp/mnt2 -o loop
# mount /dev/sdb1 /mnt
# rsync -a /tmp/mnt2/ /mnt
# ls -l /mnt
total 6976
drwxr-xr-x 3 root root 16384 Aug 30 20:40 doc
drwxr-xr-x 3 root root 16384 Aug 30 20:40 isolinux
drwxr-xr-x 2 root root 16384 Aug 30 20:40 live
-r-xr-xr-x 1 root root 3575 Aug 30 20:40 md5sum.txt
-r-xr-xr-x 1 root root 7077423 Aug 30 20:40 uImage
# umount /mnt
# umount /tmp/mnt2
# rebootUSBの初期化をします。
.
.
.
MMC: MRVL_MMC: 0
Net: egiga0, egiga1
Hit any key to stop autoboot: 0
openblocks>
openblocks> usb startFATファイルシステムのコンテンツを確認します。
(Re)start USB...
USB: Active port: 0
Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 2 USB Device(s) found
Waiting for storage device(s) to settle before scanning...
scanning bus for storage devices... 1 Storage Device(s) found
openblocks> fatls usb 0:1uimageが確認できたら、FATファイルシステムからカーネルイメージをロードします。
0/32 blocks
.disk/
doc/
isolinux/
live/
3575 md5sum.txt
7077423 uimage
0/32 blocks
0/32 blocks
0/32 blocks
2 file(s), 4 dir(s)
openblocks> fatload usb 0:1 0x20000000 uImageブートパラメタを設定してブートします。
reading uImage
0/32 blocks
13760/13792 blocks
0/31 blocks
7077423 bytes read
openblocks> setenv bootargs boot=live union=unionfs console=ttyS0,115200USBメモリからのlive起動なので起動完了まで時間がかかります。今回の環境では2分30秒を要しました。
openblocks> bootm 0x20000000
起動完了するとログインプロンプトがでるのでID:vyatta, Password:vyattaでloginします。
Welcome to Vyatta - vyatta ttyS0この状態でVyattaの機能は使える状態になっています。
vyatta login: vyatta
Password:
Linux vyatta 3.0.32-1-obsax3-vyatta #2 SMP Thu Aug 30 00:19:15 JST 2012 armv7l
Welcome to Vyatta.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
vyatta@vyatta:~$
◆SSDにVyattaをインストール
USBメモリからlive起動した状態だとconfigのセーブなどが行えない状態なので内蔵のSSDにVyattaをインストールします。
本来はVyattaのinstall systemの中でパーティショニングやファイルシステムの構築なども行えますが、今回は既存のファイルシステムを一部残して起きたかったのでパーティショニングはあらかじめオリジナルのDebianで行っておきます。
Vyattaを一度終了してDebianをRAMディスクモードで起動します。
vyatta@vyatta:~$ rebootDebianが起動したら、fdiskを実行します。
詳細は省略しますが、最終的に以下のようなパーティショニングを行いました。
# fdisk -l /dev/sdasda1はVyattaのLinuxカーネル保存用の領域です。OpenBlocks AX3のブートローダu-bootでは、大きいパーティションからのext2loadを行うとエラーとなるためブート専用に小さめの領域を確保しました。
- snip -
Disk /dev/sda: 32 GB, 32012789760 bytes
255 heads, 63 sectors/track, 3892 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 20 160618 83 Linux
/dev/sda2 21 1350 10675192 83 Linux
/dev/sda3 1351 3892 20410582 83 Linux
sda2はVyattaの/用の領域です。10GBもあれば十分です。
sda3は既存のDebian環境用の領域です。
Vyatta用bootの領域をext2でフォーマットし、Linuxカーネルイメージをコピーしておきます。
# mkfs.ext2 /dev/sda1rebootし、u-bootで停止し今度はsda1からのuImageを使用してUSB LIVE起動します。
# mount /dev/sda1 /mnt
# mount /dev/sdb1 /mnt2
# cp -p /mnt2/uImage /mnt
# ls -l /mnt
Total 6951
drwx------ 2 root root 12288 Sep 4 16:23 lost+found
-rwxr-xr-x 1 root root 7076480 Aug 30 23:00 uImage
# reboot起動したらvyatta/vyattaでログイン後 install systemを実行します。
- snip -
openblocks> ide reset
Reset IDE:
Marvell Serial ATA Adapter
Integrated Sata device found
Device 0 @ 0 0:
Model: ADATA SSD S396 30GB Firm: 3.3.2 Ser#: 02414202500300002255
Type: Hard Disk
Supports 48-bit addressing
Capacity: 30533.8 MB = 29.8 GB (62533296 x 512)
openblocks> ext2ls ide 0:1
<DIR> 1024 .
<DIR> 1024 ..
<DIR> 12288 lost+found
7076480 uImage
openblocks> ext2load ide 0:1 0x20000000 uImage
Loading file "uImage" from ide device 0:1 (hda1)
7076480 bytes read
openblocks> setenv bootargs boot=live union=unionfs console=ttyS0,115200
openblocks> bootm 0x20000000
Partitionの設定はSkipしてシステムはsda2にインストールします。
vyatta@vyatta:~$ install systemsda2へのVyattaシステムのインストールが終わりました。(「dmidecode: No such file or directory」は無視してかまいません」)
Welcome to the Vyatta install program. This script
will walk you through the process of installing the
Vyatta image to a local hard drive.
Would you like to continue? (Yes/No) [Yes]:
Probing drives: OK
Looking for pre-existing RAID groups...none found.
You have two disk drives:
sda 32017 MB
sdb 1006 MB
Would you like to configure RAID-1 mirroring on them? (Yes/No) [Yes]:No
Ok. Not configuring RAID-1.
The Vyatta image will require a minimum 1000MB root.
Would you like me to try to partition a drive automatically
or would you rather partition it manually with parted? If
you have already setup your partitions, you may skip this step.
Partition (Auto/Union/Parted/Skip) [Auto]: Skip
The Vyatta install needs a minimum 1000MB root
with partiton type 83 (Linux).
Looking for appropriate partitions: OK
I found the following partitions suitable for the Vyatta image:
Partition Size
sda2 10939MB
sda3 20908MB
Which partition should I install the root on? [sda2]:
Creating filesystem on /dev/sda2: OK
Mounting /dev/sda2
Copying system files to /dev/sda2:
97% [=================================================> ] OK
I found the following configuration files
/opt/vyatta/etc/config/config.boot
Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]:
Enter password for administrator account
Enter vyatta password:
Retype vyatta password:
/opt/vyatta/sbin/install-system: line 1428: /usr/sbin/dmidecode: No such file or directory
/opt/vyatta/sbin/install-system: line 1429: /usr/sbin/dmidecode: No such file or directory
Done!
vyatta@vyatta:~$
◆OpenBlocks AX3のSSDからVyattaを起動
rebootしてVyattaが起動できることを確認します。
vyatta@vyatta:~$ reboot再びu-bootで停止し、SSD上のsda2をrootとしてVyattaを起動します。
openblocks> ide resetloginプロンプトが出てくれば無事完了です。
openblocks> ext2load ide 0:1 0x20000000 uImage
openblocks> setenv bootargs root=/dev/sda2 console=ttyS0,115200
openblocks> bootm 0x20000000
Welcome to Vyatta - vyatta ttyS0再びrebootして、u-bootで起動時に自動的にVyattaが起動するように設定します。
vyatta login:
openblocks> setenv bootcmd "ide reset;ext2load ide 0:1 0x20000000 uImage;setenv bootargs root=/dev/sda2 console=ttyS0,115200;bootm 0x20000000"ちなみに出荷時の状態に戻すにはu-bootで以下のように設定します。
openblocks> saveenv
openblocks> reset (再起動)
openblocks> setenv bootcmd "echo;echo Run Boot Selection Script;echo;run _phase_1"または、次のコマンドで出荷時の状態に戻すことができます。
openblocks> saveenv
openblocks> run clr_env
◆Vyattaの基本動作確認(アドレス設定、ユーザ管理、ssh接続等)
Vyattaで基本的なインターフェイスの設定等を行います。
vyatta@vyatta$ configureeth0のアドレスはDHCPで取得するようにします。
[edit]
vyatta@vyatta#
eth1にはstaticアドレスを設定します。vyattaはcommitコマンドにより設定が有効になります。
vyatta@vyatta# set interfaces ethernet eth0 address dhcpconfigureモードを抜けてshow interfacesでinterfaceの状態を確認します。
vyatta@vyatta# set interfaces ethernet eth1 address 192.168.200.1/24
vyatta@vyatta# commit
vyatta@vyatta# exitpingコマンドを確認します。
Warning: configuration changes have not been saved.
exit
vyatta@vyatta:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 192.168.111.227/24 u/u
eth1 192.168.200.1/24 u/u
lo 127.0.0.1/8 u/u
::1/128
vyatta@vyatta:~$ ping 192.168.111.1dateコマンドを確認します。
PING 192.168.111.1 (192.168.111.1) 56(84) bytes of data.
64 bytes from 192.168.111.1: icmp_req=1 ttl=255 time=0.851 ms
64 bytes from 192.168.111.1: icmp_req=2 ttl=255 time=0.308 ms
vyatta@vyatta:~$ show dateTIMEZONEをJSTに変更します。
Tue Sep 4 08:05:56 GMT 2012
vyatta@vyatta:~$ configureSSHデーモンを有効にして外からssh loginできるようにします。
vyatta@vyatta# set system time-zone Asia/Tokyo
[edit]
vyatta@vyatta# commit
[ system time-zone Asia/Tokyo ]
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.
[edit]
vyatta@vyatta# date
Tue Sep 4 17:07:20 JST 2012
[edit]
vyatta@vyatta# set service ssh次にユーザhogeを作成しpublic keyを設定し、外からloginできるようにします。
[edit]
vyatta@vyatta# commit
[ service ssh ]
Restarting OpenBSD Secure Shell server: sshd.
[edit]
vyatta@vyatta#
vyatta@vyatta# set system login user hogeユーザhogeでloginできることを確認します。
vyatta@vyatta# set system login user hoge authentication plaintext-password hogehoge
vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local
vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local type ssh-rsa
vyatta@vyatta# set system login user hoge authentication public-keys ono@hoge.local key AAAAB3NzaC1yc2....
vyatta@vyatta# commit
another-machine$ ssh hoge@192.168.111.217作成したconfigをsaveし次回起動にその設定で立ち上がるようにします。
vyatta@vyatta# save
◆まとめ
前回と今回の2回でVyatta CORE 6.4をOpenBlocks AX3にインストールしました。
VyattaをSSDから起動し基本的なインターフェイス設定等が動作することを確認しました。
作成したOpenBlocks AX3用のISOイメージは以下の場所からダウンロードできますのでご利用ください。
http://vyatta.yellowback.net
ftp://ftp.plathome.co.jp/pub/OBSAX3/obdnmag/vyatta64/
また、修正済みソース等はgithubに置いてますのでご参照ください。
https://github.com/yellowback/vyatta-build-iso
https://github.com/yellowback/vyatta-linux-image
https://github.com/yellowback/vyatta-biosdevname
https://github.com/yellowback/vyatta-cfg-system
こんにちは、
返信削除今回AX3を利用してVyattaを構築しています。
前のビルド編は終わって
起動編のLiveCDのISOイメージを作成するところで
固まっています
make isoを実行すると
root@obsax3-A:/home/openflow/vyatta/build-iso# make iso
cd livecd && ./mk.livecd
I: cleaning earlier build
I: configuring build
./mk.livecd.functions: line 305: lh: command not found
root@obsax3-A:/home/openflow/vyatta/build-iso#
lh Commandかないっていうエラーが出ます
lh ってどんな命令ですか?
解決方法を教えてください。