通过moblin MIC2制作的usb启动,有两种方式,一种是liveOS的,直接boot,一种是象传统安装Linux OS的方式在设备中安装。我想将moblin2安装在MID(menlow)上,需要重新rebuild内核。kernel编译可以通过moblin-chroot的方式展开开发环境,也可以通过KVM的环境。

  1. 从moblin的repo网站中获取kernel的source code,例如wget http://repo.moblin.org/moblin/development/core/source/kernel-2.6.29.5-8.1.moblin2.src.rpm
  2. 展开rpm包:rpm –ivh kernel-2.6.29.5-8.1.moblin2.src.rpm,在~/rpmbuild/下面展开,进入SPECS/目录,下面有kernel.spec文件。在SOURCES/目录下面有原代码和补丁。通过rpmbuild –bp kernel.spec,可以解压源代码,并打上补丁。
  3. 进入~/rpmbuild/BUILD/目录下面,就是我们kernel的source code。在这里根据传统的kernel编译方式进行即可。

  根据kernel的编译,我们成功地在/lib/modules下面安装的kernel modules,以及在/boot下面提供vmlinuz和System.map。但是在通过MIC2将他们制作成usbimg的时候,出现问题:

问题一:Error creating Live CD : Unable to copy valid kernels or initrds, please check the repo

尝试一:我曾认为是没有生成initrd导致的,因此使用mkinitrd的命令来制作initrd,但是虽然没有报错,但是也没有实际生成,这个非常奇怪。但是根据以前的实验说明,initrd不是必须的,所以放弃。

尝试二:在/boot下面有两个kernel,旧的(netbook)和新的(menlow),删除旧的版本,并同时删除/lib/moudules相关的文件夹。不在报错,问题解决。导致这个问题的原因是:存在多个kernel。

问题二:我们成功制作了usbimg,使用它来启动MID。对于直接Boot的方式,没有问题,可以直接启动。但是对于安装方式,出错。

在安装成功,启动时出现:
       Error 15 File note found
然后,"Press any key to continue....",进入grub,发现只有一个选项Moblin(2.6.29.5-8.1.moblin2-netbook,及旧的kernel),需要edit到新的kernel才能进去。这说明我们在编译kernel或者制作usbimg的过程中可能出现遗漏,没有引导到新的kernel中。

尝试一:以为某个配置问题,因此我大范围地grep netbook,没有发现有效线索,放弃。

尝试二:以为是制作问题,因此我跟踪了MIC2中py脚本,只是证明在live OS中得到正确的version。没有发现有效的线索,放弃。

尝试三:用rpm –e  kernel-netbook的方式彻底删除旧的版本,重新制作usbimg,这时在安装的过程中出现找不到kernel package的提示。这是个重要的信息,表面出现这种情况,是因为我们没有将新的kernel制作成为rpm,而系统安装是根据package来安装的,需要kernel的rpm。有效的解决方式是:将新的kernel制作成功rpm。

   根据这个信息,我们在网上查阅的如何打rpm的资料,我的初衷是,我有kernel modules,有kernel的vmlinz这些目标 文件,如果将他们打成rpm包。但是似乎所有的资料显示都是通过spec的方式,讲过make,build等过程来进行,也就是说适合于源码的方式,不适合于直接将二进制文件或者其他我们的目标文件直接进行封装打包。我们从moblin网站上下载的source是带有spec的,应该可以直接利用它来生成rpm。

   阅读spec,检索ivi或者netbook,我们据此添加menlow的脚本。使用rpmbuild –ba kernel.spec,经过了漫长时间的等待,在~/rpmbuild/RPM/i386里面有相关的rpm生成。我们同时生成了netbook、ivi、menlow的版本。删除系统原有的kernel,安装新的menlow rpm,我们重新制作usbimg,一切正常。

我们思考下面的问题:

1、如果是我们的一些应用软件,是否也要制作成相关的rpm包,才能通过安装方式?

  应该不需要。在开始的时候,我们没有打包,也没有删除越来的旧包,可以通过edit grub的方式进入系统,这也就是说明相关的文件能够放入文件系统当中,是可以被使用的。只是kernel package是系统重要的rpm,如果缺乏在启动的时候,连grub的无法开启。但是用rpm来管理我们的软件,不但是版本的问题,对于软件升级和软件下载都是非常重要的。

2、如果我们得到了一个官方的linux kernel的新版本,这个只有tar.bz,不是moblin的rpm方式,没有spec,我们如何将它进行编译和打包?

  无论如何,我们有必要学习rpm的打包方式。

相关链接:Moblin: kernel编译和rpm打包(二):RPM打包

Moblin: kernel编译和rpm打包(一):更换kernel相关推荐

  1. g++ linux 编译开栈_使用 linux kernel +busybox 定制linux系统

    写在开头: 本来是想使用linux kernel +busybox 制作一个教程的,后来快要结束的时候,死活找不到硬盘,我了解很多文章都有类似的,但是没有谈到硬盘找不到问题,最后历经艰辛,终于把问题解 ...

  2. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  3. Android构建boot.img(二):kernel的拷贝与打包

    上文已经对boot.img其中组成部分之一ramdisk.img做了分析,boot.img另外一个重要的组成部分就是kernel了, 这里所说的kernel,可以只理解为位于out/target/pr ...

  4. 用 RPM 打包软件,第 2 部分

    在不具备 root 权限的情况下构建.给软件打补丁和分发 RPM RPM 是一种广泛用于发布 Linux 软件的工具: 用户可以轻松地安装用 RPM 打包的产品.在本文(该系列文章的第 2 篇)中,D ...

  5. [ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Buildroot系统固件

    ✏️ROC-RK3568-PC入门篇连载进程: ✅ [ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统 ✅ [ROC-RK3568-PC] 手把手教你制作Ubu ...

  6. 09 编译2022年最新的Linux kernel、U-Boot和BusyBox rootfs源码,并用QEMU模拟器运行

    编译2022年最新的Linux kernel.U-Boot和BusyBox rootfs源码,并用QEMU模拟器运行 作者 将狼才鲸 创建日期 2022-11-26 Gitee源码和工程地址:才鲸嵌入 ...

  7. rpm打包的流程包括以下哪些_Linux下RPM打包流程分享

    本文主要和大家分享Linux下RPM打包流程,希望能帮助到大家. 开始前的准备 安装rpmbuild软件包yum -y install rpm-build 生成相关目录 要生成rpm相关目录,可以手动 ...

  8. RPM打包原理spec

    概述 RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软 ...

  9. RPM打包探索(rpm-max翻译整理)

    1. %global 和 %define 的区别? 这是内置宏,%define用来定义宏,%global用来定义一个全局可见的宏(在整个spec文件中可见) 2. %{!?macro-name} 和 ...

最新文章

  1. 文件上传与下载【目前仅仅实现了上传功能】
  2. 滴滴自研分布式 NoSQL 数据库 Fusion 的演进之路
  3. apache karaf_Apache Karaf遇到Apache HBase
  4. Linux怎么对文件内容trim,Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)...
  5. 罗永浩直播间再回应直播售假:全方位整改 成立质控实验室
  6. java-设计模式(行为型)-【命令模式】
  7. php vm_facebook hiphop php vm 兑现概述(二)
  8. 64位计算机可以安装xp,64位xp系统如何安装【图解】
  9. CPL7用户指南(中文版)_第二章 CPL7 用户指南
  10. Google Scholar 谷歌学术文献检索技巧总结
  11. mysql mdf修复_LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
  12. 大型团队合作的八条法则
  13. 腾讯产品总监曹菲:如何克服职业焦虑
  14. (附源码)springboot高校社团管理系统的开发毕业设计231128
  15. Could not set parameters for mapping解决方法
  16. SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚
  17. Huggingface Transformers库学习笔记(二):使用Transformers(上)(Using Transformers Part 1)
  18. 会计基础(一):记账基础 - 复式记账法
  19. python安装xgboost的方法
  20. 网站建设用国内域名好还是国外域名好?

热门文章

  1. 中国锂离子电池市场现状研究分析与发展前景预测报告
  2. 2019莆田学院c语言试卷,莆田学院《C语言程序设计》模拟试卷 - 03-
  3. AURIX TC39X系统架构
  4. 2020年将掀起刷脸支付创业加盟新浪潮
  5. vue cli4 vue2 多页面打包配置与坑点
  6. 2022年3月A-level数学M1真题解析(1)
  7. [luogu p1259] 黑白棋子的移动
  8. Hive的伴奏_OURDEN INSTRUMENTALS MIXTAPE Vol.108 “Sober” 伴奏合辑
  9. 题解 Sticks 小木棍
  10. 戴尔r730服务器CPU支持,r730服务器不能开启虚拟化(dell开启cpu虚拟化)