Загрузить Gentoo на роутере с USB flash

Доброго времени суток. Удавалось ли кому-нибудь загрузить с флешки систему на каком-нибудь роутере (скажем, на D-Link DIR-620)? Что для этого потребовалось? В идеале хотелось бы в штатной прошивке изменить загрузчик так, что бы он пытался грузиться в usb и в случае неудачи грузил то что прошито.
Подскажите какую-нибудь документацию, совсем ничего не нахожу (неправильно ищу?).
Заранее благодарен.

Загрузить Gentoo на роутере с USB flash

На кой с флешки ? с диска загрузи !
и как ты её прошил ?

Metall написал(а): На кой с

Metall написал(а):
На кой с флешки ? с диска загрузи !

Диска пока что нет, планируется купить после того как удастся с флешкой.

slepnoga написал(а):
канешна, дарагой :)

Где взять информацию по установке? (хэндбук на той стадии установки совсем не многословен).

Конкретно пока не ясны 2 вещи:

1. Что сделать с загрузчиком и можно ли избежать изменение прошивки? (пока совершенно не понял как разобрать прошивку, как там добраться до загрузчика и самое главное: умеет ли вообще загрузчик грузить систему с usb и в случае неудачи грузить с другого места; прошивку отсюда брал: ftp://ftp.dlink.ru/pub/Router/DIR-620/Firmware/ (там тарболл, в котором шелл-скрипт, ядро и RootFS-образ, который не понятно как смонтировать)).

Если нельзя без модификации прошивки обойтись — подскажите как заставить взлететь прошивку на каком-нибудь QEMU, что бы убедиться что все правильно работает. Я пробовал запустить, перебрав все варианты CPU — всегда получаю "qemu: could not load kernel '/home/sbar/router/sys/img/Kernel'"

sbar@laptop ~ $ ls -1 /usr/bin/qemu-system-mips*
/usr/bin/qemu-system-mips
/usr/bin/qemu-system-mips64
/usr/bin/qemu-system-mips64el
/usr/bin/qemu-system-mipsel
sbar@laptop ~ $ cat get.sh
#!/bin/bash
for machine in /usr/bin/qemu-system-mips*; do
    for arch in $(qemu-system-mipsel -cpu '?' | awk '{print $2}'); do
        echo "$machine -cpu $arch -hda ~/router/sys/img/RootFS -kernel ~/router/sys/img/Kernel"
    done
done
sbar@laptop ~ $ ./get | sh
qemu: could not load kernel '/home/sbar/router/sys/img/Kernel'
qemu: could not load kernel '/home/sbar/router/sys/img/Kernel'
qemu: could not load kernel '/home/sbar/router/sys/img/Kernel'
...

2. Я никак не пойму что это за архитектура процессора там такая и какой именно stage3 мне подойдет. Смотрю из busybox через telnet (uname там нет):

# cat /proc/cpuinfo
system type             : Ralink SoC
processor               : 0
cpu model               : MIPS 24K V4.12
BogoMIPS                : 255.48
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes
ASEs implemented        : mips16 dsp
VCED exceptions         : not available
VCEI exceptions         : not available

Я правильно понял, что мне подойдет 32-битная MIPS little-endian (исходя из вот этой страницы смотрю, попал туда из хэндбука)? Если да — я вижу 4 разновидности stage3-mipsel*.tar.gz — какой подойдет мне?

Metall написал(а):
и как ты её прошил ?

Что прошил? Пока только у маршрутизатора обновил прошивку до актуальной.

tldr: подскажите документацию по установке или объясните что делали на своем опыте, плиз

Может у энтузиастов

Может у энтузиастов поспрашать, которые прошивку от Олега на 320 допиливают
http://wl500g.info/
Вряд ли в qemu есть поддержка CPU Type = Ralink RT3052F

My website: http://comb.org.ru

С ноября 2022 нетбук HP mini (Processor: Atom n570)

:)

Black_Ru написал(а):
Вряд ли в qemu есть поддержка CPU Type = Ralink RT3052F

Ну блин... Это же вроде как MIPS32® 24K® Family - а qemu его вроде хавает нормально.

qemu -cpu ? x86

http://docs.dvo.ru/qemu-kvm-0.13.0-r2/html/qemu-tech.html#intro_005fmips_005femulation
Не знаю какой это давности, но
Current QEMU limitations:

Self-modifying code is not always handled correctly.
64 bit userland emulation is not implemented.
The system emulation is not complete enough to run real firmware.
The watchpoint debug facility is not implemented.

My website: http://comb.org.ru

С ноября 2022 нетбук HP mini (Processor: Atom n570)

Удавалось ли кому-нибудь

 Удавалось ли кому-нибудь загрузить с флешки систему на каком-нибудь роутере

канешна, дарагой :)
Transdent IDE Flash 256M , Intel S5000S, Intel® PRO/1000 PT 4-port 1 gb :))

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Ok. Тот роутер по неведомой

Ok. Тот роутер по неведомой причине помер, сейчас есть похожий девайс: TP-Link mr3420. Поставил на него OpenWRT (по этой доке), смог загружать ее с флехи с помощью extroot, хочу тем же способом загружать Gentoo.

root@router:~# cat /proc/cpuinfo 
system type             : Atheros AR7241 rev 1
machine                 : TP-LINK TL-MR3420
processor               : 0
cpu model               : MIPS 24Kc V7.4
BogoMIPS                : 265.42
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0bc0, 0x0c38, 0x0f98]
ASEs implemented        : mips16
shadow register sets    : 1
kscratch registers      : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

root@router:~# uname -a
Linux router 2.6.39.4 #1 Mon Aug 22 10:18:45 CEST 2011 mips GNU/Linux
root@router:~# 

Кросскомпилятор из тулкита к официальной прошивке собирает программы, которые успешно запускаются на роутере. Порядок байтов — big-endian.

sbar@laptop /var/tmp $ wget -q https://raw.github.com/sbar/data_structures/master/utils/memview.c
sbar@laptop /var/tmp $ ~/router/mr3420_3220v1/build/gcc-3.4.4-2.16.1/build_mips/bin/mips-linux-uclibc-gcc memview.c -o memview
sbar@laptop /var/tmp $ file memview
memview: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
sbar@laptop /var/tmp $ scp -P 55 memview root@router:/root/
memview                                 100% 7970     7.8KB/s   7.8KB/s   00:00
sbar@laptop /var/tmp $ ssh -p 55 root@router /root/memview
4 bytes of memory from 0x7fc9d560 address:
11111111(ff) 11111111(ff) 11111111(ff) 11111010(fa)
...

Скачал stage3-mips4_n32-20110212.tar.bz2 — не то:

sbar@laptop /mnt/flash/bin $ file pwd
pwd: ELF 32-bit MSB executable, MIPS, N32 MIPS-IV version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70401, stripped
root@router:~# ./pwd
./pwd: line 4: EL4j�04
F��D$@tttp��SS_t_t_tD���������  dt�R_t_t_t��e�(/lib32/ld.so.1GNU        ���P��
Zp`P``pppp
%?,)(*0&6J3C+E>#Q.:9KB7$: not found4N;2/-8A
./pwd: line 5: syntax error: unexpected ")"

Подскажите пожалуйста, какой stage3 подойдет мне, или его просто не существует? Спасибо.

n32 не подходит. ELF 32-bit

n32 не подходит.
ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
У вас что-то похоже на это: http://habrahabr.ru/blogs/programming/117194/
попробуйте mipsel

Локальный оверлей растёт

mittorn написал(а): ELF

mittorn написал(а):
ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
У вас что-то похоже на это: http://habrahabr.ru/blogs/programming/117194/
попробуйте mipsel

У меня на самом маршрутизаторе стоит ядро, которое грузит систему с исполняемыми файлами с порядком байтов big-endian. Пока что я собираюсь использовать только это ядро и загружать систему через extroot с флешки. Я полагаю, что я не смогу на ней запускать файлы с little-endian (попробую конечно, когда будет доступ к машине снова, спасибо). Есть еще варианты?

mittorn написал(а):
n32 не подходит.

А что это за n32? Посоветуйте какую-нибудь годную документацию по серии этих процессоров (mips) (по ссылкам из хэндбука ходил -- не то; в гугле тоже был, кажется когда еще с d-link ковырялся)?

Вот еще попробовал собрать

Вот еще попробовал собрать тулкит вот таким образом:
LANG=C CBUILD=i686-pc-linux-gnu crossdev --without-headers --binutils 2.20.1-r1 --libc 2.11.2 --target mips-softfloat-linux-gnu

Собралось нечто кривое, неспособное hello world на Си собрать, удалось только на асме что-то собрать неработающее:

sbar@desktop ~/router/gentoo $ mips-softfloat-linux-gnu-gcc test.c -o test
as: unrecognized option '-EB'
sbar@desktop ~/router/gentoo $ mips-softfloat-linux-gnu-as ~/hello.S -o hello
sbar@desktop ~/router/gentoo $ ls -l hello
-rw-r--r-- 1 sbar sbar 948 2011-09-05 21:18 hello
sbar@desktop ~/router/gentoo $ file hello
hello: ELF 32-bit MSB relocatable, MIPS, MIPS-I version 1 (SYSV), not stripped

Опять не то. Мне нужно одно из следующего получить:

ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped
ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), corrupted section header size

Что точно мне нужно передать crossdev'у, что б он выдал мне компилятор соответствующий?

В общем мне не подошел ни

В общем мне не подошел ни один из stage3: ни из experimental, ни из releases.

В хэндбуке вообще вот что написано: "Note: The MIPS32 and MIPS64 ISAs are a common source of confusion. The MIPS64 ISA level is actually a superset of the MIPS5 ISA, so it includes all instructions from MIPS5 and earlier ISAs. MIPS32 is the 32-bit subset of MIPS64, it exists because most applications only require 32-bit processing." — я так и не понял какой stage3 мне должен подойти. Попробовал еще stage3-mips64_multilib-20110713.tar.bz2 — не то опять:

sbar@router:~$ file /tmp/ls
/tmp/ls: ELF 32-bit MSB executable, MIPS, N32 MIPS64 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70401, stripped
sbar@router:~$ /tmp/ls
bash: /tmp/ls: cannot execute binary file
sbar@router:~$ strace /tmp/ls
execve("/tmp/ls", ["/tmp/ls"], [/* 17 vars */]) = -1 ENOEXEC (Exec format error)
write(2, "strace: exec: Exec format error\n", 32strace: exec: Exec format error
) = 32
exit_group(1)                           = ?
sbar@router:~$ 

Полагаю, что только из stage1 я могу собираться (или не могу? моей то архитектуры stage1 все равно нигде нет). Подскажите хорошую документацию по кросскомпиляции из stage1 в stage3, плиз. В гугле был, эти доки видел: 1, 2; главным образом непонятно который из stage1-архивов мне брать.

Если кто знает, где взять готовую сборку — также очень интересно.

Теоретически возможно все.

Теоретически возможно все. Практически это сведется к созданию специализированного дистрибутива наподобие вышеупомянутого openwrt. Glibc , с которой компилятся все гентопрограммы, жирноват для тактико-технических характеристик роутеров типа dlink. Придется портировать приложения на clib или что-то похожее. При отсутствии нужного стейжа его придется собирать кусками кросс-компилятором. И ядро пилить сильно. Судя по уровню вопроса вам не хватит квалификации. Патчеры и хакеры таких вопросов не задают. Они на них отвечают. Собственно чем не нравится готовый openvrt? На мой взгляд в нем достаточно пакетов для роутера.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".