メモとまとめ。Sharp SL-C3x00へのOpenSource(Slackware Linux)の自家製移植。

kernel-3.2.x系の2.6.x系への後方互換性を試してみる
http://seesaawiki.jp/lifewithslackzaurus/d/kernel%...
で、kernel-3.2.x系最新を持ってきてarmパッチとzaurusパッチをあてて、makeしてSZのユーザーランド
で動くかどうか、後方互換性を試してみることにしたが、
パッチをあてる前に、普通にmakeできるか、カーネルヘッダはどうなってるか、展開してみた。

以下でやった事をLFS-7.1を参考に、Linux-3.2.88でもやってみる。パッチはあてない。
Linux-2.6.21.5 API Headers
http://seesaawiki.jp/lifewithopenzaurus/d/LFS-6.3%...
(~/slackware-14.0/source/k/packaging-x86/kernel-generic/kernel-generic.SlackBuild を参考に)
https://cdn.kernel.org/pub/linux/kernel/v3.x/linux... を採ってきて、
PC Linux で、linux-3.2.88.tar.xz を linux-3.2.88.tar.bz2 に変換した。
$ tar xjf linux-3.2.88.tar.bz2
$ cd linux-3.2.88
$ LANG=C LC_ALL=POSIX ARCH=arm make mrproper CROSS_COMPILE=
$ cp -i ~/linux-2.6.21.5.sz/.config .
(.config はとりあえずSZで使っていたのを使ってみる。EABIは有効化、PM_LEGACYはそのまま)
$ LANG=C LC_ALL=POSIX TERM=vt100 ARCH=arm make menuconfig CROSS_COMPILE=
(保存して終了する)
$ mkdir ~/tmp_include
$ LANG=C LC_ALL=POSIX ARCH=arm make INSTALL_HDR_PATH=~/tmp_include headers_install CROSS_COMPILE=
$ ls -F ~/tmp_include/include/
asm/ asm-generic/ drm/ linux/ mtd/ rdma/ scsi/ sound/ video/ xen/
$ sudo mv -i /usr/include /usr/include.orig
$ cd /usr/include.orig; sudo mkdir ../include; sudo tar cpf - . | (cd ../include/; sudo tar xpf -)
$ sudo rm -rf /usr/include{asm,asm-generic,drm,linux,mtd,rdma,scsi,sound,video,xen}
$ sudo cp -a ~/tmp_include/include/* /usr/include/; sudo chown -R root:root /usr/include
(/usr/include以下をカーネルヘッダだけにしたらmakeでエラーになったため、他は元のを入れたままにした)
$ cd ~/linux-3.2.88
$ LANG=C LC_ALL=POSIX ARCH=arm make bzImage CROSS_COMPILE=
とりあえず、パッチなしでもmakeはできてzImageは作成できた。試しに続けてmodulesも作成しkexecして
みたが、全く動作しなかった。
$ LANG=C LC_ALL=POSIX ARCH=arm make modules CROSS_COMPILE=
$ sudo mv -i /lib/firmware /lib/firmware-2.6.21.5
$ sudo mkdir /lib/firmware
$ LANG=C LC_ALL=POSIX ARCH=arm sudo make modules_install CROSS_COMPILE=
(ここでも/lib/firmwareの下にいくつかinstallされる)
$ LANG=C LC_ALL=POSIX ARCH=arm sudo make firmware_install CROSS_COMPILE=
$ sudo cp -i arch/arm/boot/zImage /boot/vmlinuz-3.2.88.sz.hda6
$ exit
# kexec -l /boot/vmlinuz-3.2.88.sz.hda6
# umount -a
# sync
# sync
# sync
# kexec -e
全く動かなかった。zaurusパッチ無しのせいだろう。と思ったがkexecで直接kernelをloadしてjumpしてる
のにウンともスンともというのは納得いかない。パッチ無しでもarmの実装はけっこう入っているようだ。
kexecをVerUpしたり、
http://seesaawiki.jp/lifewithslackzaurus/d/kexec
\.configを変えたり、もう少しいろいろやってみよう。最悪kernelのVerも換えてみるかな。

make カーネル: (2017/06/05)
気の向くままにメインラインの(つまりオリジナルの)カーネルをarch=armでmakeしまくってしまったが、全然
メモってなかった。kexec-1.101、kexec-2.0.1両方で試した。カーネルヘッダは変えないSZのままで試した。
linux-3.2.88 --- makeできたが、全く起動できず。SZの.configでmake menuconfig。
linux-2.6.34.14 --- makeできたが、全く起動できず。SZの.configでmake localconfig。ideのsupport以外
\ 全てn。
linux-2.6.21.5 --- makeできて、/をmountする前まで起動できた。SZの.configでmake menuconfig。
linux-yocto-3.10 --- makeエラー。arch/arm/include/asm/io.hは https://lkml.org/lkml/2016/12/16/165
\ を参考に、#if __LINUX_ARM_ARCH__ < 6 をまねて、#if GCC_VERSION < 40200 ; #define
\ __raw_write(v,a) (__chkio_pta(a), *(volatile unsigned char __force *)(a) = (v)) 以下省略、
\ でやった。全く起動できず。SZの.configでmake menuconfig。script/kconfig/conf --silentoldconfig
\ Kconfig が実行された。
linux-3.0.101 --- makeできたが、全く起動できず。SZの.configでmake menuconfig。

linux-3.10.y-c3x00-f2fs-kexec-r0:
http://www.oesf.org/forum/index.php?showforum=167
http://www.oesf.org/forum/index.php?showtopic=3455...
git clone git://github.com/greguu/linux-3.10.y-c3x00-f2fs-kexec-r0
$ cd linux-3.10.y-c3x00-f2fs-kexec-r0
$ elvis .coonfig (CONFIG_CMDLINEを今のSZと同じにした。XZ関連のCONFIG_*を全て無効にした)
$ LANG=C LC_ALL=POSIX TERM=vt100 ARCH=arm make menuconfig CROSS_COMPILE=
(exit時にsaveした)
$ LANG=C LC_ALL=POSIX ARCH=arm make zImage CROSS_COMPILE=
\ arch/arm/include/asm/io.hでmakeエラー。 https://lkml.org/lkml/2016/12/16/165
\ を参考に、#if __LINUX_ARM_ARCH__ < 6 をまねて、#if GCC_VERSION < 40200 ; #define
\ __raw_write(v,a) (__chkio_pta(a), *(volatile unsigned char __force *)(a) = (v)) 以下省略、
\ で続行した。
kexec-2.0.1でやってみたが全く起動せず。

linux-3.10.y-c3x00-f2fs-kexec-r0:その2 2018/01/07
http://www.oesf.org/forum/index.php?showforum=167
http://www.oesf.org/forum/index.php?showtopic=3455...
git clone git://github.com/greguu/linux-3.10.y-c3x00-f2fs-kexec-r0
$ cd linux-3.10.y-c3x00-f2fs-kexec-r0
$ cp arch/arm/configs/spitz_defconfig .config
$ elvis .config (EABIにした。CONFIG_CMDLINEを今のSZと同じにした)
$ LANG=C LC_ALL=POSIX TERM=vt100 ARCH=arm make menuconfig CROSS_COMPILE=
(exit時にsaveした)
$ LANG=C LC_ALL=POSIX ARCH=arm make zImage CROSS_COMPILE=
\ arch/arm/include/asm/io.hでmakeエラー。 https://lkml.org/lkml/2016/12/16/165
\ を参考に、#if __LINUX_ARM_ARCH__ < 6 をまねて、#if GCC_VERSION < 40200 ; #define
\ __raw_write(v,a) (__chkio_pta(a), *(volatile unsigned char __force *)(a) = (v)) 以下省略、
\ で続行した。
$ LANG=C LC_ALL=POSIX ARCH=arm make modules CROSS_COMPILE=
$ LANG=C LC_ALL=POSIX ARCH=arm sudo make modules_install CROSS_COMPILE=
kexec-1.101で起動できログインプロンプトまできた。が、キー入力できなかった。/dev/enent/??が
無いとか出ているからこのせいか?
これまで全く起動できなかったのは、.configの設定ミスのためと思われる。
SZ-12.0の.configを新しいカーネルソースdirに持ってきてmake_menuconfigすれば新しい設定が追加
されるだけでうまく動くだろうと勝手に思っていたが違った。自分都合の設定をdefconfigに入れ込ま
なければならないらしい。

linux-3.10.y-c3x00-f2fs-kexec-r0:その3 2018/01/17
linux-3.2.88:その2
その後、pxa_key関連のパッチを参考に、
arch/arm/mach-pxa/spitz.c を見ていると、
CONFIG_KEYBOARD_MATRIX、CONFIG_KEYBOARD_GPIO、があり、
有効にしてみたらキーボード入力ができるようになった。linux-3.2.88も起動できた。
Slack-14.0はkernel-3.2系なので試しに、Slackware ARM (soft float) 14.0
の基本環境で起動させたところ基本コマンドくらいはうまくいってそうなので、
Slackware ARM (soft float) 14.0 spitz 用に、
Slackware_ARM-14.0 spitz GPE メモ
http://seesaawiki.jp/lifewithslackarmzaurus/
もメモることにした。


参考書籍:
絶対わかる!Linuxカーネル完全入門 2013.05 (3.8.x系のビルド法(PC用)や、arm用カーネルのビルド法が書いてある。)
http://itpro.nikkeibp.co.jp/article/MAG/20130401/4...

Menu

メニューサンプル1

メニューサンプル2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます