[HowTo] Bootowanie z SD (sdhc)
|
Kwadrat |
Dodano 09-04-2009 00:08
|

User

Posty: 11
Dołączył: 03/04/2008 19:30
|
Alo,
OPIS na WiKi: http://openwrt.livenet.pl/doku.php/so...re:sd_boot
Zmienił się troszkę nowy sterownik od SD i trzeba wprowadzić drobne zmiany w "bootowaniu" OpenWrt z karty SD. Całość działa na pewno na Kamikadze 8.09(WRT54GL) bo na tym konfigurowałem. Opis z wiki openwrt nie działa, więc podaje tutaj informacje jak to zrobić poprawnie. Wzorowałem się na opisie znalezionym w necie ale to było dawno temu i nie mam linka. Może komuś się przyda bo takie odpalanie linksysa jest dużo przyjemniejsze. Zakładam, że już pakiet od sterownika sdhc [http://4mul8.ca/openwrt/packages/] jest zainstalowany (nie ustawiony do automatycznego uruchamiania) oraz, że mamy odpowiedni "kmod" dla systemu plików użytego na naszej karcie SD. W moim przypadku karta SD jest formatowana na system ext2 więc niezbędne było zainstalowanie przed zgraniem "obrazu" plików na SD pakietu:
opkg update
opkg install kmod-fs-ext2
Następnie należy przygotować karte SD czyli poprostu skopiować wszystkie pliki z naszego Linksyska na SD. Tak żeby je potem w "magiczny" sposób podmienić i używać tych z naszej karty. Do tego celu należy wykonać:
mkdir /tmp/root
mount -o bind /rom /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /sdcard -a
Teraz zabieramy się za konfigurację samego openwrt czyli trzeba skasować dowiązanie do busybox-a:
i zastąpić je naszym własnym kodem:
i wklejamy:
#!/bin/sh
echo "0x9c" > /proc/diag/gpiomask
insmod sdhcd clk=3 din=2 dout=4 cs=7 major=0 maxsec=32 rahead=2 dbg=1
#ustawienia wyprowadzen GPIO dla nowego sterownika sdhc tak jak w pliku konfiguracyjnym
insmod ext2 #jak mamy inny na SD to zmienić
boot_dev="/dev/sdcard/part1"
sleep 10s
mount "$boot_dev" /sdcard
[ -x /sdcard/sbin/init ] && {
mount -o move /proc /sdcard/proc && \
pivot_root /sdcard /sdcard/sdcard && {
mount -o move /sdcard/dev /dev
mount -o move /sdcard/tmp /tmp
mount -o move /sdcard/jffs2 /jffs2 2>&-
mount -o move /sdcard/sys /sys 2>&-
}
}
exec /bin/busybox init
na samym końcu trzeba jeszcze ustawić prawa do wykonywania dla tego pliku czyli:
no i po wszystkim
powinno wszystko ładnie działać.
Rozwiązanie jest o tyle fajne, że jak coś się nam nie podoba to wyciągamy kartę SD i router odpali nam się na ustawieniach zapisanych w jego pamięci - te przed kopiowaniem. Nie musimy się też martwić wszelkiego pamięcią na pakiety bo wszystko domyślnie będzie na SD.
Pozdrawiam
Edytowany przez Kwadrat dnia 09-04-2009 21:33
|
|
|
|
obsy |
Dodano 09-04-2009 06:26
|

VIP

Posty: 5775
Dołączył: 31/10/2006 20:06
|
wiki na openwrt jest otwarte - weź to proszę i zamień tamten tekst żeby był aktualny. Bo w końcu zagnie gdzieś w mrokach forum.
|
|
|
|
PrzemWas |
Dodano 11-05-2009 21:43
|

User

Posty: 44
Dołączył: 06/08/2008 07:36
|
Czy są jakieś kruczki, że u mnie to nie chce zaskoczyć? Miga dioda Power, potem zaświeca się DMZ i spowrotem miga Power i świeci DMZ. Używam tego samego sprzętu i wersji Kamikaze. Zauważyłem, że podczas kopiowania plików na kartę nie wszystkie foldery zostają wypełnione, np dev pozostaje pusty, czy to normalne?
Modyfikacje robiłem krok po krok według opisu na czystym, dopiero co wgranym systemie? Czy nie potrzeba jakiś dodatkowych paczek by to zaskoczyło?
Przemek |
|
|
|
shibby |
Dodano 12-05-2009 10:57
|

SysOp

Posty: 17140
Dołączył: 15/01/2009 20:30
|
karte masz sformatowana na ext2 lub etx3?
musi ci sie skopiowac wszystko.
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
PrzemWas |
Dodano 12-05-2009 11:05
|

User

Posty: 44
Dołączył: 06/08/2008 07:36
|
Cytat shibby napisał/a:
karte masz sformatowana na ext2 lub etx3?
musi ci sie skopiowac wszystko.
ext2 identycznie według opisu. Próbowałem też skopiować pod WinSCP to podczas kopiowania niektórych plików pisze "not regular file..."
Pomijając samą kartę, przecież teoretycznie po wyciągnięciu karty ruter powinien się odpalić z własnego systemu plików (przynajmniej takie jest założenie)... a też nie daje rady.
Przemek |
|
|
|
obsy |
Dodano 12-05-2009 11:13
|

VIP

Posty: 5775
Dołączył: 31/10/2006 20:06
|
To znaczy że mogłeś coś zepsuć w init, tam tam całość procesu bootowania.
|
|
|
|
shibby |
Dodano 12-05-2009 11:35
|

SysOp

Posty: 17140
Dołączył: 15/01/2009 20:30
|
moze masz inne gpio niz podano w opisie.
tak jak pisze obsy, cos w init popsules....
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
PrzemWas |
Dodano 12-05-2009 11:43
|

User

Posty: 44
Dołączył: 06/08/2008 07:36
|
Cytat shibby napisał/a:
moze masz inne gpio niz podano w opisie.
tak jak pisze obsy, cos w init popsules....
Ruter jest WRT54GL 1.1 i ma takie samo GPIO jak w opisie, tym bardziej, że kartę bez problemu widzi i na nią kopiuje (to co się udaje skopiować), po ustawieniach GPIO w pliku sdcard.conf. A w pliku init jak by nie patrzeć ustawienia są analogiczne jak w sdcard.conf i nie działa
Dziwi mnie jeszcze jedno skoro bym coś namieszał w init to czemu bez karty nie odpala?
Przemek |
|
|
|
obsy |
Dodano 12-05-2009 11:51
|

VIP

Posty: 5775
Dołączył: 31/10/2006 20:06
|
Bo, jeżeli nie zauważyłem, w linuksach init steruje procesem uruchamiania.
Jak zepsułeś plik, nadpisałeś, masz zle końce linii, składniowo jest błędny albo coś innego to masz taki efekt. Nie uruchamia się.
PS. Failsafe i popraw/napraw to. Lub pokaż zawartość :)
|
|
|
|
PrzemWas |
Dodano 12-05-2009 12:01
|

User

Posty: 44
Dołączył: 06/08/2008 07:36
|
Cytat obsy napisał/a:
Bo, jeżeli nie zauważyłem, w linuksach init steruje procesem uruchamiania.
Teraz trochę zgłupiałem o którym pliku init mówimy, oryginalny został zapisany na karcie SD, podczas kopiowania i jego w żaden sposób nie zmieniałem. W ruterze w folderze /sbin został utworzony nowy init o zawartości podanej na stronie. (utworzony na zasadzie kopiuj wklej o błędzie podczas przepisania nie ma mowy).
W opisie jest jasno opisane, że gdy się wyciągnie się kartę to ruter też powinien odpalić (ale teraz sam się zastanawiam w jaki sposób skoro właściwy init jest na sd)
Przemek |
|
|
|
obsy |
Dodano 12-05-2009 12:16
|

VIP

Posty: 5775
Dołączył: 31/10/2006 20:06
|
Przecież ruter nie odpala się z karty.
ZAWSZE odpala się z wewnętrznego flasha, w inicie (tym który zmodyfikowałeś na ruterze) następuje "podmiana" całego filesystemu na to co masz na karcie.
Więc jak widzisz - jeżeli z tym pierwotnym masz coś nie tak - nie uruchomi się. A masz takie problemy...
|
|
|
|
PrzemWas |
Dodano 24-05-2009 12:17
|

User

Posty: 44
Dołączył: 06/08/2008 07:36
|
Już wiem co robiłem nie tak, po prostu szedłem na łatwiznę i zmodyfikowany plik init tworzyłem za pomocą programu WinSCP. Tworząc go zgodnie z opisem za pomocą edytora VIM problem zniknął. Ruter odpala się z karty SD bez problemu.
Przemek |
|
|