2015年12月1日火曜日

玄人志向 玄箱へ u-boot と Ubuntu 12.04 LTS をインストール

シリアルコンソールの外部端子を設けた玄人志向 玄箱(KURO-BOX)へ u-boot と Ubuntu 12.04 LTS をインストールしました。

u-boot と Ubuntu 12.04 LTS をインストールした玄箱です。

ただし今回のインストールは u-boot の学習という側面が強いインストールとなりました。u-boot からどのようにシステムが起動するのか皆目見当がつかないため、インストールと機動が成功しやすい方法を選択したつもりですが、かなりの苦労を強いられました。

インストール前の状態

とりあえず u-boot をインストールする玄箱は、ハードディスクを初期化して、セットアップインストールを行った状態からインストールを開始しました。玄箱の操作は、シリアルコンソール上から行いました。

u-boot のインストール

u-boot のインストールは、玄箱にもともと入っているシステム(KURO-BOX IETSUNA)上で行いました。

u-boot のバイナリファイル(u-boot-1.2.0-hd.flash.bin)は、次のウェブサイトのコンパイル済みのものを使用しました。貴重なファイルをありがとうございます。

LinkStation/玄箱/kernel - コンパイル済みバイナリ
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?LinkStation%2F%E7%8E%84%E7%AE%B1%2Fkernel#g22f1206

操作パソコンから上記のコンパイル済み u-boot のバイナリファイル(u-boot-1.2.0-hd.flash.bin)をダウンロードした後、玄箱へ FTP で転送しました。

 -- 玄箱 --
# mkdir /mnt/ubuntu

 -- 作業パソコン --
$ ftp [玄箱の IP アドレス]
    user:root, password:kuro
ftp> cd /mnt/ubuntu
ftp> put u-boot-1.2.0-hd.flash.bin
ftp> quit

 -- 玄箱 --
# cd /mnt/ubuntu -- u-boot-1.2.0-hd.flash.binを転送した場所
# cat u-boot-1.2.0-hd.flash.bin > /dev/fl2
# reboot -- 再起動

-- 再起動直後のログ --
U-Boot 1.2.0 (Mar 26 2009 - 17:30:35) LinkStation / KuroBox

CPU:   MPC8245 Revision 1.4 at 196.608 MHz: 16 kB I-Cache 16 kB D-Cache
DRAM:  64 MB
FLASH:  4 MB
        00  0b  1317  0985  0200  ff
        00  0c  1095  0680  0101  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  00e0  0c03  ff
Net:   COMET#0
next_cons_choice: Unexpected code: 0x33
stdin :   serial
stdout:   serial
stderr:   serial
IDE:   Bus 0: OK
  Device 0: Model: ST3200827A Firm: 3.AAE Ser#: 5ND3GSWK
            Type: Hard Disk
            Supports 48-bit addressing
            Capacity: 190782.2 MB = 186.3 GB (390721968 x 512)
Boot in 01 seconds ('s' to stop)...

上記の"Boot in 01 seconds ('s' to stop)..." のときに "S" キーを押すと u-boot のコンソールへ移行することができます。

単純に u-boot をインストールしただけの状態で再起動させると、元々インストールしてある玄箱のシステムが起動します。ただし起動開始までかなり時間を必要とします。これは事前に u-boot に設定されていたブートファイルが存在していないことが原因です。通常ブート(bootcmd1)が実行出来ない場合には、二番目のブート(bootcmd2)が実行されるようになっており、ここで玄箱オリジナルのシステムが起動するようになっています。

ここまででは、u-boot の環境設定を行いません。

Ubuntu 12.04 LTS のインストールの概要

この玄箱オリジナルのシステム上から Ubuntu 12.04 LTS をインストールしました。使用したバイナリファイルは次のウェブサイトのものを使用しました。貴重なファイルをありがとうございます。またインストールも "readme_install.txt" の中に記述されているインストール手順を参考にしました。
玄箱/玄箱HG 用 ubuntu 12.04 LTS image
http://ux.getuploader.com/KUROBOX_PPC_Ubuntu_Precise/

ここでのインストールは、玄箱オリジナルのシステムを残してインストールする方法を選択しました。そして玄箱のセットアップインストールで行われたパーティションをそのまま使用しました。そのため玄箱へ Debian や Ubuntu をインストールする方法とは一部ことなります。この記事を参考にするときには注意をしてください。

上記でインストールした u-boot は Ext3 のファイルシステムを認識出来ないそうです。そこで玄箱のセットアップインストールで設定された Ext2 のファイルシステムのままでインストールを行いました。そのためフォーマット作業は行いませんでした。
/dev/hda1(sda1) -- Ext2 (KURO-BOX)
/dev/hda2(sda2) -- swap
/dev/hda3(sad3) -- Ext2 (Ubuntu 12.04 LTS)

Ubuntu のシステムの展開

操作パソコンへダウンロードしていた Ubuntu の各システムファイルを玄箱へ転送して、展開することでインストールしました。

 -- 作業パソコン --
(ubuntu-12.04-server-rootfs.tar.gz の合成)
$ cat ubuntu-12.001 ubuntu-12.002 > ubuntu-12.04-server-rootfs.tar.gz

(ファイル転送)
$ ftp [玄箱の IP アドレス]
    user:root, password:kuro
ftp> cd /mnt/ubuntu
ftp> put ubuntu-12.04-server-rootfs.tar.gz
ftp> put linux-image-3.2.0.24-kurobox.tar.gz
ftp> put linux-modules-3.2.0.24-kurobox.tar.gz
ftp> quit

 -- 玄箱 --
# mkdir /mnt/boot
# cd /mnt/ubuntu
# tar zxvf linux-image-3.2.0.24-kurobox.tar.gz -C /mnt/boot/
# tar zxvf ubuntu-12.04-server-rootfs.tar.gz -C /mnt/
# tar zxvf linux-modules-3.2.0.24-kurobox.tar.gz -C /mnt/lib/modules/

今回のインストールでは、バイナリファイルをビルドした作者さんの想定と違ったインストールを行なっているため、一部のファイルを修正しました。

・マウントポイント変更(/mnt/etc/fstab)
# vi /mnt/etc/fstab

# UNCONFIGURED FSTAB FOR BASE SYSTEM
#     
proc       /proc proc    defaults   0    0
#LABEL=swap none swap sw         0    0
/dev/sda2   none swap sw         0    0
#LABEL=ubuntu  / ext3 defaults,noatime,errors=remount-ro 0 0
/dev/sda3    /   ext2 defaults,noatime,errors=remount-ro 0 0
dev         /dev tmpfs rw         0     0
# LABEL=mnt /mnt ext3  defaults,noatime    0    0

・LAN ポートを DHCP で設定(/mnt/etc/network/interfaces)
# vi /mnt/etc/network/interfaces

# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.

# The loopback network interface
auto eth0 lo
iface lo inet loopback
iface eth0 inet dhcp
#iface eth0 inet static
#address 192.168.0.151
#network 192.168.0.0
#netmask 255.255.255.0
#broadcast 192.168.0.255
#gateway 192.168.0.1
以上で修正は終わりです。

u-boot の設定

玄箱を再起動させて u-boot のコンソールへログオンします。
 -- 玄箱 --
# reboot
  ↓
umount: /run/lock: not mounted
 * Will now restart
Restarting system.


U-Boot 1.2.0 (Mar 26 2009 - 17:30:35) LinkStation / KuroBox

CPU:   MPC8245 Revision 1.4 at 196.608 MHz: 16 kB I-Cache 16 kB D-Cache
DRAM:  64 MB
FLASH:  4 MB
        00  0b  1317  0985  0200  ff
        00  0c  1095  0680  0101  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  0035  0c03  ff
        00  0e  1033  00e0  0c03  ff
Net:   COMET#0
next_cons_choice: Unexpected code: 0x33
stdin :   serial
stdout:   serial
stderr:   serial
IDE:   Bus 0: OK
  Device 0: Model: ST3200827A Firm: 3.AAE Ser#: 5ND3GSWK
            Type: Hard Disk
            Supports 48-bit addressing
            Capacity: 190782.2 MB = 186.3 GB (390721968 x 512)
Boot in 10 seconds ('s' to stop)...
=>

以下の環境設定の値を変更しました。
 -- 玄箱 (u-boot) --
=> setenv bootargs root=/dev/sda3 rtc-rs5c372.probe=0,0x32
=> setenv hdkernel boot/vmlinux.UBoot
=> setenv hddtb boot/kuroboxHD.dtb
=> setenv rootdev /dev/sda3
=> setenv hdpart 0:3
=> setenv hdload echo Loading ${hdpart}:${hdkernel}\;ext2load ide ${hdpart} ${ldaddr} ${hdkernel}\;ext2load ide ${hdpart} 7f0000 ${hddtb}
=> setenv boothd setenv bootargs root=${rootdev} console=${condev},${conspeed} rtc-rs5c372.probe=0,0x32\;bootm ${ldaddr} - 7f0000

(設定値の保存)
=> saveenv

(起動)
=> boot
Loading 0:3:boot/vmlinux.UBoot
Unknown command 'bootargs' - try 'help'
## Booting image at 00800000 ...
   Image Name:   Linux-3.2.0.24-kurobox
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    2183551 Bytes =  2.1 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
   Booting using flat device tree at 0x7f0000
Using Buffalo Linkstation machine description
Cannot reserve gpages without hugetlb enabled
Linux version 3.2.0.24-kurobox (root@KURO-BOX) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) ) #1 Fri Jun 8 04:57:54 JST 2012 ()
bootconsole [udbg0] enabled
   ↓
   ↓
init: Failed to create pty - disabling logging for job
   (大量のエラーログが出ます)
init: Failed to create pty - disabling logging for job

Ubuntu 12.04 LTS KURO-BOX ttyS1

KURO-BOX login:

ユーザ名:root、パスワード:root でログインします。

u-boot による起動手順

u-boot から起動時に使用するミニ・カーネルの vmlinux.UBoot と kuroboxHD.dtb が呼び出されて、通常の Linux システムが起動するという二段ロケット方式で起動しています。いわゆる loader.0 を使用する方法と違ってシンプルな起動順序となっていました。

玄箱オリジナルのシステムを起動する方法

上記の設定で ubuntu が起動するようになります。従来の玄箱オリジナルのシステムを起動させる場合には、u-boot のコンソールへログインした後、次のコマンドで起動させることができます。

 -- 玄箱 (u-boot) --
=> run bootcmd2

今後の予定

ubuntu がインストールされているパーティションを Ext2 ファイルシステムから Ext3 または Ext4 に変更してインストールを試みたいと思っています。ただこの場合、玄箱オリジナルのシステムでは Ext4 ファイルシステムを作ることが出来ないため、ハードディスクを取り出しての作業となりそうなのが辛いところです。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。