Advertisement
Guest User

josch

a guest
Jul 16th, 2008
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.40 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # ----------------------
  4.  
  5. KERNEL_ARCHIVE=/usr/src/linux-source-2.6.18.tar.bz2
  6. KERNEL=linux-source-2.6.18
  7. SQUASHFS_LATEST_KERNEL_PATCH=linux-2.6.18
  8. SQUASHFS=squashfs3.3
  9. LZMA=lzma457
  10.  
  11. # ----------------------
  12.  
  13. eecho()
  14. {
  15.    echo "-------------------------------------"
  16.    echo " * " "$@"
  17.    echo "-------------------------------------"
  18. }
  19.  
  20. set -e
  21. CURDIR=`pwd`
  22. TMP=$CURDIR/build
  23. PKG=$CURDIR/target
  24.  
  25. eecho "setting up build and target dir"
  26. rm -Rf $TMP
  27. mkdir -p $TMP
  28. rm -Rf $PKG
  29. mkdir -p $PKG
  30. cd $TMP
  31. K=`echo $TMP/$KERNEL | sed -r s/'\/'/'\\\\\/'/g`
  32.  
  33. eecho "Unpacking archives"
  34.  
  35. mkdir -p $LZMA
  36. echo $LZMA
  37. tar -C $LZMA -xf $CURDIR/$LZMA.tar.*
  38. echo $SQUASHFS
  39. tar -xf $CURDIR/$SQUASHFS.tar.*
  40. echo $KERNEL
  41. tar -xf $KERNEL_ARCHIVE
  42. ln -s $KERNEL ./linux
  43. ln -s $KERNEL ./linux-2.6.24.3
  44. echo "Squashfs LZMA patches"
  45. tar -xf $CURDIR/patches/squashfs/sqlzma.tar.*
  46.  
  47. eecho "Preparing kernel: squashfs + lzma patches"
  48.  
  49. cd $TMP/$KERNEL
  50. patch -p1 < $TMP/$SQUASHFS/kernel-patches/$SQUASHFS_LATEST_KERNEL_PATCH/*patch
  51.  
  52. cd $TMP
  53. patch -p0 < $TMP/sqlzma2k-3.3.patch
  54. patch -p0 < $TMP/sqlzma2u-3.3.patch
  55.  
  56. patch -p0 < $CURDIR/patches/squashfs/cvs/typo_mkflags_u.patch
  57. patch -p0 < $CURDIR/patches/squashfs/cvs/unsquashfs_bugfixes.patch
  58. patch -p0 < $CURDIR/patches/squashfs/cvs/mksquashfs_trace_fixes.patch
  59. patch -p0 < $CURDIR/patches/squashfs/cvs/mksquashfs_unused_vars.patch
  60. patch -p0 < $CURDIR/patches/squashfs/cvs/mksquashfs_code_cleanups.patch
  61. patch -p0 < $CURDIR/patches/squashfs/cvs/mksquashfs_bug_fixes.patch
  62. #patch -p0 < $CURDIR/patches/squashfs/cvs/missing_void.patch
  63. patch -p0 < $CURDIR/patches/squashfs/cvs/code_cleanup.patch
  64.  
  65. cd $KERNEL
  66. #patch -p1 < $CURDIR/patches/squashfs/cvs/static_declarations.patch
  67. patch -p1 < $CURDIR/patches/squashfs/cvs/typo_mkflags_k.patch
  68.  
  69. # I need to remove the following 2.6.24.3 patch in order to even compile the kernel. Why?
  70. patch -p1 -R < $CURDIR/patches/kernel_compile.patch
  71.  
  72. cd $TMP/$LZMA
  73. patch -p1 < $TMP/sqlzma1-449.patch
  74.  
  75. cd $TMP/$SQUASHFS/squashfs-tools
  76. patch -p0 < $CURDIR/patches/squashfs/mksquashfs.quiet.patch
  77.  
  78. cd $TMP
  79. cat Makefile | sed -r "s/KDir = .*/KDir = $K/" \
  80.              | sed -r "s/SqFs = .*/SqFs = $K\/fs\/squashfs\//" \
  81.              | sed -r "s/LzmaVer =.*/LzmaVer = $LZMA/" \
  82.              | sed -r "s/C=1/C=0/" >Makefile2
  83. cat Makefile2 >Makefile
  84.  
  85. cd $TMP/$KERNEL
  86. eecho "configuring kernel"
  87. # squashfs will be compiled separately, so make sure it's not in the kernel configuration
  88. #cat $CURDIR/config | grep -v "CONFIG_SQUASHFS_" | sed -r "s/.*CONFIG_SQUASHFS[^_]*/CONFIG_SQUASHFS=n/" > ./.config
  89. make oldconfig
  90. make scripts
  91. make prepare
  92.  
  93. #eecho "compiling kernel"
  94. #cd $TMP/$KERNEL
  95. #make -j 3 modules
  96. #INSTALL_MOD_PATH=$PKG make modules_install
  97. #make -j 3 bzImage
  98.  
  99. eecho "compiling squashfs+lzma and tools"
  100. cd $TMP
  101. make 2>&1 > $CURDIR/log
  102. mkdir -p $PKG/usr/bin
  103. cp $TMP/$SQUASHFS/squashfs-tools/{mk,un}squashfs $PKG/usr/bin
  104. strip --strip-unneeded $PKG/usr/bin/*
  105. mkdir -p $PKG/lib/modules/
  106. cd $PKG/lib/modules/
  107. rm -f modules.*
  108. mkdir -p kernel/fs/squashfs/
  109. cp $TMP/$LZMA/C/Compress/Lzma/kmod/{un,sq}lzma.ko kernel/fs/squashfs/
  110. cp $TMP/$KERNEL/fs/squashfs/squashfs.ko kernel/fs/squashfs/
  111.  
  112. cd $PKG
  113. if [ -e /sbin/makepkg ]; then
  114.    makepkg -l n -c n $KERNEL-i486-1.tgz
  115.    eecho "now install $PKG/$KERNEL-i486-1.tgz, run lilo & reboot"
  116. else
  117.    echo "your kernel is ready in $PKG"
  118. fi
  119.  
  120. echo press any key...
  121. read
  122.  
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement