Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:howto:kexec [2011/11/14 19:15] mateakosdocs:guide-user:advanced:kexec [2018/03/03 20:13] – ↷ Page moved from docs:user-guide:advanced:kexec to docs:guide-user:advanced:kexec bobafetthotmail
Line 1: Line 1:
 +===== A short success story with kexec. =====
  
 +I have a working kexeced system on a TP-Link TL-WR741ND.
 +After making the usb mod, i've started from this two topics:
 +https://forum.openwrt.org/viewtopic.php?id=23901
 +https://forum.openwrt.org/viewtopic.php?id=24124
 +And after some more experimentig, i ended up with a working kexeced system.
 +
 +===== Preparation of the usb bootable system - step by step =====
 +  - Download the sources. I downloaded a full fresh copy of the build system with this command: ''svn checkout svn://svn.openwrt.org/openwrt/branches/backfire''
 +  - Change directory to bildroot: ''cd backfire''
 +  - Update the feeds: ''./scripts/feeds update''
 +  - Install the feeds: ''./scripts/feeds install -a''
 +  - ''make V=99 defconfig''
 +  - Execute ''make menuconfig''. In my case i selected the followings:\\ ''Target System -> Atheros AR71xx/AR7240/AR913x''\\ ''Target Profile -> TP-LINK TL-WR741ND v1''\\ ''Target Images -> * ramdisk -> Compression -> lzma''\\ ''Target Images -> * tar.gz''\\ ''Kernel modules -> Filesystems -> * kmod-fs-ext2'' and ''* kmod-fs-ext3''\\ ''Kernel modules -> USB Support -> * kmod-usb-core'' and ''* kmod-usb-ohci'' and ''* kmod-usb-storage''\\ ''Utilities -> * kexec tools -> Configuration -> (mips) Target name for kexec kernel''\\ Exit from menu and save configuration.
 +  - ''make V=99''\\ if it's not successful, then solve the problem somehow
 +  - I modified the files: "''./build_dir/linux-ar71xx/linux-2.6.32.27/arch/mips/kernel/machine_kexec.c''" and "''./build_dir/toolchain-mips_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/linux-2.6.32.27/arch/mips/kernel/machine_kexec.c''"\\ In the 55th line i changed from:\\ '' kexec_start_address = image->start;''\\ to:\\ '' kexec_start_address = (unsigned long) phys_to_virt(image->start);''\\ in both files.
 +  - For the USB support, i modified two files:\\ in ''   ./target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig''\\ at the ''   config AR71XX_MACH_TL_WR741ND''\\ section i inserted that line: ''   select AR71XX_DEV_USB''\\ below the line: ''   select AR71XX_DEV_LEDS_GPIO''\\ it was the 176th line.\\ and in ''   ./target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c''\\ at the includes, i inserted that line: ''   #include "dev-usb.h"\\ below the line: ''   #include "dev-leds-gpio.h"\\ it was the 22nd line.\\ And in the ''  static void __init tl_wr741nd_setup(void)''\\ function i inserted: ''   ar71xx_add_device_usb();''\\ below the line: ''   u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);''\\ it was the 102nd line\\ //(the line numbers are the insertion points)//
 +  - Run "''make kernel_menuconfig''" and select:\\ ''Kernel type -> * Kexec system call''\\ ''General setup -> * Support initial ramdisks compressed using LZMA'' and ''Built-in initramfs compression mode --> LZMA''\\ ''Device Drivers -> SCSI device support -> M SCSI device support'' and ''M SCSI disk support'' and ''* Probe all LUNs on each SCSI device''\\ ''Device Drivers -> USB support -> M Support for Host-side USB'' and ''M OHCI HCD support -> * USB OHCI support for Atheros AR71xx'' and ''M USB Mass Storage support'' and optionally if you want to see messages in dmesg output, when connecting or disconnecting usb devices: ''* USB announce new devices''\\ ''Kernel hacking -> Default kernel command string -> rootfstype=ext2 noinitrd console=ttyS0,115200 board=TL-WR741ND''
 +  - Modify ''   ./package/base-files/files/etc/preinit''\\ add the line:\\ ''   rootfs=/dev/sda1''\\ right after line\\ ''   . /etc/diag.sh''\\ Optionally you can modify ''   ./target/linux/generic-2.6/base-files/init''\\ Line 50 from: ''   mount $rootfs /mnt''\\ to: ''   mount $rootfs /mnt -o noatime''\\ to make sure, that the access time of the read files is not stored on the USB drive. It may be important if you consider to use Flash based storage, because blocks wear out earlier if we write every time, when a file is accessed.
 +  - ''make clean''
 +  - ''make V=99''
 +  - Repeat step 8, because the clean made some trouble, but the clean is necessary for the USB patch to work (at least it doesn't work for me without clean).
 +  - ''make V=99''
 +  - partition a usb flash or disk and format the 1st partition to ext2
 +  - extract the content of ''./bin/ar71xx/openwrt-ar71xx-rootfs.tar.gz'' to the root of the newly created file system
 +  - copy ''./bin/ar71xx/openwrt-ar71xx-vmlinux-initramfs.elf'' to the same place
 +//(to be continued)//
  • Last modified: 2018/10/13 17:02
  • by jw0914