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很多限制给去掉。
|
|