LoginSignup
1
1

More than 5 years have passed since last update.

RedSleeve6をQEMUにインストールし開発環境にする(その1)

Last updated at Posted at 2016-08-14

目的

Fedora12/armベースのオーディオNAS RockDiskNextをRSEL6化した話
http://qiita.com/hkato/items/1b220ac5bf9a6fdf0fd7
http://qiita.com/hkato/items/afa36fdc146f6f6d176f

こいつに追加のRPMなどをビルドするクロス環境を作ろうと思ったが挫折。そこでQEMU/ARMのエミュレーション環境でRSEL6を動かしてみた。

RaspberryPi/RSEL6等の開発環境にもなるはず。

参考URL

これをMacでやった感じですが...

環境

ホスト環境はMacOSXで行った。LinuxやWindowsの場合は適宜読み替えること。

下準備

ホスト側

私はbrewでqemuとxzを入れた(結局xzはtar.xzの中身をホスト側で調べるために使った、下記手順での展開はエミュレーション環境で行ってるので実際は不要です)

$ brew install qemu
$ brew install xz

適当なディレクトリにQEMUのファイルを置く場所を作る。
私は~/QEMUの下に作ることとした。

$ mkdir -p ~/QEMU/rsel6
$ cd ~/QEMU/rsel6

Debian環境の用意

まずDebianを起動させてからRedSleeve化する。
その為、Debian/squeezeのARM/QEMU環境を拾ってくる。
URL: https://people.debian.org/~aurel32/qemu/armel/

$ curl -O https://people.debian.org/~aurel32/qemu/armel/vmlinuz-2.6.32-5-versatile
$ curl -O https://people.debian.org/~aurel32/qemu/armel/initrd.img-2.6.32-5-versatile
$ curl -O https://people.debian.org/~aurel32/qemu/armel/debian_squeeze_armel_standard.qcow2

RedSleeve rootfs ISOイメージ作成

rsディレクトリの下にrselのrootfsを持ってきてISOファイル化する。
ちなみにrsel6-rootfsやrsel6-minimalを試したが動かなかった。

$ mkdir rs
$ cd rs
$ curl -O http://ftp.redsleeve.org/pub/yum/os/rsel6-rootfs-big.tar.xz
$ cd ..
$ hdiutil makehybrid -iso -joliet -o rsel6-rootfs.iso rs/

hdiutil makehybrid は MacOSX独自のコマンド、Linux等の場合は、

$ mkisofs -J -R -o rsel6-rootfs.iso rs/

RedSleeve用QEMUイメージ

qemu-img createで作成する方が良いと思うが、debainのイメージをコピーした

$ cp debian_squeeze_armel_standard.qcow2 redsleeve_armel_rootfs.qcow2 

Debian環境からRedSleeveを作る

起動

hdbにRedSleeveのqcow2イメージ、cdromに作成したRedSleeveのISOを指定しDebianを起動

$ qemu-system-arm -M versatilepb \
-kernel vmlinuz-2.6.32-5-versatile \
-initrd initrd.img-2.6.32-5-versatile \
-hda debian_squeeze_armel_standard.qcow2 \
-hdb redsleeve_armel_rootfs.qcow2 \
-cdrom rsel6-rootfs.iso \
-nographic \
-append "root=/dev/sda1 console=ttyAMA0"

root/rootでログイン

RedSleeve QEMUイメージの作成

Debian/ARM上での操作

ファイルシステム初期化

root@debian-armel:~# mkfs.ext3 /dev/sdb1
root@debian-armel:~# mkswap /dev/sdb5

ちなみにext4を試したがのちの処理でコケてダメだった

RedSleeve関連マウント

ISOとターゲットとなるイメージをマウント

root@debian-armel:~# mkdir -p /mnt/cdrom
root@debian-armel:~# mkdir -p /mnt/disk
root@debian-armel:~# mount -r /dev/cdrom /mnt/cdrom
root@debian-armel:~# mount /dev/sdb1 /mnt/disk

ISOから展開

root@debian-armel:~# cd /mnt/disk/
root@debian-armel:/mnt/disk# tar --strip-components 1 -xvJf /mnt/cdrom/rsel6-rootfs-bigtar.xz 
root@debian-armel:/mnt/disk# cd /
root@debian-armel:/# umount /mnt/disk

Ctrl-a x でQEMU終了

RedSleeveの起動(bash)と調整

まずはinitでなくbashで起動する

$ qemu-system-arm -M versatilepb \
-kernel vmlinuz-2.6.32-5-versatile \
-initrd initrd.img-2.6.32-5-versatile \
-hda redsleeve_armel_rootfs.qcow2 \
-nographic \
-append "root=/dev/sda1 console=ttyAMA0 init=/bin/bash"

/を再マウント

bash-4.1# mount -o rw,remount /

fstabの修正

bash-4.1# cp -p /etc/fstab /etc/fstab.orig
bash-4.1# vim /etc/fstab
/dev/sda1       /               ext3    defaults,noatime        1 1
/dev/sda5       swap            swap    defaults                0 0
devpts          /dev/pts        devpts  gid=5,mode=620          0 0
tmpfs           /dev/shm        tmpfs   defaults                0 0
proc            /proc           proc    defaults                0 0
sysfs           /sys            sysfs   defaults                0 0

#tmpfs           /tmp            tmpfs   defaults                0 0
#tmpfs          /var/tmp        tmpfs   defaults                0 0
#tmpfs          /var/cache/yum  tmpfs   defaults                0 0
#tmpfs          /var/lib/yum    tmpfs   defaults                0 0     

不要なサービスの停止

bash-4.1# chkconfig dnsmasq off
bash-4.1# chkconfig gpm off
bash-4.1# chkconfig haldaemon off
bash-4.1# chkconfig messagebus off
bash-4.1# chkconfig nfslock off
bash-4.1# chkconfig nscd off
bash-4.1# chkconfig rpcbind off
bash-4.1# chkconfig rpcgssd off
bash-4.1# chkconfig rpcidmapd off

MMCとCPU関連のオプション設定の無効化

RaspberryPiの実ハードなら必要なのかな。コメントアウト。

bash-4.1# cp -p /etc/rc.d/rc.local /etc/rc.d/rc.local.orig
bash-4.1# vim /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

#echo deadline > /sys/block/mmcblk0/queue/scheduler
#echo      256 > /sys/block/mmcblk0/queue/iosched/fifo_batch
#echo      100 > /sys/block/mmcblk0/queue/iosched/read_expire
#echo    10000 > /sys/block/mmcblk0/queue/iosched/write_expire
#echo      256 > /sys/block/mmcblk0/queue/nr_requests

#echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
#echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

init(Upstart)で使われないもの削除

ちとわからないが参考にしたURLの通り

bash-4.1# mv /etc/init/kexec-disable.conf /etc/init/kexec-disable.conf.orig
bash-4.1# mv /etc/init/serial.conf /etc/init/serial.conf.orig

gettyの設定

ttyAMAってなんだか知らないけど

bash-4.1# vim /etc/init/ttyAMA.conf
#
start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]

respawn

pre-start exec /sbin/securetty ttyAMA0
exec /sbin/agetty -L /dev/ttyAMA0 9600 vt102

準備完了

Ctrl-a x でQEMUを抜ける。

RedSleeveの起動

いよいよ本番

$ qemu-system-arm -M versatilepb \
-kernel vmlinuz-2.6.32-5-versatile \
-initrd initrd.img-2.6.32-5-versatile \
-hda redsleeve_armel_rootfs.qcow2 \
-nographic \
-append "root=/dev/sda1 console=ttyAMA0"

エラーは出るがログインできるようになる(root/password)。

なにやらディレクトリが無い様なので掘っておく。

[root@ac100 ~]# mkdir -p /var/lock/subsys
[root@ac100 ~]# mkdir -p /var/run/netreport

ネットワークが使えないので、一旦終了。

[root@ac100 ~]# shutdown -h now

Ctrl-a x で抜ける。

ネットワークの有効化

hdbにDebianイメージを指定して起動

$ qemu-system-arm -M versatilepb \
-kernel vmlinuz-2.6.32-5-versatile \
-initrd initrd.img-2.6.32-5-versatile \
-hda redsleeve_armel_rootfs.qcow2 \
-hdb debian_squeeze_armel_standard.qcow2 \
-nographic \
-append "root=/dev/sda1 console=ttyAMA0"

カーネルモジュールをコピーする

[root@ac100 ~]# mkdir -p /mnt/disk
[root@ac100 ~]# mount /dev/sdb1 /mnt/disk
[root@ac100 ~]# cp -R /mnt/disk/lib/modules/2.6.32-5-versatile /lib/modules/2.6.32-5-versatile

インターフェース設定

DHCPとかQEMUのNATのDNS指定とか

[root@ac100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=52:54:00:12:34:56
ONBOOT=yes
TYPE=ethernet
USERCTL=no
PEERDNS=yes
DNS1=10.0.2.3

IPv6無効化

[root@ac100 ~]# vim /etc/sysctl.conf

最終行に追加

# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1

ホスト名設定

[root@ac100 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rsel6.local

インターフェース初期化

[root@ac100 ~]# service network restart

念のため再起動

# reboot

インストール状況

[root@rsel6 ~]# uname -a
Linux rsel6.local 2.6.32-5-versatile #1 Wed Sep 25 00:01:55 UTC 2013 armv5tejl armv5tejl armv5tejl GNU/Linux
[root@rsel6 ~]# cat /etc/redhat-release 
Red Sleeve Enterprise Linux release 6.1 (Leap)

とりあえず動いている様です。

続く
http://qiita.com/hkato/items/43e6b312dd5082c9a8c6

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1