为S3C6410,S5PC110等ARM平台快速构建一个Meego环境

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介:

Meego项目亦然停止,但是好的嵌入式Linux发行版舍Meego和Ubuntu以外,实难寻觅,所以我们很可能还存在Meego的移植需求, 过程非常简单。依照http://wiki.meego.com/Image_Creation安装MIC2,准备如下的kickstarter文件 (graphics使用软解码)

# -*-mic2-options-*- -f raw --save-kernel --arch=armv7hl -*-mic2-options-*-

# 
# Do not Edit! Generated by:
# kickstarter.py
# 

lang en_US.UTF-8
keyboard us
timezone --utc America/Los_Angeles
part / --size=1750  --ondisk mmcblk0p --fstype=ext3

# This is not used currently. It is here because the /boot partition
# needs to be the partition number 3 for the u-boot usage.
part swap --size=8 --ondisk mmcblk0p --fstype=swap

# This partition is made so that u-boot can find the kernel
part /boot --size=32 --ondisk mmcblk0p --fstype=vfat

rootpw meego 
xconfig --startxonboot
# desktop --autologinuser=meego  --defaultdesktop=DUI --session="/usr/bin/mcompositor"
#
# mcompositor depends on EGL, so we move to twm windowmanager for the moment for primaII
desktop --autologinuser=meego  --defaultdesktop=DUI --session="/usr/bin/twm"
user --name meego  --groups audio,video --password meego 

repo --name=1.2.0.90-oss --baseurl=http://repo.meego.com/MeeGo/builds/1.2.0.90/@BUILD_ID@/repos/oss/armv7hl/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego
repo --name=1.2.0.90-non-oss --baseurl=http://repo.meego.com/MeeGo/builds/1.2.0.90/@BUILD_ID@/repos/non-oss/armv7hl/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego

%packages

@MeeGo Compliance
@MeeGo Core
@X for Handsets
@MeeGo Handset Desktop
@MeeGo Handset Applications
@MeeGo Base Development
@Minimal MeeGo X Window System
@Chinese Support

# for bringup, we are now using fbdev and software mesa
mesa-dri-swrast-driver
xorg-x11-drv-fbdev

xorg-x11-utils-xev
%end

%post
# save a little bit of space at least...
rm -f /boot/initrd*

rm -f /var/lib/rpm/__db*
rpm --rebuilddb

# Remove cursor from showing during startup BMC#14991
echo "xopts=-nocursor" >> /etc/sysconfig/uxlaunch

# open serial line console for embedded system
# our board uses ttyS1
#
# echo "s0:235:respawn:/sbin/agetty -L 115200 ttyO2 vt100" >> /etc/inittab
echo "s0:235:respawn:/sbin/agetty -L 115200 ttyS1 vt100" >> /etc/inittab

# Set up proper target for libmeegotouch
Config_Src=`gconftool-2 --get-default-source`
gconftool-2 --direct --config-source $Config_Src \
  -s -t string /meegotouch/target/name N900

# Normal bootchart is only 30 long so we use this to get longer bootchart during startup when needed.
cat > /sbin/bootchartd-long << EOF
#!/bin/sh
exec /sbin/bootchartd -n 4000
EOF
chmod +x /sbin/bootchartd-long

# Use eMMC swap partition as MeeGo swap as well.
# Because of the 2nd partition is swap for the partition numbering
# we can just change the current fstab entry to match the eMMC partition.
sed -i 's/mmcblk0p2/mmcblk1p3/g' /etc/fstab

# Without this line the rpm don't get the architecture right.
echo -n 'armv7hl-meego-linux' > /etc/rpm/platform
 
# Also libzypp has problems in autodetecting the architecture so we force tha as well.
# https://bugs.meego.com/show_bug.cgi?id=11484
echo 'arch = armv7hl' >> /etc/zypp/zypp.conf


%end

%post --nochroot
if [ -n "$IMG_NAME" ]; then
    echo "BUILD: $IMG_NAME" >> $INSTALL_ROOT/etc/meego-release
fi


%end

运行如下脚本可以得到Meego的image,之后解压缩,以loop方式mount并拷贝到SD卡的文件系统分区即可。

#!/bin/bash
if [ `whoami` != root ]; then
    echo "This script must be run as root, e.g.:"
    echo "sudo $0"
    exit -1
fi

# create meego image from kickstart. this will contain everything but the kernel
mic-image-creator  --cache=../mycachedir --format=loop --arch=armv7hl --pkgmgr=yum --config=handset-armv7hl-prima2.ks --release=1.2.0.90.12.20110809.2

这一过程也可以自动化进行:

CURDIR=`pwd`
OUTDIR=${CURDIR}/1.2.0.90.12.20110809.2/images/meego-handset-armv7hl-xxx/
cd ${OUTDIR}
bunzip2 meego-handset-armv7hl-xxx-1.2.0.90.12.20110809.2.img.bz2
mkdir img
mount -o loop meego-handset-armv7hl-prima2-1.2.0.90.12.20110809.2.img img
if [ -d $1 ]; then
	echo "copy meego rootfs to $1"
	cp -fa img/* $1
	umount img
	rm -fr img
fi

启动Meego桌面的脚本如下:

 

/usr/bin/meegotouchhome -fullscreen -show-cursor -software &







本文转自 21cnbao 51CTO博客,原文链接:http://blog.51cto.com/21cnbao/898840,如需转载请自行联系原作者




相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
6月前
|
数据采集 监控 安全
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
267 1
|
6月前
|
监控 网络协议 安全
验证嵌入式ARM32环境中4G模块的有效方法
验证嵌入式ARM32环境中4G模块的有效方法
149 0
|
Docker 容器
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
1333 1
|
Ubuntu Linux C++
Ubuntu20.4配置arm交叉编译环境
我是在虚拟机中配置的,如果你的嵌入式设备足够完成自己的编译,可以不考虑虚拟机的。
839 0
|
3月前
|
存储 网络协议 安全
【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问
【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问
|
6月前
|
存储 人工智能 达摩院
FunASR 语音大模型在 Arm Neoverse 平台上的优化实践
Arm 架构的服务器通常具备低功耗的特性,能带来更优异的能效比。相比于传统的 x86 架构服务器,Arm 服务器在相同功耗下能够提供更高的性能。这对于大模型推理任务来说尤为重要,因为大模型通常需要大量的计算资源,而能效比高的 Arm 架构服务器可以提供更好的性能和效率。
|
6月前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
455 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
6月前
|
缓存 Linux
ARM平台内存和cache对xenomai实时性的影响
ARM平台内存和cache对xenomai实时性的影响
141 0
ARM平台内存和cache对xenomai实时性的影响
|
Java DataX Docker
arm 64 环境利用 docker 编译 datax 工具
arm 64 环境利用 docker 编译 datax 工具
263 0
|
6月前
|
存储 Ubuntu 网络协议
从Ubuntu-base构建ubuntu rootfs系统(以x86_64和arm为例)
本文介绍了基于Ubuntu-base构建自定义Linux系统的过程,适合嵌入式设备。Ubuntu-base是最小文件系统,包含软件包管理器,可以从Ubuntu源轻松安装软件。文章详细阐述了构建步骤,包括准备宿主系统(确保使用与目标系统相同架构的Ubuntu系统)、创建和挂载分区、配置Ubuntu源、设置DNS、添加用户配置、进入chroot环境以及安装软件(如内核、X-window系统等)。对于arm架构,还提供了通过qemu在X86_64系统上构建arm rootfs的方法。整个过程强调了定制和灵活性,适合对Linux系统有深入了解的开发者。
1546 0