工人舎 SA5SX12A へ Linux をインストール
物欲に目覚めつつある tmorimoto です。先日、OSC2008 Tokyo/Spring の小江戸らぐのブースで工人舎製の PC を持っておられた方がいました。少しの間、触って遊ばせて頂いた後「これは欲しい!」。初めての PC 衝動買いです。
リファレンス:
工人舎 -SA series LINEUP-
工人舎7インチ液晶mini NotePC SA1F00A
GRUBコマンドラインからの Linux 起動
SA5SX12A を購入しました。こんな素敵な PC には Linux をインストールしましょう〜♪。そこで、唐突ですが Linux インストール記です。今や Linux のインストールで困ると言うのは、このようなモバイルや組み込み系のデバイスしかないですよね。「ん?、動かねー」、「あっ、固まった」と言う感覚が懐かしくて、楽しかったです。うぅ、もう年だ(- -#
さて、インストールを試みたのは、以下のディストリビューションです。
普通にインストールに成功したものを ○、ごにょごにょ小細工したら成功したものを △、ダメだったものを×で表します。(× のものも私が挑戦していないだけで、もしかしたらインストールできるかもしれません)
- CentOS 5.1 : △ (後述)
- CentOS 4.6 : ×
- OpenSuse 10.3 : ◎ (唯一、まともにインストールできて X も起動する)
- Vine Linux 4.2 : ○ (マウスの挙動がおかしい)
- Fedora 8 : ○ (X が起動しない)
- Momonga Linux 4.0 : ×
- Ubuntu 7.10 : ×
CentOS 5.1(AXS3 も同手順のはず) をインストールするための方法をまとめておきます。
(注) このインストール手記は動作を保証するものではありません。また、本作業による、いかなる損害につきましても、自己責任でお願い致します
なぜ、ごにょごにょ小細工しなければいけないかの最大の理由は、
$ uname -m
i586
というわけで、AMD Geode™ LX800 の CPU アーキテクチャが i586 なのですね。Asianux も同様ですが、kernel 等の一部のパッケージは i686 、その他のパッケージは i386 で提供しています。従って、普通にインストールを試みると、kernel がインストールできないために失敗します。以下のようなエラーが発生します。
# これがパッケージの依存関係チェック時に発生するから質が悪い
# 最初から CPU アーキテクチャが分かってるんだから、
# インストーラー起動時に警告してくれれば良いのに、、、
このエラーを手掛かりに anaconda のソースを覗いてみると、
$ less -N anaconda-11.1.2.87/yuminstall.py
(snip)
1101 foundkernel = False
1102 kpkg = getBestKernelByArch("kernel", self.ayum)
の箇所で getBestKernelByArch() を呼んで CPU アーキテクチャに適した kernel を探す処理を行っていますが、DVD 内には i686 の kernel しか存在しないため、パッケージ選択後の依存関係チェック前で "/usr/lib/python2.4/site-packages/yum/packageSack.py" が例外を発生させます。 kernel 以外のパッケージは i386 なので、kernel のアーキテクチャチェックを外して、他のパッケージをインストールできるようにします。そこで "yuminstall.py" を以下のように修正します。
(ソースは anaconda-11.1.2.87-1.el5.centos.src.rpm を取得すると確認できます)
$ diff -uNr yuminstall.py.orig yuminstall.py
--- yuminstall.py.orig 2007-09-12 02:51:21.000000000 +0900
+++ yuminstall.py 2008-03-15 14:27:59.000000000 +0900
@@ -1099,20 +1099,22 @@
return pkgs[0]
foundkernel = False
- kpkg = getBestKernelByArch("kernel", self.ayum)
+ # kpkg = getBestKernelByArch("kernel", self.ayum)
+ kpkg = "kernel - 2.6.18-53.el5.i686"
# FIXME: this is a bit of a hack. we shouldn't hard-code and
# instead check by provides. but alas.
- for k in ("kernel", "kernel-smp", "kernel-xen0", "kernel-xen"):
- if len(self.ayum.tsInfo.matchNaevr(name=k)) > 0:
- kpkg = getBestKernelByArch(k, self.ayum)
- log.info("%s package selected for kernel" % k)
- foundkernel = True
- self.selectModulePackages(anaconda, k)
-
- if len(self.ayum.tsInfo.matchNaevr(name="gcc")) > 0:
- log.debug("selecting %s-devel" % k)
- self.selectPackage("%s-devel.%s" % (k, kpkg.arch))
+ #for k in ("kernel", "kernel-smp", "kernel-xen0", "kernel-xen"):
+ # if len(self.ayum.tsInfo.matchNaevr(name=k)) > 0:
+ # kpkg = getBestKernelByArch(k, self.ayum)
+ # log.info("%s package selected for kernel" % k)
+ # foundkernel = True
+ # self.selectModulePackages(anaconda, k)
+ #
+ # if len(self.ayum.tsInfo.matchNaevr(name="gcc")) > 0:
+ # log.debug("selecting %s-devel" % k)
+ # self.selectPackage("%s-devel.%s" % (k, kpkg.arch))
+ foundkernel = True
if not foundkernel and os.path.exists("/proc/xen"):
try:
この修正をインストール時に適用するため、anaconda の updates.disk を以下のようにして作成します。
(updates.disk の作り方)
# dd if=/dev/zero of=updates.img bs=1k count=1440
# yes | mke2fs updates.img
# mount -o loop updates.img /mnt/
# cp yuminstall.py /mnt
# umount /mnt
# dd if=updates.img of=/dev/fd0 bs=72k count=20
私が作成した updates.img をアップしておきますので、必要な方はご活用ください。 インストール時に updates.disk を適用するには、以下のように、コマンドラインにおいて "linux updates" を入力してインストールを進めます。
USB フロッピードライブで updates.disk を読み込んだ画面です。
この後は、通常のインストール方法と同じです。画面の指示に従って進めます。また、今回、作業を行ったパーティション設定は以下の通りです。
-- partition
/dev/hda1 /boot 128MB
/dev/hda2 / 60440MB
パッケージの選択は、KDE, Server, Server-GUI の3つを選択しました。これらのパッケージがインストールされた後、以下のように、「システムにカーネルパッケージはインストールされなかったため、ブートローダ設定は変更されません」という警告メッセージが出力されます。
このメッセージが出力されたら、"Ctrl + Alt + F2" でコンソールに切り替えます。
(アーキテクチャを無視して kernel を強制的にインストール)
# rpm -ivh --root /mnt/sysimage --ignorearch /mnt/sources/CentOS/kernel-2.6.18-53.el5.i686.rpm
(kernel-devel は必要に応じて)
# rpm -ivh --root /mnt/sysimage --ignorearch /mnt/sources/CentOS/kernel-devel-2.6.18-53.el5.i686.rpm
これで kernel はインストールできました。但し、i686 の kernel をそのまま使ってて良いのかどうか私は分からないです。識者のコメントが欲しいところです。最後にブートローダの設定を行います。この作業を行わないと起動させることができません。
(ブートローダ設定)
# chroot /mnt/sysimage
# /sbin/grub-install /dev/hda
(fd0) /dev/fd0
(hd0) /dev/hda
# grub
# cd /boot/grub
# vi grub.conf
-- ここから
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-53.el5.img
-- ここまで
# ln -s ./grub.conf menu.lst
ブートローダの設定も完了しました。"Alt + F6" を押して、元のインストーラー画面に戻り、「OK」を選択して再起動します。

grub の起動後、 kernel が起動できれば成功ですo(^ ^)o
(再起動後、もし、うまく起動しなかったら手動で grub コマンドから起動)
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x1b3634]
grub> initrd /initrd-2.6.18-53.el5.img
[Linux-initrd @ 0x37dcd000, 0x222337 bytes]
grub> boot









拝見しました。
非常に興味深い内容でした。
タッチパネルは正常に動きますか?
投稿: トマト | 2008年4月16日 (水) 10:55
トマトさん、コメントありがとうございます。
残念ながら、タッチパネルは動きません。動作情報があれば、私も知りたいです。
投稿: tmorimoto | 2008年4月16日 (水) 11:04
参考サイト
http://wiki.centos.org/Projects/CentOS5PentiumSupport
投稿: stranger | 2009年5月 6日 (水) 07:20
この情報のおかげで大変助かりました。
こちらではCent5.2でトライし、無事インストール出来ました。ブートもできて使えるところまで気ましたが、起動時にdhcp関連でエラーが数行でるんですが、dhcpを無効にしても出るようで、そちらは問題なく動いてますでしょうか?(古いレスですいません)
投稿: 雨犬 | 2010年2月 8日 (月) 15:36