HS-DGL のファームウェア


LinkStation シリーズとして、 DLNA ガイドラインに準拠予定の HS-DGL シリーズが ラインアップされている。 LinkStation シリーズなのに型番が HD- で始まらず、HS- で始まりので一応 別シリーズである。

楽天で HS-DGL を探す

先日、HS-DGLシリーズ ファームウェア アップデータ Ver.1.46 が 公開された。8月に発売された新製品なのに、バージョンが 1.46 なのは、 HD-HGLAN と同じレベルのファームウェアなのであろう。
ヒョッとすると、ファームウェアは HS-DGL も HD-HGLAN もほとんど同じで、 DLNA 部分だけが違うだけなのではないだろうか?
HS-DGLシリーズ ファームウェア アップデータ Ver.1.46 と
HD-HGLANシリーズ ファームウェア アップデータ Ver.1.46β2 と
の違いを見てみる。

そのまえに、、

HS-DGL って、PowerPC なんだろうか?
MIPS だったりしたらいやだな。

ファームウェア アップデータの入手

まずは、HS-DGLシリーズ ファームウェア アップデータ Ver.1.46 を ダウンロードし、hsd146.exe を実行する。

ファームウェアの構成

HS-DGLシリーズ ファームウェア アップデータ Ver.1.46

-rwxrw-r--    1 yasunari root        86016 Jun 28 19:49 HS-DGL FWUpdate.exe*
-rwxrw-r--    1 yasunari root         5033 Sep 30 22:02 README.TXT*
-rwxrw-r--    1 yasunari root        38228 May 17 14:11 bootcode.bin*
-rwxrw-r--    1 yasunari root      2931720 Jul 23 16:41 firmimg.bin*
-rwxrw-r--    1 yasunari root     60451705 Oct  9 03:32 hsd146.exe*
-rwxrw-r--    1 yasunari root     57448051 Sep 29 17:39 image.dat*
-rwxrw-r--    1 yasunari root           33 Sep 29 17:34 linkstation_version.txt*

HD-HGLANシリーズ ファームウェア アップデータ Ver.1.46β2

-rwxrw-r--    1 yasunari root        86016 May  9 10:42 HD-HGLAN FWUpdate.exe*
-rwxrw-r--    1 yasunari root        15180 Sep 13 17:36 README.TXT*
-rwxrw-r--    1 yasunari root        38228 May 17 14:11 bootcode.bin*
-rwxrw-r--    1 yasunari root      2903237 Aug  3 09:33 firmimg.bin*
-rwxrw-r--    1 yasunari root     56678121 Sep 19 17:30 hglan146b2.exe*
-rwxrw-r--    1 yasunari root     53701879 Sep 13 17:31 image.dat*
-rwxrw-r--    1 yasunari root           33 Sep 13 16:30 linkstation_version.txt*

bootcode.bin

サイズは同じ。
[yasunari@giga firmware]$ cmp HGLAN/hglan146b2/bootcode.bin HS-DGL/hsd146/bootcode.bin
[yasunari@giga firmware]$
コードも全く同じ。ということは、PowerPC

firmimg.bin

サイズが違う。
カーネルとinitrd を取り出してみる

HS-DGL

[yasunari@giga hsd146]$ /home/linkstation/getfirm/getfirm firmimg.bin
info_ver 00000001
firmid 00000008
firmname HS-DGL(IEHARU)
subver FLASH 1.1
ver_major 0002
ver_minor 0002
build 0000
date 6907 1710 271c
size 002cbc08
chksum 6532832b
kernel_offset 0000006c(108)
kernel_size 000d0fd2(856018)
initrd_offset 000d103e(856126)
initrd_size 001fabca(2075594)
[yasunari@giga hsd146]$

HD-HGLAN

[yasunari@giga hglan146b2]$ /home/linkstation/getfirm/getfirm firmimg.bin
info_ver 00000001
firmid 00000004
firmname HD-HGLAN(IEMITSU)
subver FLASH 1.2
ver_major 0002
ver_minor 0006
build 0000
date 6908 0309 2003
size 002c4cc5
chksum c3ff6bc6
kernel_offset 0000006c(108)
kernel_size 000d0f6b(855915)
initrd_offset 000d0fd7(856023)
initrd_size 001f3cee(2047214)
[yasunari@giga hglan146b2]$

カーネル

カーネルは同じだと思っていたが、サイズが違う。

[yasunari@giga firmware]$ cmp HGLAN/hglan146b2/vmlinux.gz HS-DGL/hsd146/vmlinux.gz
HGLAN/hglan146b2/vmlinux.gz HS-DGL/hsd146/vmlinux.gz 異なります: バイト 5、行 1
当然内容も異なる。

HS-DGL

[yasunari@giga hsd146]$ gunzip vmlinux.gz
[yasunari@giga hsd146]$ strings vmlinux |grep "Linux version"
Linux version 2.4.20_mvl31-ppc_linkstation (root@sugai-linux) (gcc version 2.95.3 20010315 (release/MontaVista)) #14 Sat, 23 Jul 2005 16:35:45 +0900
[yasunari@giga hsd146]$

HD-HGLAN

[yasunari@giga hglan146b2]$ gunzip vmlinux.gz
[yasunari@giga hglan146b2]$ strings vmlinux |grep "Linux version"
Linux version 2.4.20_mvl31-ppc_linkstation (root@yabutar) (gcc version 2.95.3 20010315 (release/MontaVista)) #2 2005
どちらも 2.4.20_mvl31-ppc_linkstation
HS-DGL の担当は菅井さん、HD-HGLAN の担当は薮田さん???

initrd

まずは initrd を展開する。 loop デバイスは一つしか使えないので、 それぞれをマウントし、コピーする。

HS-DGL

[root@giga hsd146]# gunzip ramdisk.image.gz
[root@giga hsd146]# mkdir /tmp/hsdgl
[root@giga hsd146]# mount -o loop ramdisk.image /tmp/hsdgl
[root@giga hsdgl]# cd /tmp
[root@giga /tmp]# mkdir hsdgl_root
[root@giga /tmp]# (cd hsdgl; tar cf - .)|(cd hsdgl_root; tar xvf -)
	:
[root@giga /tmp]# umount /tmp/hsdgl

HD-HGLAN

[root@giga hglan146b2]# gunzip ramdisk.image.gz
[root@giga hglan146b2]# mkdir /tmp/hglan
[root@giga hglan146b2]# mount -o loop ramdisk.image /tmp/hglan/
[root@giga hglan146b2]# cd /tmp
[root@giga /tmp]# mkdir hglan_root
[root@giga /tmp]# (cd hglan; tar cf - .)|(cd hglan_root; tar xvf -)
	:
[root@giga /tmp]# umount /tmp/hglan

違いを見てみる

[root@giga /tmp]# diff -arc hsdgl_root hglan_root > /tmp/hsdgl-hglan.diff
diff: hsdgl_root/etc/mounts: そのようなファイルやディレクトリはありません
diff: hglan_root/etc/mounts: そのようなファイルやディレクトリはありません
diff: hsdgl_root/etc/rc.d/rc6.d/K20inetd: そのようなファイルやディレクトリはありません
diff: hglan_root/etc/rc.d/rc6.d/K20inetd: そのようなファイルやディレクトリはありません
diff: hsdgl_root/etc/rc.d/rc6.d/K20logoutd: そのようなファイルやディレクトリはありません
diff: hglan_root/etc/rc.d/rc6.d/K20logoutd: そのようなファイルやディレクトリはありません
diff: hsdgl_root/etc/rc.d/rc6.d/S31umountnfs.sh: そのようなファイルやディレクトリはありません
diff: hglan_root/etc/rc.d/rc6.d/S31umountnfs.sh: そのようなファイルやディレクトリはありません
diff: hsdgl_root/etc/rc.d/rc6.d/S40umountfs: そのようなファイルやディレクトリはありません
diff: hglan_root/etc/rc.d/rc6.d/S40umountfs: そのようなファイルやディレクトリはありません
なんでないと言われるのか見てみたら、
[root@giga /tmp]# ls -l */etc/mounts
lrwxrwxrwx    1 root     root           14 Oct  9 04:33 hglan_root/etc/mounts -> ../proc/mounts
[root@giga /tmp]# ls -l */etc/rc.d/rc6.d/K20inetd
lrwxrwxrwx    1 root     root           17 Oct  9 04:33 hglan_root/etc/rc.d/rc6.d/K20inetd -> /etc/init.d/inetd
lrwxrwxrwx    1 root     root           17 Oct  9 04:31 hsdgl_root/etc/rc.d/rc6.d/K20inetd -> /etc/init.d/inetd
とシンボリックリンクだった。

/tmp/hsdgl-hglan.diff を見てみたが、 "HS-DGL" か "HD-HGLAN" かの違いだけで、 有意な差は見つけられなかった。
こんなの、 firminfo(/dev/mtd0) の firmname を見て表示を切り換れば、 共通にできるのに、、、

というわけで、カーネルは違うものの、boot コード、EM モードまでは同じ。
あとは、image.dat の違いか、、、




firminfo
ハックの記録
LinkStation/玄箱 をハックしよう

HS-DGL のファームウェア(2)image.dat

Copyright (C) 2005 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市