ラベル カーネル の投稿を表示しています。 すべての投稿を表示
ラベル カーネル の投稿を表示しています。 すべての投稿を表示

2014-04-18

OpenBlocks Aシリーズ rootfs変更方法 (SSD(SATA)ブート) [debian Wheezy][AX3][A7][A6]

OpenBlocks Aシリーズのカーネルの起動をSSD(SATA)から行う方法について

本機能は、OpenBlocksの機能の一部として実装されているものですが、当社の提供する標準のパッケージ構成ではないため、動作の保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (もしくは、SSD搭載モデル)

1. SSDの準備


SSDを用意します。もし、標準構成でDEBIANのラベルを設定済みでしたら、ラベルを削除し、本体を再起動してください。

# e2label /dev/sda1 ""

再起動後、ラベルを/に変更します。
を再起動してください。

# e2label /dev/sda1 /

ファイルシステムは、現在のAシリーズはすべてext4を採用していますが、ubootがカーネルの起動を行うドライブは、ext3までしか対応していません。
再フォーマットが必要な場合は、以下の通り、ext3などを使用してください。

# mke2fs -j -L "/" /dev/sda1

2. debootstrapによるrootfsの作成と修正


rootfs は、以下の記事と同様に、debootstrapで作成しました。詳細については、以下の記事を参考にしてください。

OpenBlocks Aシリーズ rootfs変更方法 (FlashROMブート) [debian Wheezy][AX3][A7][A6]

3. SSDブート用のファームウェアの作成


SSDブート用ファームウェアは、LinuxであればPCでもAシリーズでも作成することができます。
  1. FTPサイトよりSSDブート用のラムディスクイメージを取ってきます。

    A6/A7 : ftp://ftp.plathome.co.jp/pub/ssdlinux/1.0.0-LATEST/arm-obsa6/installation/ramdisk.image-extboot.obsa6.gz

    AX3 : ftp://ftp.plathome.co.jp/pub/ssdlinux/1.1.0-LATEST/arm-obsax3/installation/ramdisk.image-extboot.obsax3.gz

  2.  FTPサイトよりカーネルを取ってきます。

    A6 : ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.40-3/zImage

    A7 : ftp://ftp.plathome.co.jp/pub/OBSA7/wheezy/3.2.40-4/zImage

    AX3 : ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.40-4/zImage
  3. uboot-mkimageパッケージをインストールします。

    # apt-get install uboot-mkimage

    
    
  4. mkimageコマンドでSSDブート用ファームウェアを作成します。

    AX3の場合(A6/A7ではラムディスク名とファームウェア名を変更します)

    # mkimage -n "コメント(日付やバージョンなど)" -A arm -O linux -T multi -C none -a 0x8000 -e 0x8000 -d zImage:ramdisk.image-extboot.obsax3.gz uImage.initrd-extboot.obsax3

  5. rootfsの/bootにSSDブート用ファームウェアをコピーします。

    AX3でSSDがsda1の場合

    # mount /dev/sda1 /mnt
    # cp uImage.initrd-extboot.obsax3 /mnt/boot
    # umount /mnt

  6. rootfsとするパーティションのラベルを"/"にします。

    rootfsが/dev/sda1の場合

    # e2label /dev/sda1 /
3. ブート方式の切り替え


ユーザーズマニュアルを参考に、本体のDIP SW3をONにして立ち上げます。(SATA起動)
SATA起動に切り替えた場合のconsoleメッセージは以下の通りです。

U-Boot 1.1.4 (Feb  5 2014 - 12:38:30)
Plat'Home version: 1.2.13 A7 (Base: Marvell version: 3.5.9)

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006CF480

Soc: 88F6282 A1CPU running @ 600Mhz L2 running @ 300Mhz
SysClock = 300Mhz , TClock = 200Mhz

DRAM (DDR3) CAS Latency = 6 tRP = 5 tRAS = 15 tRCD=5
DRAM CS[0] base 0x00000000   size 256MB
DRAM CS[1] base 0x10000000   size 256MB
DRAM CS[2] base 0x20000000   size 256MB
DRAM CS[3] base 0x30000000   size 256MB
DRAM Total size   1GB  16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:256 MB
POST:  mac verify Eth0 PASSED Eth1 PASSED

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Module 0 is RGMII

USB 0: host mode
USB 1: host mode
USB 2: host mode
USB 3: host mode
Net:   egiga0, egiga1
Hit any key to stop autoboot:  0

Run Boot Selection Script

*** SW 1 IS OFF ***

*** SW 2 IS OFF ***

*** SW 3 IS ON, Boot from SATA ***


Reset IDE:
Marvell Serial ATA Adapter
Integrated Sata device found
[0 0 0]: Enable DMA mode (6)
  Device 0 @ 0 0:
Model: ADATA SSD S396 30GB                    Firm: 3.3.2    Ser#: 02501132500100000227
            Type: Hard Disk
            Supports 48-bit addressing
            Capacity: 30533.8 MB = 29.8 GB (62533296 x 512)


Loading ...

2926770 bytes read
Bootargs: ramdisk_size=8192 root=LABEL=/ vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)

ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000

(user),0x2140000@0xdec0000(opt) console=ttyS0,115200
## Booting image at 02000000 ...
   Image Name:   OBS-A7-3.2.40-4
   Created:      2014-04-18   2:37:42 UTC
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    2926706 Bytes =  2.8 MB
   Load Address: 00008000
   Entry Point:  00008000
   Contents:
   Image 0:  2542808 Bytes =  2.4 MB
   Image 1:   383886 Bytes = 374.9 kB
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 3.2.40 (root@release-firmware) (gcc version 4.7.2 (Debian 4.7.2-4) ) #1 Fri Mar 7 16:24:48 JST 2014
CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
CPU: VIVT data cache, VIVT instruction cache
Machine: Plat'Home OpenBlocks A7
Memory policy: ECC disabled, Data cache writeback
BUG: mapping for 0xf4000000 at 0xf4000000 overlaps vmalloc space
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096
Kernel command line: ramdisk_size=8192 root=LABEL=/ vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)

ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000

(user),0x2140000@0xdec0000(opt) console=ttyS0,115200
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1024MB = 1024MB total
Memory: 1033400k/1033400k available, 15176k reserved, 229376K highmem

電源を入れ直すか、bootと入力して起動してください。

4. 補足


SATA起動は、ext3以前のファイルシステムをサポートしており、現状では、ext4でフォーマットされたドライブからの起動が出来ません。
rootfsをext4で使用したい場合は、起動用のパーティションとして、/dev/sda1を、rootfs用のパーティションとして/dev/sda2を別に作成して使用してください。


2013-07-29

カーネルのカスタマイズ手順について(非公式版) [AX3][A6]

OpenBlocks Aファミリのカーネルのカスタマイズ手順に関しては、現状では当社サポート窓口よりご案内していますが、当blogの検証ではカーネルの再構築について触れることも少なくないため、非公式ながら、ここにまとめておきます。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

 なお、本作業に関しては、作業内容をご理解の上、自己責任の元に慎重に行ってください。

1. 事前準備


カーネル再構築のためには、開発環境が必要になります。
ユーザマニュアルに書かれた、タイムゾーン等の最初の設定、標準ツールのインストールに加え、基本的な開発環境をインストールしてください。

# aptitude install build-essential

また、ファームウェア構築のために、ncursesのdev環境および、mkimageが必要となります。

# aptitude install uboot-mkimage libncurses5-dev

2. OpenBlocks AX3シリーズのカーネルカスタマイズ手順


AX3のカーネルカスタマイズを行う場合、wheezy向けの3.2.40系カーネルと、squeeze向けの3.0.6系カーネルにより、ファイルの入手先やファイル名が違います。

ファイルの入手

当社ftpサイトより、カーネルソースファイルと、対応したramdiskイメージを入手し、展開してください。
2014/4/22現在の最新のカーネルパッケージは、3.2.40-4 ( wheezy )および、3.0.6-14です。
これより最新のパッケージがリリースされた場合は、ディレクトリなどを変更してください。

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.40-4/linux-3.2.40-20140220.tar.gz
# wget ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.40-4/ramdisk-wheezy.obsax3.img.lzma
# tar xvzf  linux-3.2.40-20140220.tar.gz

2.6.31の場合 (Debian 6.0 squeeze )
# cd /usr/src
# wget ftp://ftp.plathome.co.jp//pub/OBSAX3/squeeze/3.0.6-14/source/linux-3.0.6-14.tar.gz
# wget ftp://ftp.plathome.co.jp//pub/OBSAX3/squeeze/3.0.6-14/ramdisk-squeeze.obsax3.img.lzma
# tar xvzf  linux-3.0.6-14.tar.gz

構成情報の編集

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src/linux-3.2.40
# cp arch/arm/configs/obsax3_defconfig .config
# make menuconfig

もしくは直接configファイルを編集する方法もあります。
# cd /usr/src/linux-3.2.40
# cp  arch/arm/obsax3_defconfig arch/arm/obsax3_defconfig.orig
# vi arch/arm/obsax3_defconfig
# make obsax3_defconfig arch=ARM oldconfig

3.0.6の場合 (Debian 6.0 squeeze )
# cd /usr/src/linux-3.0.6
# cp arch/arm/configs/obsax3_defconfig .config
# make menuconfig

zImageおよび、ドライバモジュールの作成とインストール

# make zImage modules
# make modules_install

ファームウェアイメージの作成

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src
# gzip -9 < linux-3.2.40/arch/arm/boot/zImage > zImage.gz
# mkimage -n "OBSAX3_xxx 3.2.40" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d zImage.gz:ramdisk-wheezy.obsax3.img.lzma uImage.initrd.obsax3

3.0.6の場合 (Debian 6.0 squeeze )
# cd /usr/src
# gzip -9 < linux-3.0.6/arch/arm/boot/zImage > zImage.gz
# mkimage -n "OBSAX3_xxx 3.0.6" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d zImage.gz:ramdisk-squeeze.obsax3.img.lzma uImage.initrd.obsax3

ファームウェアのFlashROMへの書き込み

# flashcfg -y -f uImage.initrd.obsax3

3. OpenBlocks A6のカーネルカスタマイズ手順


A6のカーネルカスタマイズを行う場合、wheezy向けの3.2.40系カーネルと、squeeze向けの2.6.31系カーネルでは、パッケージの構成手順が若干異なります。

また、squeeze版をご利用の場合、2.6.31系カーネル向けに用意されたramdiskパッケージをlzmaファイルにする際に、メモリ不足となるため、swapを追加設定してください。
標準状態では、swapは未使用の状態になっています。
設定方法に関しては、

OpenBlocks A6 FAQ: SWAPを設定するには、どのようにすれば良いですか

を参照してください。

ファイルの入手

当社ftpサイトより、カーネルソースファイルと、対応したramdiskイメージを入手し、展開してください。
2014/4/22現在の最新のカーネルパッケージは、3.2.40-3 ( wheezy )および、2.6.31-8です。
これより最新のパッケージがリリースされた場合は、ディレクトリなどを変更してください。

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.40-3/linux-3.2.40-20140220.tar.gz
# wget ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.40-3/ramdisk-wheezy.obsa6.img.lzma
# tar xvzf  linux-3.2.40-20130710-2.tar.gz

2.6.31の場合 (Debian 6.0 squeeze )
# cd /usr/src
# wget ftp://ftp.plathome.co.jp//pub/OBSA6/squeeze/2.6.31-8/source/linux-2.6.31-obs-20130131.tar.gz
# wget  ftp://ftp.plathome.co.jp//pub/OBSA6/squeeze/2.6.31-8/ramdisk-squeeze.obsa6.img
# tar xvzf  linux-2.6.31-obs-20130131.tar.gz

構成情報の編集

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src/linux-3.2.40
# cp arch/arm/configs/obsa6_defconfig .config
# make menuconfig

もしくは直接configファイルを編集する方法もあります。
# cd /usr/src/linux-3.2.40
# cp  arch/arm/obsa6_defconfig arch/arm/obsa6_defconfig.orig
# vi arch/arm/obsa6_defconfig
# make obsa6_defconfig arch=ARM oldconfig



2.6.31の場合 (Debian 6.0 squeeze )
# cd /usr/src/linux-2.6.31
# cp arch/arm/configs/obsa6_defconfig .config
# make menuconfig

zImageおよび、ドライバモジュールの作成とインストール

# make zImage modules
# make modules_install

ファームウェアイメージの作成

3.2.40の場合 (Debian 7.1 wheezy )
# cd /usr/src
# gzip -9 < linux-3.2.40/arch/arm/boot/zImage > zImage.gz
# mkimage -n "OBSA6LXC 3.2.40" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d zImage.gz:ramdisk-wheezy.obsa6.img.lzma uImage.initrd.obsa6

2.6.31の場合 (Debian 6.0 squeeze )
# cd /usr/src
# gzip -9 < linux-3.2.40/arch/arm/boot/zImage > zImage.gz
# lzma -3 < ramdisk-squeeze.obsa6.img > ramdisk-squeeze.obsa6.img.lzma
# mkimage -n "OBSA6LXC 3.2.40" -A arm -O linux -T multi -C gzip -a 0x8000 -e 0x8000 -d zImage.ramdisk-squeeze.obsa6.img.lzma uImage.initrd.obsa6

ファームウェアのFlashROMへの書き込み

# flashcfg -y -f uImage.initrd.obsa6

4.さいごに


ファームウェアを書き込む前に、ftpサイトからダウンロード出来る、標準構成のuImage.initrd.xxxファイルと、出来上がったファイルのサイズを比較することをおすすめします。