Chinaunix首页 | 论坛 | 博客
  • 博客访问: 433803
  • 博文数量: 53
  • 博客积分: 2746
  • 博客等级: 少校
  • 技术积分: 829
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-14 10:41
文章分类

全部博文(53)

文章存档

2016年(2)

2013年(1)

2012年(7)

2011年(10)

2010年(5)

2009年(20)

2008年(8)

我的朋友

分类: LINUX

2012-01-04 09:38:42

   前段时间在 linux 2.6.15、linux 2.6.16 和 linux 2.6.25上加过 squashfs+lzma。现在又要在 linux 2.6.35.4 上加,由于此版本的 kernel 里已经有 squashfs,只要加上 lzma 即可。
大概步骤:
   1. 下载 squashfstools、lzma 源码及其相关补丁;
   2. 给 kernel 打补丁、配置及编译;
   3. 给 squashfstools 打补丁及编译带lzma的 mksquashfs。
   4. 测试
 
一、下载sqauchfs lzma源码:
   1. squashfs4.0.tar.gz:
      因为 kernel 里 squashfs 是 4.0 的版本,所以也要下载 4.0 的squashfs工具,地址如下:
     
   2. 下载 kernel lzma 补丁
      
      我怕以后这个地址有变找不到这个补丁,在附件中留了一份。
   3. 下载 squashfs4.0 lzma 补丁:
     1)、
     2)、
   4. 根据squashfs4.0 lzma 补丁内容下载 lzma465 库:
     
   下载完后有以下文件:
      lzma465.tar.bz2
      squashfs4.0.tar.gz
      100-portability.patch
      110-lzma.patch
      linux-2.6.35.4-squashfs-lzma.patch
    这些文件都在 /home/longjindong/squashfs4.0 中。
 
二、kernel 打补丁、配置及编译:
    1. 打补丁 
  1. cd linux-2.6.35.4
  2. patch -p1 < /home/longjindong/squashfs4.0/linux-2.6.35.4-squashfs-lzma.patch
    2. 配置kernel
      make menuconfig --> File systems ---> [*] Miscellaneous filesystems --->
       <*>   SquashFS 4.0 - Squashed file system support
          [*]     Include support for LZMA compressed file systems
 
      当然了,cmdline 的 rootfstype 也要相应的设为 squashfs。
    3. 配设完后输入 make, 就可以得 kernel image.
 
三、squashfstools 打补丁及编译:
     1. 解压  
  1. cd /home/longjindong/sqaushfs4.0/
  2. tar xvf lzma465.tar.bz2
  3. tar xvf squashfs4.0.tar.gz
     2. 打补丁
  1. cd /home/longjindong/squashfs4.0/squashfs4.0
  2. patch -p1 < /home/longjindong/squashfs4.0/100-portability.patch
    patch -p1 < /home/longjindong/squashfs4.0/110-lzma.patch
     3. 编译
  1. cd squashfs-tools
  2. make
   这样以后mksquashfs 就在 /home/longjindong/squashfs4.0/squashfs4.0/squashfs-tools目录里。
   ./mksquashfs --help可以看到支持 lzma了
  1. ./mksquashfs
  2. SYNTAX:./mksquashfs source1 source2 ... dest [options] [-e list of excludedirs/files]
  3.   Filesystem build options:
  4.  -comp select compression
  5.         Compressors available:
  6.             gzip (default)
  7.             lzma
 
四、测  试:
   1. 做 image:
  1. ./mksquashfs -comp lzma rootfs rootfs-lzma.bin
    2. 烧到板上,能正常启动,而且这个文件系统速度很快。
 
Patch 附件:
 
      squashfs4.0-lzma-patch.rar                
阅读(6877) | 评论(7) | 转发(3) |
给主人留下些什么吧!~~

linuxmemo2013-03-18 15:44:46

确实补丁没考虑到INIT宏的问题,导致kernel panic了。去掉INIT就好了

hk23056212013-03-15 21:31:18

linuxmemo:你移到2.6.32的部分都有哪些目录和文件?

1. fs/squashfs
2. lib
3. include
大概就这三个目录吧.

你可以将 2.6.35.4的补丁打到2.6.35.4的内核上,看到相关的有哪些文件.那些文件基本都要sync过去.
还有就是要注意我提到的第3条.要不然,启动过后,lzma算法的函数就被释放了.

回复 | 举报

linuxmemo2013-03-15 11:13:02

hk2305621:今天我把lzma弄到linux 2.6.32的内核上,遇到了一些问题. squashfs + lzma没有对应的patch.
所以, 我的作法是:
1. 在 2.6.35.4的内核版本上将对应的patch打上.
2. 然后整合2.6.35.4的相关squashfs+lzma部分的代码到2.6.32.27的内核代码上.
3. 由于lzma算法的接口上都带上了INIT宏. 默认编译为__init.将这些宏全部删掉就可以了.

你移到2.6.32的部分都有哪些目录和文件?

回复 | 举报

hk23056212013-01-15 00:33:34

今天我把lzma弄到linux 2.6.32的内核上,遇到了一些问题. squashfs + lzma没有对应的patch.
所以, 我的作法是:
1. 在 2.6.35.4的内核版本上将对应的patch打上.
2. 然后整合2.6.35.4的相关squashfs+lzma部分的代码到2.6.32.27的内核代码上.
3. 由于lzma算法的接口上都带上了INIT宏. 默认编译为__init.将这些宏全部删掉就可以了.

dino_cheng2012-03-05 09:40:17

看了你的博客,那我有些疑问:
1. 我想给我的2.6.15 kernel 打kernel lzma 补丁,但是在你提供的kernel header 中没有看到相应版本的补丁。
2. sq4.0现在好像支持lzma了。
3. 我的是sq 3.4的,发现很多补丁找不到。

给点指点吧