Налаштування kexec

У мене працює система з `kexec` на TP-Link TL-WR741ND. Після модифікації USB і додаткових експериментів, мені вдалося запустити повноцінну систему з `kexec`.

  1. Завантаження вихідного коду:
    svn checkout svn://svn.openwrt.org/openwrt/branches/backfire
  2. Перехід до каталогу buildroot, оновлення та встановлення feeds:
    cd backfire && ./scripts/feeds update && ./scripts/feeds install -a
  3. Створення дефолтної конфігурації та вхід у меню налаштувань:
    make V=s defconfig && make menuconfig
    1. Обрати наступне:
      1. Target SystemAtheros AR71xx/AR7240/AR913x
      2. Target ProfileTP-LINK TL-WR741ND v1
      3. Target ImagesramdiskCompressionlzma
      4. Target Imagestar.gz
      5. Kernel modulesFilesystems
        1. kmod-fs-ext2
        2. kmod-fs-ext3
      6. Kernel modulesUSB Support
        1. kmod-usb-core
        2. kmod-usb-ohci
        3. kmod-usb-storage
      7. Utilitieskexec toolsConfiguration
        1. (mips) Target name for kexec kernel
    2. Вийти з меню та зберегти конфігурацію
  4. Збірка:
    make V=s
  5. Модифікації:
    1. Файл: `./build_dir/linux-ar71xx/linux-2.6.32.27/arch/mips/kernel/machine_kexec.c`
      1. Змінити рядок 55 на: `kexec_start_address = (unsigned long) phys_to_virt(image→start);`
    2. Файл: `./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`
      1. Змінити рядок 55 на: `kexec_start_address = (unsigned long) phys_to_virt(image→start);`
    3. Для підтримки USB:
      1. Файл: `./target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig`
        1. Додати новий рядок 176 під `config AR71XX_MACH_TL_WR741ND`: select AR71XX_DEV_USB`
      2. Файл: `./target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c`
        1. Додати рядок 22 під includes: `#include “dev-usb.h”`
        2. Додати рядок 102 під функцією: `static void __init tl_wr741nd_setup(void)` `ar71xx_add_device_usb();`
  6. Запуск конфігуратора ядра:
    make kernel_menuconfig
    1. Обрати наступне:
      1. Kernel typeKexec system call
      2. General setupSupport initial ramdisks compressed using LZMA
        1. Built-in initramfs compression modeLZMA
      3. Device DriversSCSI device support
        1. M SCSI device support
        2. M SCSI disk support
        3. Probe all LUNs on each SCSI device
      4. Device DriversUSB support
        1. M Support for Host-side USB
          1. M OHCI HCD supportUSB OHCI support for Atheros AR71xx
            1. M USB Mass Storage support
            2. USB announce new devices
      5. Kernel hackingDefault kernel command string → `rootfstype=ext2 noinitrd console=ttyS0,115200 board=TL-WR741ND`
  7. Зміни в `./package/base-files/files/etc/preinit`:
    1. Після рядка: `. /etc/diag.sh` додати: `rootfs=/dev/sda1`
    2. (Опційно) змінити файл: `./target/linux/generic-2.6/base-files/init`
      1. Змінити рядок 50 на: `mount $rootfs /mnt -o noatime`
        • Флеш-пам’ять зношується швидше при записі кожного доступу до файлу*
  8. Очистити збірку та зібрати заново:
    make clean && make V=s
  9. Повторити крок 5 *Clean очищає необхідне, але є обов’язковим для роботи USB патчів*
  10. Фінальна збірка:
    make V=s
  11. Розбити зовнішній носій на розділи та відформатувати перший у ext2
  12. Розпакувати вміст `./bin/ar71xx/openwrt-ar71xx-rootfs.tar.gz` в корінь файлової системи
  13. Скопіювати файл `./bin/ar71xx/openwrt-ar71xx-vmlinux-initramfs.elf` у корінь файлової системи

(далі буде)

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/31 11:33
  • by vazaz