| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | BTFIXUP | 
 | 2 | ------- | 
 | 3 |  | 
 | 4 | To build new kernels you have to issue "make image". The ready kernel | 
 | 5 | in ELF format is placed in arch/sparc/boot/image. Explanation is below. | 
 | 6 |  | 
 | 7 | BTFIXUP is a unique feature of Linux/sparc among other architectures, | 
 | 8 | developed by Jakub Jelinek (I think... Obviously David S. Miller took | 
 | 9 | part, too). It allows to boot the same kernel at different  | 
 | 10 | sub-architectures, such as sun4c, sun4m, sun4d, where SunOS uses | 
 | 11 | different kernels. This feature is convinient for people who you move | 
 | 12 | disks between boxes and for distrution builders. | 
 | 13 |  | 
 | 14 | To function, BTFIXUP must link the kernel "in the draft" first, | 
 | 15 | analyze the result, write a special stub code based on that, and | 
 | 16 | build the final kernel with the stub (btfix.o). | 
 | 17 |  | 
 | 18 | Kai Germaschewski improved the build system of the kernel in the 2.5 series | 
 | 19 | significantly. Unfortunately, the traditional way of running the draft | 
 | 20 | linking from architecture specific Makefile before the actual linking | 
 | 21 | by generic Makefile is nearly impossible to support properly in the | 
 | 22 | new build system. Therefore, the way we integrate BTFIXUP with the | 
 | 23 | build system was changed in 2.5.40. Now, generic Makefile performs | 
 | 24 | the draft linking and stores the result in file vmlinux. Architecture | 
 | 25 | specific post-processing invokes BTFIXUP machinery and final linking | 
 | 26 | in the same way as other architectures do bootstraps. | 
 | 27 |  | 
 | 28 | Implications of that change are as follows. | 
 | 29 |  | 
 | 30 | 1. Hackers must type "make image" now, instead of just "make", in the same | 
 | 31 |    way as s390 people do now. It is analogous to "make bzImage" on i386. | 
 | 32 |    This does NOT affect sparc64, you continue to use "make" to build sparc64 | 
 | 33 |    kernels. | 
 | 34 |  | 
 | 35 | 2. vmlinux is not the final kernel, so RPM builders have to adjust | 
 | 36 |    their spec files (if they delivered vmlinux for debugging). | 
 | 37 |    System.map generated for vmlinux is still valid. | 
 | 38 |  | 
 | 39 | 3. Scripts that produce a.out images have to be changed. First, if they | 
 | 40 |    invoke make, they have to use "make image". Second, they have to pick up | 
 | 41 |    the new kernel in arch/sparc/boot/image instead of vmlinux. | 
 | 42 |  | 
 | 43 | 4. Since we are compliant with Kai's build system now, make -j is permitted. | 
 | 44 |  | 
 | 45 | -- Pete Zaitcev | 
 | 46 | zaitcev@yahoo.com |