Differences

This shows you the differences between the selected revision and the current version of the page.

howto:loader_o 2015/11/29 04:18 howto:loader_o 2017/09/06 17:34 current
Line 1: Line 1:
-Mrs. C, you were my favorite<a href="http://qsqssazi.com"> teheacr</a> at Westchester High School and I want to thank you for always giving me that extra push. My name is Shandilin King and I was in your class in 05-06. I am so happy to see your success. Keep it up!+====== How-to loader.o to preform a kexec like operations ====== 
 + 
 +loader.o allow you to run a custom kernel, without the danger of having to reprogram your Flash ROM. It loads a new kernel into memory and jumps to it directly. 
 + 
 +===== Compiling loader.o ===== 
 + 
 +  - Get [[http://www.genbako.com/loader.o/org/loader.tar.gz|loader.o original source]] and optionally [[http://www.genbako.com/loader.o/loader.diff|patch for initrd problem]]. 
 +  - [[:howto:kernel_build#build_toolchain|Build a toolchain for cross compiling]]. 
 +  - In Makefile point ''INCLUDE = -isystem'' parameter to a **2.4.21-pre4** kernel header files! 
 +  - Fix ''gcc'' and ''ld'' entry in Makefile to meet your cross compiled toolchain. 
 +  - Apply initrd patch if you like. 
 +  - Run ''make'' 
 + 
 +===== Use pre-compiled loader.o ===== 
 +If you think that compiling loader.o by yourself is too much hassle then you can use a [[http://dns323.kood.org/downloads/people/sala/loader.o|pre-compiled loader.o]] 
 + 
 +===== Preparing proper kernel image for loading ===== 
 +For kernel building instructions look [[howto:kernel_build|kernel building wiki page]]. 
 + 
 +Before you start compiling kernel you should apply this patch, which is going to fix [[http://dns323.kood.org/forum/t850-building-kernel-loadero.html|memory detection problem]]. 
 +<code patch> 
 +--- arch/ppc/platforms/sandpoint_setup.c.orig 2007-08-09 18:02:58.000000000 -0400 
 ++++ arch/ppc/platforms/sandpoint_setup.c 2007-08-09 18:03:41.000000000 -0400 
 +@@ -451,8 +451,8 @@ 
 +  
 + /* This might be fixed in DINK32 12.4, or we'll have another 
 + * way to determine the correct memory size anyhow. */ 
 +- /* return mpc10x_get_mem_size(MPC10X_MEM_MAP_B); */ 
 +- return 16*1024*1024; 
 ++ return mpc10x_get_mem_size(MPC10X_MEM_MAP_B); 
 ++ /*return 16*1024*1024;*/ 
 +
 +  
 + static void __init 
 +</code> 
 +If you would like to use custom cmdline parameter for your kernel, for example "root=/dev/sda3" then you will also need this patch: 
 +  - Search for "#endif /* CONFIG_BLK_DEV_INITRD */" in arch/ppc/platform/sandpoint_setup.
 +  - Add following lines after "#endif /* CONFIG_BLK_DEV_INITRD */" line: 
 +<code>       if ( r6 ) 
 +        { 
 +              *(char *)(r7+KERNELBASE) = 0; 
 +              strcpy(cmd_line, (char *)(r6+KERNELBASE)); 
 +        } 
 +</code> 
 +After you have successfully built a kernel image you should note that the loader need the kernel to be in binary format. It can be done with powerpc-linux-objcopy command. 
 +<code>powerpc-linux-objcopy -O binary vmlinux</code> 
 + 
 +===== Using loader.o to load a kernel image ===== 
 +<code>sync;insmod /mnt/HD_a2/loader.o kernel=/mnt/HD_a2/vmlinux</code> 
 +or 
 +<code>sync;insmod /mnt/HD_a2/loader.o kernel=/mnt/HD_a2/vmlinux cmdline="root=/dev/sda3"</code> 
 + 
 +===== Use pre-compiled vmlinux ===== 
 +Pre-compiled vmlinux is available at [[http://dns323.kood.org/downloads/people/sala/vmlinux|here]]. 
 +It does support custom cmdline parameter. I does have usb and usb storage modules built in, <del>so it is possible to load operating system from usb stick</del>. This kernel image is optimized to boot [[:howto:chroot_gentoo|Gentoo linux]]. .config is available at [[http://dns323.kood.org/downloads/people/sala/loader.config|here]].\\ 
 +<del>To load from usb stick:</del> 
 +<code>sync;insmod /mnt/HD_a2/loader.o kernel=/mnt/HD_a2/vmlinux cmdline="root=/dev/sdb1"</code>

Personal Tools