1. 创建本地服务器的repo
将/obs/imports/MeeGo_1.2.90.0.0.20110824.2/core/armv7hl目录下的内容直接COPY到/obs/srv/repos的子目录下,就可以在http://192.168.129.140:82下面访问这些内容。
2. 参考http://wiki.meego.com/ARM/OMAP4_Panda制作镜像
要点1:需要根据需要修改Panda.ks.in文件
要点2:在执行“git checkout --track -b L24.11ti-2.6.35-omap4-L24.11
”时,要严格按照这个信息,不要擅自改变版本号。
3. 安装MIC2
参考http://wiki.meego.com/Image_Creation安装MIC2。
对于Ubuntu11.04,
step1:
sudo apt-get install yum rpm kpartxparted syslinux isomd5sum kvm zlib1g-dev squashfs-tools python2.6-devqemu-user-static python-urlgrabber
注意:Ubuntu11.04及以上的版本,没有qemu-arm-static,只有qemu-user-static。
step2:在/etc/apt/sources.list文件添加源:
debhttp://repo.meego.com/MeeGo/tools/repos/ubuntu/10.10/ /
(最新只有ubuntu10.10,虽然工作机器是Ubuntu11.04,也只好用这个)
step3:sudo apt-get update
Youshould see the following error: W: GPG error: http://repo.meego.comRelease: The following signatures couldn't be verified because the public keyis not available: NO_PUBKEY 0BC7BEC479FC1F8A
To add the repository public key use thefollowing command:
gpg --keyserver subkeys.pgp.net --recv0BC7BEC479FC1F8A
gpg--export --armor 0BC7BEC479FC1F8A | sudo apt-key add -
step4:sudo apt-get install mic2
4. 执行./Panda.sh
由于本地的repos中只有armv7hl的包,没有ia32的包,因此在创建bootstrap的时候会失败:
Installing mic2-0.24.14-1.1.noarch.rpm...
WARNING: Could not find package 'libgcc'suitable arch for arch 'i686' for bootstrap installation.
...
bind_unmount: /var/tmp ->/var/cache/meego-bootstrap//var/tmp
OSError: [Errno 2] No such file ordirectory
因此,需要单独创建bootstrap:
sudomic-create-bootstrap -n trunk -rhttp://repo.meego.com/MeeGo/builds/trunk/latest/repos/oss/ia32/packages/ -o /var/cache/meego-bootstrap/
在从repo.meego.com下载包的过程中,碰到超时问题。尝试将以前VMWare中的/var/cache/meego-bootstrap拷贝过来,然后在mic-create-image后面指定”--bootstrap=/var/cache/meego-bootstrp”,执行Panda.sh时报错:
Error:Please specify a workable bootstrap env
注意到mic-create-bootstrap有个”-k”选项,于是重新执行mic-create-bootstrp,并加上”-k”选项:
sudomic-create-bootstrap -n trunk -k /home/zhanghui/MeeGo/panda.source/rpms -rhttp://repo.meego.com/MeeGo/builds/trunk/latest/repos/oss/ia32/packages/ -o/var/cache/meego-bootstrap
(查看/home/zhanghui/MeeGo/panda.source/rpms目录,果然发现了trunk目录!)
用mic-create-bootstrap制作meego-bootstrap后,执行Panda.sh就不会报“Error:Please specify a workable bootstrap env”了。但碰到新问题:
OSError: [Errno 2] 没有那个文件或目录: '/var/tmp/imgcreate-JtD_cH/install_root/tmp/ks-script-WcCRqN'
5.Imgcreate-xxx/install_root问题的解决
@ivi都不行,只有@NetBook可以;
首先怀疑是repomd.xml有问题,于是重新生成repomd.xml:
## Copy RPMpackages to a folder, oss/armv7hl,oss/noarch
$ mkdir -p oss/repodata
$ cp -f patterns.xml group.xml oss/repodata
$ cd oss
$ createrepo -g repodata/group.xml ./
$ modifyreporepodata/patterns.xml ./repodata
自己生成的repodata,仍然一样有OSError;尝试几个办法:
(1)140上OSS包版本和官方NON-OSS包版本不匹配。已确认不是这个问题。
(2)ks文件有问题;
(3)140上的包有问题,可尝试直接从官方网站下载全部的包:问题依旧,看来不是这个问题。
最终定位应该是ks文件有问题。
在测试过程中,碰到 Unicode的问题:
Traceback (most recent call last):
File"/usr/bin/mic-image-creator", line 1045, in <module>
ret= main()
File"/usr/bin/mic-image-creator", line 1019, in main
raiseFatalError("failed to create image : %s" % e)
UnicodeEncodeError: 'ascii' codec can'tencode characters in position 36-38: ordinal not in range(128)
将”@MeeGo Core”改成”@Core”就没这个问题。原来是因为”MeeGo Core”在group.xml/patterns.xml中不存在。
而releases/MeeGo1.2.0的patterns.xml/group.xml就没有这个问题,原来MeeGo1.2.0和MeeGo1.2.90中的patterns.xml/group.xml中的group名字命名不同,比如对于MeeGo Core,在MeeGo1.2.0中是“MeeGo Core”,而在MeeGo1.2.90中是”Core”。
将repo.meego.com上releases/MeeGo1.2.0中的patterns.xml/group.xml拷贝到140上,重新生成repomd.xml等。然后重新执行mic-image-creator,找不到sysvinit包。对比MeeGo1.2.0和MeeGo1.2.90的repository发现,果然不同。
下面就剩两个思路:(1)尝试下载latest的Panda.ks.in和Panda.sh测试;(2)换用MeeGo1.2.0的repository。
用latest的Panda.ks.in,制作rootfs成功!
比较诡异,@Netbook就可以制作成功,@ivi就不行。