DELL Streak をいじろう
ひょんなことから、DELL Streakであそんでます。
いじった覚え書きを載せていきます。
haltで電源が切れない。
kurobox.comにあった、haltのバグ。
確かに、電源が切れない。
I have found a tiny "error" in linux-2.6.15/arch/ppc/platforms/linkstation.c :
is:
linkstation_power_off(void)
{
local_irq_disable();
for( ; ; ) ;/* No way to shut power off with software */
out_8((void *)LINKSTATION_SERIAL_0, 0x47); // send shutdown messages
/* NOTREACHED */
}
must be
linkstation_power_off(void)
{
local_irq_disable();
for( ; ; ) /* No way to shut power off with software */
out_8((void *)LINKSTATION_SERIAL_0, 0x47); // send shutdown messages
/* NOTREACHED */
}
なにが違っているのかわからなかったが、よく見るとforのあとのセミコロンが多い。
2.6.15 コンパイル&ブート成功
2ch情報を訂正。やってみた。
304 :270:2006/01/12(木) 09:02:41 id:zXAfy7oD
カーネル2.6.15のコンパイル及びboot手順です。
環境;玄箱HG うぉううぉうさんのdebian_2005_08_21_dist.tgzをsarge化したもの
ディレクトリやsymlinkは何も考えなくてもOKみたいです。
ちなみに、初期導入直後をsarge化したdebianで /mnt/2.6.15/の中でコンパイルしました。
たしか、apt-get install gcc ncurses-dev patchしかしてません。
wget http://webpages.charter.net/trevorpowdrell/kurobox-sources-2.6.15.patch.bz2
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.gz
bunzip2 kurobox-sources-2.6.15.patch.bz2
tar zxpvf linux-2.6.15.tar.gz
patch -Np0
カーネルコンパイルに必要なパッケージ & 2.4.32
カーネルコンパイルに必要なパッケージ
apt-get install gcc ncurses-dev
2.4.32もやってみた。
patchでMakefileがrejectされるが、1行訂正のみでOK
EXTRAVERSION = -kurobox
wget http://webpages.charter.net/trevorpowdrell/kurobox.patch.bz2 wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.gz bunzip2 kurobox.patch.bz2 tar zxpvf linux-2.4.32.tar.gz cd linux-2.4.32 patch -Np1 <../kurobox.patch cp config_kuroboxhg .config make oldconfig make dep make vmlinux sudo objcopy -O binary vmlinux /boot/vmlinux.bin make modules sudo make modues_install sudo reboot
玄箱でkernel 2.4.31 その2
・2chにrtcのコンパイルエラーの対策が出てました。
gccのバージョンにも依存します。
修正するファイル drivers/char/rs5c372.c drivers/net/r8169.c
% cd <somewhere>/linux-2.4.31 % patch < something.txt --- ./drivers/char/rs5c372.c.old 2006-01-09 17:53:28.000000000 +0900 +++ ./drivers/char/rs5c372.c 2006-01-09 20:31:49.000000000 +0900 @@ -184,6 +184,8 @@ } else { + time_t sec; + /* set 24h time */ buf[0] = 0xf0; buf[1] = 0x20; @@ -202,7 +204,7 @@ ppc_md.get_rtc_time=rs5c372_get_rtc_time; ppc_md.set_rtc_time=rs5c372_set_rtc_time; - time_t sec = rs5c372_get_rtc_time(); + sec = rs5c372_get_rtc_time(); xtime.tv_usec = 0; if (sec > 0) xtime.tv_sec = sec;
gcc-2.95 またビルド止まった。
関数の中で使ってるauto変数の宣言をネストの先頭じゃなくて
途中でやっちゃってるからエラーで止まるんだな。 > gcc-2.95
drivers/net/r8169.cも手直しぢゃ。
C++じゃないんだから、そんなことやんない方がいいよなぁ。
あと2,3箇所ありそうな悪寒...
玄箱でkernel 2.4.31
2chの情報で実際にやってみる。
※テンプレ
英語の記事
http://www.kurobox.com/forums/viewtopic.php?t=682
パッチ
http://webpages.charter.net/trevorpowdrell/kurobox.patch.bz2
カーネルソース
http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.31.tar.gz
・wgetでカーネルソースとパッチをget。tarで展開。patchを当てる
hiroyuki@kuro:/mnt/2.4.31$ tar zxpvf linux-2.4.31.tar.gz hiroyuki@kuro:/mnt/2.4.31$ patch -Np0 <kurobox.patch hiroyuki@kuro:/mnt/2.4.31$ ln -s linux-2.4.31 linux hiroyuki@kuro:/mnt/2.4.31$ cd linux
・HG用にコンパイルしてみる。
hiroyuki@kuro:/mnt/2.4.31/linux$ cp config_kuroboxhg .config hiroyuki@kuro:/mnt/2.4.31/linux$ make oldconfig ;make dep ;make vmlinux gcc -D__KERNEL__ -I/mnt/2.4.31/linux-2.4.31/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/mnt/2.4.31/linux-2.4.31/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -nostdinc -iwithprefix include -DKBUILD_BASENAME=rs5c372 -c -o rs5c372.o rs5c372.c rs5c372.c: In function `rs5c372_attach': rs5c372.c:205: parse error before `sec' rs5c372.c:207: `sec' undeclared (first use in this function) rs5c372.c:207: (Each undeclared identifier is reported only once rs5c372.c:207: for each function it appears in.) make[3]: *** [rs5c372.o] Error 1 make[3]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers/char' make[2]: *** [first_rule] Error 2 make[2]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers/char' make[1]: *** [_subdir_char] Error 2 make[1]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers' make: *** [_dir_drivers] Error 2 hiroyuki@kuro:/mnt/2.4.31/linux$
※rtcドライバーでエラー。
・ノーマル玄箱で再アタック
hiroyuki@kuro:/mnt/2.4.31/linux$ cp config_kurobox .config hiroyuki@kuro:/mnt/2.4.31/linux$ make oldconfig ;make dep ;make vmlinux gcc -D__KERNEL__ -I/mnt/2.4.31/linux-2.4.31/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/mnt/2.4.31/linux-2.4.31/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -nostdinc -iwithprefix include -DKBUILD_BASENAME=rs5c372 -c -o rs5c372.o rs5c372.c rs5c372.c: In function `rs5c372_attach': rs5c372.c:205: parse error before `sec' rs5c372.c:207: `sec' undeclared (first use in this function) rs5c372.c:207: (Each undeclared identifier is reported only once rs5c372.c:207: for each function it appears in.) make[3]: *** [rs5c372.o] Error 1 make[3]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers/char' make[2]: *** [first_rule] Error 2 make[2]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers/char' make[1]: *** [_subdir_char] Error 2 make[1]: Leaving directory `/mnt/2.4.31/linux-2.4.31/drivers' make: *** [_dir_drivers] Error 2 hiroyuki@kuro:/mnt/2.4.31/linux$
※同じエラー
※環境
hiroyuki@kuro:/mnt/2.4.31/linux$ gcc -v
Reading specs from /usr/lib/gcc-lib/powerpc-linux/2.95.4/specs
gcc version 2.95.4 20011002 (Debian prerelease)
※2chでコンパイル成功した人
カーネルはブートはしたみたいだがネットワークが死んでしまっている
ようで様子がわからん。
Jan 1 09:00:19 kuro-box kernel: klogd 1.4.1#17, log source = /proc/kmsg started.
Jan 1 09:00:19 kuro-box kernel: Cannot find map file.
Jan 1 09:00:19 kuro-box kernel: No module symbols loaded.
Jan 1 09:00:19 kuro-box kernel: KERNELBASE=c0000000 r6=10117cc r7=10117da
Jan 1 09:00:19 kuro-box kernel: cmd_line=root=/dev/hda1
Jan 1 09:00:19 kuro-box kernel: --- cmd=root=/dev/hda1
Jan 1 09:00:19 kuro-box kernel: Memory BAT mapping: BAT2=64Mb, BAT3=0Mb, residual: 0Mb
Jan 1 09:00:19 kuro-box kernel: Linux version 2.4.32-kurobox (piro@kuro-box) (gcc バージョン 3.3.5
(Debian 1:3.3.5-13)) #2 2006年 1月 8日 日曜日 21:42:42 JST
正常debianの構築およびsarge化
玄箱うぉううぉうさんのhttp://kuro.dsk.jp/data/dist/debian_2005_08_21_dist.tgzをインストール。
うぉううぉうさんのdebianに、問題正常化パッチ投入
特に、setserialはremoveしないと、シリアルコンソールが使えません。
echo "con:2345:respawn:/sbin/getty 57600 ttyS0" >>/etc/inittab echo "ttyS0" >>/etc/securetty echo "all:all" >>/etc/hosts.allow find / -group 11 -exec chgrp mail "{}" \; find / -group 12 -exec chgrp news "{}" \; find / -group 16 -exec chgrp utmp "{}" \; find / -group 17 -exec chgrp shadow "{}" \; find / -group 99 -exec chgrp nogroup "{}" \; apt-get update apt-get remove -y --purge amiga-fdisk mac-fdisk ppp pppconfig pppoe pppoeconf quik setserial apt-get upgrade -y apt-get clean
HGの場合はこれも必要
そういえばHGだと、debian_2005_08_21_dist.tgz のloader.oの起動が問題ありでした。
/etc/rc3.d/S90kuro_load の insmod に -f を付加してください。
sarge化 /etc/apt/sources.listの変更
deb http://security.debian.org stable/updates main contrib deb ftp://ftp.dti.ad.jp/pub/Linux/debian stable main contrib deb ftp://ftp.dti.ad.jp/pub/Linux/debian-non-US stable/non-US main contrib deb-src ftp://ftp.dti.ad.jp/pub/Linux/debian stable main contrib deb-src ftp://ftp.dti.ad.jp/pub/Linux/debian-non-US stable/non-US main contrib
apt-get -u dist-update
いろいろ聞かれるが、全てデフォルトでOK