Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851963
  • 博文数量: 90
  • 博客积分: 766
  • 博客等级: 军士长
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-18 08:42
个人简介

linux

文章分类

全部博文(90)

文章存档

2021年(2)

2020年(2)

2017年(1)

2015年(11)

2014年(1)

2013年(53)

2012年(16)

2011年(4)

分类: LINUX

2021-01-13 14:08:03

1.从vmlinuz提取出vmlinux
   
    vmlinuz是vmlinux通过gz压缩之后,添加了一段解压缩程序形成的。gzip文件有个标准的文件头,可以通过识别gzip这个头在文件当中的位置来找到vmlinux压缩后所在的位置,然后通过dd将数据导入到一个文件当中。

(1).查找1F 8B 08 00这是gzip的标志头

(2).dd bs=1 skip=x if=/xxx/vmlinuz of=vmlinux.gz
(3).确认文件:file vmlinux.gz
vmlinux.gz: gzip compressed data, from Unix, last modified: Fri Oct 16 22:17:48 2009, max compression
(4).解压缩文件生成vmlinux gunzip vmlinux.gz

2.mock的一些情况
(1). mock操作流程
          a.mock -r centos-7-x86_64 --init;             // centos-7-x86_64对应/etc/mock下面的cfg文件名
          b.mock -r centos-7-x86_64 --rebuild *.src.rpm
         c.mock -r centos-7-x86_64 clean             // 实际就是把前 两步生成的文件删除
(2).使用root账户进行mock时生成的文件默认放在/var/lib/mock/“/etc/mock目录下面cfg文件名前缀”   目录下面,包括一个干净的根环境和builddir目录,其中builddir/build目录包括BUILD  BUILDROOT  originals  RPMS  SOURCES  SPECS  SRPMS。
(3).--resultdir指定生成 的目标文件目录,包括log和RPMS等,--rootdir指定生成的新的root目录位置。
          如:mock -r centos-7-x86_64 --rebuild kernel-4.18.0-147.5.1.el8_1.5es.11.src.rpm  --resultdir=/root/centos-7-x86-64 --rootdir=/root/centos-7-x86-64/

3.进制转换
(1).printf %x 172
(2).printf %d 0xac

4.rpm spec语法记录
(1).%files 包名   指定该包需要哪些文件,在%install之后会将%files指定的文件放在rpm包中,  -f xxx.list,表示所需要的文件列表放在xxx.list文件当中。
(2).BUILD目录是源码编译的目录,而BUILDROOT存放的需要打包放在rpm的文件。
(3).rpmbuild在%install阶段之后会自动运行一些命令,可通过rpmbuild --showrc查看,带post后缀的就是在%install阶段之后运行的,其中find-debuginfo.sh就是在这个阶段运行的。
(4).一个spec文件可以可以生成多个rpm子包,通过%package指定包名,然后用%files指定该包需要那些文件。
(5).src.rpm解包:rpm2cpio xxxxx.rpm | cpio -idv
(6).debugedit 的-b参数必须和实际的一样,不然不能正确修改。

阅读(824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~