1 (edytowany przez oneiro 2011-10-30 13:32:49)

Temat: [Extroot] Nie zapisuje ustawień w fstab

Witam,

Postanowiłem zainstalować extroota w 1043N. Postępuję zgodnie z http://eko.one.pl/?p=openwrt-externalroot z opcją swap.

W fstab zapisuje to:

    config 'global' 'automount'
        option 'from_fstab' '1'
        option 'anon_mount' '1'

    config 'global' 'autoswap'
        option 'from_fstab' '1'
        option 'anon_swap' '0'

    config 'mount'
        option 'fstype' 'ext4'
        option 'options' 'rw,noatime'
        option 'enabled_fsck' '0'
        option 'device' '/dev/sda2'
        option 'enabled' '1'
        option 'is_rootfs' '1'

    config 'swap'
        option 'device' '/dev/sda1'
        option 'enabled' '1'

Niestety, po zapisaniu pliku i wykonaniu restartu routera plik jest pusty hmm

Poniżej parę informacji

fdisk:

Command (m for help): p

Disk /dev/sda: 4011 MB, 4011851776 bytes
88 heads, 24 sectors/track, 3710 cylinders
Units = cylinders of 2112 * 512 = 1081344 bytes
Disk identifier: 0xc3072e18

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          60       63348   82  Linux swap / Solaris
/dev/sda2              61        3710     3854400   83  Linux

Montowanie ręcznie idzie bez problemu, a po restarcie urządzenia cały czas mam starą konfigurację, a plik /etc/fstab jest pusty.  Dodam, że po zapisie sprawdzam, czy zapisało plik i wygląda OK.

W pliku jest tylko:

# WARNING: this is an auto generated file, please use uci to set defined filesys       tems

CO się dzieje?

EDIT:

Pod adresem http://wiki.openwrt.org/doc/uci/fstab znajduje się takie oto info

In the OpenWrt 'Backfire' 10.03 release there is a bug. Solution is: vi /etc/init.d/fstab and put a # in front of the line:

echo '# WARNING: this is an auto generated file, please use UCI to set defined filesystems' > /etc/fstab

This creates the file /etc/fstab and thus prevents creating a symlink to /tmp/fstab. In order for UCI to work, there need to be symlink! In case the bug has already taken place, delete /etc/fstab and then type this code to busybox.

ln -s /tmp/fstab /etc/fstab

It will create a symlink to the /tmp/fstab file, fixing the bug completely.

Nie wiem tylko jak to rozumieć - skoro rozwiązaniem jest utworzenie linku do /tmp/fstab to po restarcie nic tam nie będzie! 
Z tego co rozumiem rozwiązaniem są tylko i wyłącznie polecenia UCI, będę walczył tak, choć nie lubię ich.

2

Odp: [Extroot] Nie zapisuje ustawień w fstab

Bo ma być pusty!

Instalujesz pakiety we flash (fstab w szczególności), tam robisz też zmiany i aktywację extroota. Po uruchomieniu extroot zastępuje pamieć flash, czyli znika wszystko co miałeś we flash - zainstalowane pakiety, ustawienia itd, nie widzisz tego. Wiec z punktu widzenia extroota ten plik znów będzie pusty.

Nie cytuj danych z backfire 10.03. To jest takie stare że zostało piętnaście razy poprawione i nijak ma się do współczesnych buildów. Chyba że z premedytacją zainstalowałeś 10.03 właśnie a nie nowsze wersje smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: [Extroot] Nie zapisuje ustawień w fstab

Poległem, ostatnim krokiem który zrobiłem to usunięcie /etc/fstaba i zrobienie:

# echo '# WARNING: this is an auto generated file, please use UCI to set defined filesystems' > /etc/fstab
# uci set fstab.@mount[0].target=''
# uci set fstab.@mount[0].device=/dev/sda2
# uci set fstab.@mount[0].fstype=ext4
# uci set fstab.@mount[0].options=rw,noatime
# uci set fstab.@mount[0].enabled=1
# uci set fstab.@mount[0].is_rootfs=1
# uci commit fstab
# reset  
# reboot 

Jest to ustawienie bez swapa, niestety, po restarcie nic się nie dzieje.....dalej po staremu hmm

PS. Po co polecenie reset po uci commit fstab?

4

Odp: [Extroot] Nie zapisuje ustawień w fstab

Sorki, nie zauważyłem Twojej odpowiedzi - już daję przepis jak to zrobić

1. Robimy linka symbolicznego do tmp.
2. Ustawiamy fstab przez uci
3. Kopiuję obecne /etc na mojego przyszłego rootfs
4. restart
5. Działa wszystko po staremu big_smile

PS. Żeby nie nampiesać - żeby dodać przez uci SWAP'a to co muszę zrobić -  uci set fstab.@mount[1] .xxxx   tj zamiast 0 dajemy 1?

5

Odp: [Extroot] Nie zapisuje ustawień w fstab

Nie. sekcja swap nie mount. zrób sobie uci show fstab to będziesz widział.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: [Extroot] Nie zapisuje ustawień w fstab

Zastanawia mnie jeszcze jedno:

root@OpenWrt:/dane$ uci show fstab
fstab.automount=global
fstab.automount.from_fstab=1
fstab.automount.anon_mount=1
fstab.autoswap=global
fstab.autoswap.from_fstab=1
fstab.autoswap.anon_swap=0
fstab.@mount[0]=mount
fstab.@mount[0].target=/mnt/sda99
fstab.@mount[0].device=/dev/sda99
fstab.@mount[0].fstype=ext3
fstab.@mount[0].options=rw,noatime
fstab.@mount[0].enabled=0
fstab.@mount[0].enabled_fsck=0
fstab.@mount[0].is_rootfs=0
fstab.@swap[0]=swap
fstab.@swap[0].device=/dev/sda1
fstab.@swap[0].enabled=1

Skoro rootfs mam jako ext4 to dalczzego wg uci mam ext3? W dodatku is_rootfs=0?

root@OpenWrt:/dane$ mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=14684k)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/sda2 on /overlay type ext4 (rw,noatime,barrier=1,data=ordered)
mini_fo:/overlay on / type mini_fo (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)

7

Odp: [Extroot] Nie zapisuje ustawień w fstab

Bo:
system plików zapisywalny w routerze to jffs. Tam zapisywane są zmiany, m.in to jak edytujesz fstab. Idea extroota to zastąpienie małego obszaru jfss zewnętrznym nośnikiem. Czyli jak masz extroota to NIE WIDZISZ tego co bylo w jffs tylko widzisz to co jest na extroocie. A że block-mount jest domyślnie w obrazie to po zrobieniu extroota widzisz jego domyślną postać.

Jak samo nie będziesz widział innych ustawień, zainstalowanych zmian i zmienionych plików.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: [Extroot] Nie zapisuje ustawień w fstab

Dobra, czaję baze

Proces bootowania jest taki (tj podejrzewam) , że kernel wywoływany jest z jakimś parametrem root=....... (być może wcześniej jest initrd) odwołujący się do systemu plików jffs. Tam system odczytuje fstaba'a (albo bardziej coś z uci) nakazujący mu instalację overlay na moją pamięć zewnętrzną (usb).

W takim razie, aby dodać swap muszę podmontować stary rootfs i pozmieniać tam, tak?

Problem jest taki, że /dev/mtd3 oraz /dev/mtdblock3 za chiny nie mogę podmotować (system plików jffs).  Ale nawet jakbym podmontował plik to co zmienić?  Skoro /etc/fstab i tak nie działa, to gdzie siedzi cała konfiguracja uci (bo siedzieć gdzieś musi).

9

Odp: [Extroot] Nie zapisuje ustawień w fstab

System plików jest jffs2 nie jffs. I nie, swap robisz już w tym nowym pliku fstab, starego nie ruszaj (tam tylko sam extroot).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez oneiro 2011-11-02 11:54:25)

Odp: [Extroot] Nie zapisuje ustawień w fstab

Jeszcze jedno
Chciałem usunąć oraz zmodyfikować pewne wartości przez uci - nie dało się, bo byty te informacje zapisane w /etc/config/fstab

Czyli jak coś jest pliku /etc/config/..... to polecenia uci nie działają na dane w pliku?

Przykładowo miałem w sekcji swap pliku fstab deklaracje option enable i chciałem ją usunąć (bo powinno być enabled) to się nie dało przez polecenia uci.

Czyli priorytety to plik, a później komendy uci (jeśli chodzi o modyfikacje).

11

Odp: [Extroot] Nie zapisuje ustawień w fstab

Jak najbardziej działają, przecięz uci tylko ustawia w /etc/config.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.