分享

MeeGo映像测试的方便法门

 看见就非常 2012-08-28
MeeGo 1.1有几个映像文件,只是要按照官方提供的方法测试起来比较令人郁闷。弄个U盘来做测试,还得rawrite之类的,很不方便。想了想,于是对initrd0.img做了一些小改动,然后把映像内容直接解压到文件系统上,再对启动参数做点小改动,就顺利启动了。做这个改动,主要是为了避免擦除优盘的内容:动不动就消除磁盘内容这个习惯不是很好,毕竟资源共享是一种经济方法。

操作的方法大致是这个样子的:
一、init的修改(直接给补丁好了,后续还得再完善)
--- init.orig	2011-01-30 20:51:49.000000000 +0800
+++ init	2011-01-30 20:51:36.000000000 +0800
@@ -38,6 +38,7 @@
root_rw=0
root=""
rootflags=""
+rootfspath=""
rootfstype=""
quiet=0
shell=0
@@ -140,6 +141,9 @@
rootflags=*)
rootflags=${o#rootflags=}
;;
+ rootfspath=*)
+ rootfspath=${o#rootfspath=}
+ ;;
rootfstype=*)
rootfstype=${o#rootfstype=}
;;
@@ -152,6 +156,7 @@
echo "init=$init"
echo "root=$root"
echo "rootflags=$rootflags"
+ echo "rootfspath=$rootfspath"
echo "rootfstype=$rootfstype"
echo "root_ro=$root_ro"
echo "root_rw=$root_rw"
@@ -406,11 +411,11 @@
# pathspec specified, extract
pathspec=$( echo $overlay | sed -e 's/^.*://' )
elif [ "x${overlay}" != "xoff" ]; then
- pathspec="/LiveOS/overlay-$l-$u"
+ pathspec="/${rootfspath}/overlay-$l-$u"
fi

if [ -z "$pathspec" -o "$pathspec" == "auto" ]; then
- pathspec="/LiveOS/overlay-$l-$u"
+ pathspec="/${rootfspath}/overlay-$l-$u"
fi
devspec=$( echo $overlay | sed -e 's/:.*$//' )

@@ -504,8 +509,8 @@
}

# we might have a genMinInstDelta delta file for anaconda to take advantage of
-if [ -e /sysroot/LiveOS/osmin.img ]; then
- OSMINSQFS=/sysroot/LiveOS/osmin.img
+if [ -e /sysroot/${rootfspath}/osmin.img ]; then
+ OSMINSQFS=/sysroot/${rootfspath}/osmin.img
fi

if [ -n "$OSMINSQFS" ]; then
@@ -522,8 +527,8 @@

# we might have an uncompressed embedded ext3 to use as rootfs (uncompressed live)
#
-if [ -e /sysroot/LiveOS/ext3fs.img ]; then
- EXT3FS="/sysroot/LiveOS/ext3fs.img"
+if [ -e /sysroot/${rootfspath}/ext3fs.img ]; then
+ EXT3FS="/sysroot/${rootfspath}/ext3fs.img"
fi

if [ -n "$EXT3FS" ] ; then
@@ -544,8 +549,8 @@

# we might have an embedded ext3 on squashfs to use as rootfs (compressed live)
#
-if [ -e /sysroot/LiveOS/squashfs.img ]; then
- SQUASHED="/sysroot/LiveOS/squashfs.img"
+if [ -e /sysroot/${rootfspath}/squashfs.img ]; then
+ SQUASHED="/sysroot/${rootfspath}/squashfs.img"
fi

if [ -e "$SQUASHED" ] ; then



二、映像文件内容的复制
把映像用7zip解压或者mount loop后把LiveOS拷贝到优盘中。不同的MeeGo版本重命名,比如车载系统命名为IVI,上网本系统命名为NB,手持设备系统命名为HS等等。拷贝完成后优盘目录树大致是这个样子的:
WINDOWS
│ syslinux.cfg
├─IVI
│ osmin.img
│ squashfs.img
│
├─NBK
│ osmin.img
│ squashfs.img
│ 
├─boot
│ initrd.ivi
│ initrd.nbk
│ splash.jpg
│ vesamenu.c32
│ vmlinuz.ivi
│ vmlinuz.nbk
│ 
└─CDlinux
│ bzImage
│ initrd
│ 
├─boot
│ memdisk.gz
│ memtest.bin.gz
│ menu.lst
│ splash.xpm.gz
│ stage2_eltorito
│ 
├─doc
│ AUTHORS
│ CHANGELOG
│ COPYING
│ README
│ RELNOTES
│ 
├─extra
│ README
│ base-cdl.md
│ basex-cdl.md
│ 
├─lang
│ │ README
│ │ 
│ └─zh
│ zh-cdl.md
│ 
├─local
│ README
│ example-cdl.tgz
│ 
└─settings
│ README
│ hardware-e6d624dff569ffc69ee08d093ded3f89-cdl.tgz
│ hardware-6d0178deed517a7ffaec1ded607bc234-cdl.tgz
│ 
├─0
├─1
│ user-cdl.md
│ 
└─2
user-cdl.md


三、syslinux.cfg的修改
用了fat32,主要是方便跨平台操作,毕竟Windows还是好找到的。
default /boot/vesamenu.c32
timeout 50

menu background /boot/splash.jpg
menu title Welcome to MeeGo!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu color cmdline 0 #ffffffff #00000000

label ivi
  menu label MeeGo IVI in VFAT
  kernel /boot/vmlinuz.ivi
  append ro initrd=/boot/initrd.ivi root=CDLABEL=WINDOWS rootfstype=vfat rootfspath=IVI liveimg vga=current quiet
  menu default

label netbook
  menu label MeeGo Netbook in VFAT
  kernel /boot/vmlinuz.nbk
  append ro initrd=/boot/initrd.nbk root=CDLABEL=WINDOWS rootfstype=vfat rootfspath=NBK liveimg vga=current quiet

label cdl
  menu label CDLinux (Chinese)
  kernel /CDlinux/bzImage
  append ro initrd=/CDlinux/initrd CDL_LANG=zh_CN.UTF-8 CDL_DEV=LABEL="WINDOWS" CDL_DIR="CDlinux" CDL_GUI=yes quiet

label local
  menu label Boot from local drive
  localboot 0xffff

目前还有一个问题,就是进入MeeGo系统后无法再mount映像所在盘,这个回头有空再hack一把。所为了方便做修复,还扔进去一个CDlinux。其实对MeeGo的这些参考了CDlinux。:D

后续还得搞搞handset版本,以及各个版本中用上splash和mplayer。目前gstreamer不好控制。用mplayer的slave模式相对好处理一些。
 
嗯,得先把SDK搞好。官方的镜像内容还挺多的。另外就是把MeeGo很多限制给去掉。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多