Artykuł ten opisuje jak wgrać GargoylePL (OpenWRT) w wersji Attitude Adjustement (wersja trunk, niestabilna) na router TP-Link TL-WR1043ND oraz jak skonfigurowac dodatkowe usługi jak ExtRoot.
Przyjmuje założenie że umiesz obsługiwać programy PuTTY i WinSCP. W razie problemów, zobacz mój poprzedni poradnik.
Stan na Luty 2013

1. Poptrzebne programy:

PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/
WinSCP: http://winscp.net/

2. Ściągamy odpowiedni plik z firmware

Strona GargoylePL bazująca na AA http://eko.one.pl/?p=openwrt-gargoylepl
pliki można pobrac tutaj: http://ecco.selfip.net/gargoyle-pl/attitude_adjustment/ar71xx/

a) Jeżeli startujemy z oryginalnego firmware to pobieramy:
gargoyle-1.5.9.3-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin

Po czym logujemy się do routera, wybieramy aktualizacja firmware i wskazujemy pobrany plik i aktualizujemy.

Przechodzimy do punktu 3.

b) Jeżeli już mamy OpenWRT na routerze to pobieramy plik:
gargoyle-1.5.9.3-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin

Za pomocą WinSCP kopiujemy pobrany plik na router do katalogu /tmp.

Logujemy się przez PuTTY, wchodzimy do katalogu tmp i wgrywamy soft:

cd /tmp
sysupgrade -n gargoyle-1.5.9.3-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin

gdzie -n oznacza nie zapisuj ustawień, opcje tą można pominąć ale może to spowodować problemy z działaniem nowego softu. Lepiej wyczyścić konfiguracje.

Jeżeli nie chcesz wpisywać całej nazwy pliku ręcznie, zacznij pisać gargoyle i wciśnij klawisz [Tab], nazwa sama się uzupełni.

Pojawi się:

Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...
Writing from <stdin> to firmware ... [w]

Po czym nastąpi restart.

3. Podstawowa konfiguracja na pamieci wewnętrznej

Wszystkie ustawienia zostały zresetowane więc teraz logujemy się na 192.168.1.1.
Domyślne hasło to: password
Zaraz po zalogowaniu zostaniesz poproszony o podanie nowego hasła i strefy czasowej.

Skonfiguruj router tak aby mieć dostep do internetu. To będzie nasza zapasowa konfiguracja w razie uszkodzenia ExtRoota.

4. Przygotowanie do obslugi ExtRoot

Logujemy się przez PuTTY i wykonujemy:

opkg update
opkg remove plugin-gargoyle-usb-storage

uci del gargoyle.display.system_usb_storage
uci del gargoyle.scripts.system_usb_storage
uci del gargoyle.system.usb_storage
uci commit gargoyle

opkg install block-mount
/etc/init.d/fstab enable
reboot

Dodatkowe informacje:
Gargoyle - montowanie zasobów
OpenWrt - Extroot: więcej pamięci na instalację pakietów


5. Przygotowanie pamięci USB, tworzenie partycji

Założeniem moim jest przeniesienie systemu na pendrive o pojemności 1GB (982MB).
Zostaną utworzone na nim dwie partycje:
/sda1 - 800MB Ext4 (system)
/sda2 - 183MB Linux Swap (jako swap)

Logujemy się przez PuTTY, i wpisujemy:

dmesg

Wkładamy pendrive do USB i ponownie wpisujemy dmesg.
W stosunku do poprzedniego logu powinno być kilka nowych wierszy:

[  262.960000] usb 1-1.1: new high-speed USB device number 3 using ehci-platform
[  263.090000] scsi0 : usb-storage 1-1.1:1.0
[  264.100000] scsi 0:0:0:0: Direct-Access     Generic  STORAGE DEVICE   9407 PQ: 0 ANSI: 0
[  264.540000] sd 0:0:0:0: [sda] 2012160 512-byte logical blocks: (1.03 GB/982 MiB)

Najważniejszy jest ten ostatni. Informuje nas że dysk został podpięty jako sda i ma pojemność 982MB.

5.1 Kasujmy wszystkie partycje

Aby ustawić partycje skorzystamy z wbudowanego fdiska.

fdisk /dev/sda

Kasujemy wszystkie partycje poleceniem "d - delete a partition" :

Command (m for help): d
Partition number (1-4): 1

Powtarzamy kasowanie aż wynik polecania "p print the partition table" będzie taki:

Command (m for help): p
Disk /dev/sda: 1030 MB, 1030225920 bytes
32 heads, 62 sectors/track, 1014 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes
Disk identifier: 0x000e6c88

Device Boot Start End Blocks Id System

Czyli nie mamy żadnych partycji.

5.2 Tworzymy nowe partycje

Ustawiamy pierwszą partycje na 800MB:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1014, default 1): tu wciśnij sam enter
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1014, default 1014): +800M

i drugą na resztę przestrzeni:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (801-1014, default 801): tu wciśnij sam [enter]
Using default value 801
Last cylinder or +size or +sizeM or +sizeK (801-1014, default 1014): tu wciśnij sam [enter]
Using default value 1014

Jeszcze tylko trzeba zmienić typ partycji /dev/sda2 na Swap:

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

Finalnie p powinno dać taki rezultat:

Command (m for help): p
Disk /dev/sda: 1030 MB, 1030225920 bytes
32 heads, 62 sectors/track, 1014 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes
Disk identifier: 0x000e6c88

Device Boot Start End Blocks Id System
/dev/sda1 1 800 793569 83 Linux
/dev/sda2 801 1014 212288 82 Linux swap

Na koniec użyjemy "w write table to disk and exit":

Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.

5.3 Formatowanie partycji

Pierwsza partycja będzie partycją systemową formatujemy ją do Ext4:

mkfs.ext4 /dev/sda1

druga to swap

mkswap /dev/sda2
Setting up swapspace version 1, size = 217378816 bytes
UUID=b06b0156-0a66-4608-84a9-5009d08cd64e

6. Dodanie znacznika startu

Aby bezproblemowo rozróżnić po zalogowaniu z jakiego nośnika wystartował system dodamy do pliku banner komunikat o typie pamięci.

echo Booted from INTERNAL rom >> /etc/banner

7. Konfiguracja fstab

W tym przykładzie partycje będą montowane po znaczniku UUID ponieważ przy kilku dyskach w systemie jest to bezpieczniejsze niż podanie ścieżki /dev/sda. Może się tak zdażyć że dysk /dev/sdb zostanie wykryty jako /dev/sda i wtedy system nie uruchomi się z extroot.

Pobieramy znacznik UUID partycji (u każdego będą inne, nie kopiuj tych znaczników z poradnika!):

root@Gargoyle:~# blkid
/dev/mtdblock2: TYPE="squashfs"
/dev/sda1: UUID="4edaf212-acad-46ff-a371-873ae5a758eb" TYPE="ext4"
/dev/sda2: UUID="148ab4de-a76a-421a-bda5-4a077d3c38a1" TYPE="swap"

Za pomoca WinSCP edytujemy plik /etc/config/fstab, zmieniamy sekcje config mount na:

config mount
    option target    /overlay
    #option device    /dev/sda1
    option uuid 4edaf212-acad-46ff-a371-873ae5a758eb
    option fstype    ext4
    option options    rw,noatime
    option enabled    1
    option enabled_fsck 1

zapisujemy i restartujemy router:

reboot

8. Pierwsze uruchomienie ExtRoot

Jeżeli wszystko się powiodło to router wystartował z czystą konfiguracją, trzeba go jeszcze raz skonfigurować.
IP: 192.168.1.1
Domyślne hasło to: password
Zaraz po zalogowaniu zostaniesz poproszony o podanie nowego hasła i strefy czasowej.
Skonfiguruj router tak aby mieć dostep do internetu.

Łączymy sie przez PuTTY (oznaką udanej operacjibędzie tez komunikat o niezgodnosci kluczy, wybieramy - aktualizuj) i dodajemy znacznik startu:

echo Booted from ExtROOT >> /etc/banner

9. SWAP

Ponieważ na extroot mamy czysty system, wykonujemy ponownie polecenia z punktu: 4 Przygotowanie do obslugi ExtRoot

Modyfikujemy /etc/config/fstab w sekcji config swap:

config swap
#option device /dev/sda2
option uuid 148ab4de-a76a-421a-bda5-4a077d3c38a1
option enabled 1

Pamiętaj że UUID musi odpowiadać twojemu sprzętowi, sprawdzasz go wpisując blkid.

Restartujemy router:

reboot

Jeżeli wszystko się powiodło to po restarcie polecenie free powinno zwrócić coś podobnego:

root@Gargoyle:~# free
             total         used         free       shared      buffers
Mem:         61680        27572        34108            0         4448
-/+ buffers:              23124        38556
Swap:       212284            0       212284

Ważna jest pozycja Swap total jeżeli jest tam zero to swap nie działa.

10. Podłaczamy dysk na dane

W moje konfiuracji użylem Pendrive jako dysk systemowy i osobno dysk twardy na dane.
Wszystko to podłaczone przez Hub USB aktywny z zasilaczem 5V 1A

10.1 Wykrywanie dysku

Podobnie jak w punkcie 5. Przygotowanie pamięci USB, tworzenie partycji wykonujemy dmesg, podpinamy dysk i ponownie wykonyjemy dmesg, resultat:

[  415.590000] usb 1-1.2: new high-speed USB device number 4 using ehci-platform
[  415.700000] scsi1 : usb-storage 1-1.2:1.0
[  416.710000] scsi 1:0:0:0: Direct-Access     SAMSUNG  HM641JI               PQ: 0 ANSI: 2
[  416.730000] sd 1:0:0:0: [sdb] 1250263728 512-byte logical blocks: (640 GB/596 GiB)

Dysk został podpięty jako sdb.

10.2 Konfiguracja partycji

Uruchamiamy fdisk:

fdisk /dev/sdb

Kasujemy wszystkie partycje poleceniem "d - delete a partition" :

Command (m for help): d
Partition number (1-4): 1

Tworzymy jedną partycje na cały dysk:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-57231, default 1): [enter]
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-57231, default 57231): [enter]
Using default value 57231

Command (m for help): w
The partition table has been altered!

10.3 Formatowanie dysku

Formatujemy partycje jako ext4:

mkfs.ext4 /dev/sdb1

Jeżeli pojawi się błąd:

mke2fs 1.41.11 (14-Mar-2010)
/dev/sdb1 is mounted; will not make a filesystem here!

Należy odmontować dysk poleceniem:

umount /dev/sdb1

i ponowie spróbować sformatować dysk. W zależnośic od rozmiaru dysku to może trochę potrwac.

10.4 Konfiguracja fstab

Wykonujemy blkid i idczytujemy wartośc dla sdb1.

root@Gargoyle:~# blkid
/dev/mtdblock2: TYPE="squashfs"
/dev/sda1: UUID="4edaf212-acad-46ff-a371-873ae5a758eb" TYPE="ext4"
/dev/sda2: UUID="148ab4de-a76a-421a-bda5-4a077d3c38a1" TYPE="swap"
/dev/sdb1: UUID="65ac2b0d-5a46-452f-8310-3ec8a75f56a9" TYPE="ext4"

Za pomoca WinSCP edytujemy /etc/config/fstab w sekcji config mount na:

config mount
    option target    /mnt/hdd1
    # option device    /dev/sda1 ## Dysk w kieszeni USB ##
    option uuid 65ac2b0d-5a46-452f-8310-3ec8a75f56a9
    option fstype    ext4
    option options    rw,sync
    option enabled    1
    option enabled_fsck 1

Opcja option enabled_fsck 1 włacza skanowanie w poszukiwaniu błedów na dysku, wykonywana jest co zadany okres czasu lub ilość uruchomień.
 

restartujemy router:

reboot

Jezeli wszystko jest dobze to nasz dysk będzie dostepny pod /mnt/hdd1

10.5 Usypianie dysku w czasie bezczynnosci - hd-idle.

Instalujemy hd-Idle:

opkg update
opkg install hd-idle

Konfigurujemy parametry w pliku /etc/config/hd-idle tak aby dysk /dev/sdb wyłączał się po 10 minutach bezczynności:

config 'hd-idle'
    option 'disk' 'sdb'
    option 'enable_debug' '0'
    option 'enabled' '1'
    option 'idle_time_unit' 'minutes'
    option 'idle_time_interval' '10'

Uruchamiamy program poleceniem:

/etc/init.d/hd-idle enable
/etc/init.d/hd-idle start

Aby sprawdzić czy proces wystartował trzeba wpisać:

ps|grep hd-idle
 3481 root       776 S    /usr/bin/hd-idle -a sdb -i 600
 3486 root      1496 S    grep hd-idle

Pierwsza linia pokazuje że program wystartował z zadanymi parametrami.

Natychmiastowe wyłącznie dysku, przydatne w celu sprawdzenia czy program działa z naszym dyskiem:

hd-idle -t sdb

11. Udostępniamy zasoby SAMBA

Musimy przeinstalowac sambę aby pozbyć się zależności od Gargoyle.

11.1 Reinstalacja serwera

opkg update
opkg remove samba36-server
opkg install samba36-server

11.2 Konfiguracja dzielenia zasobów

Edytujemy teraz /etc/config/samba:

Przykładowa konfiguracja udostępnianna fodlery foto:

config sambashare
    option 'name'            'Foto'
    option 'path'            '/mnt/hdd1/foto'
    option 'read_only'        'no'
    option 'guest_ok'        'no'
    option 'create_mask'        '0666'
    option 'dir_mask'        '0777'
    #option 'users'        'abc'

11.3 Dodanie autoryzowanych użytkowników

Uzytkowników dodaje się przez polecenie:

smbpasswd -a nazwaUżytkownika
New SMB password:
Retype SMB password:


12. Przydatne komendy

Przydatne polecenia:
dmesg – wyświetla log kernela
logread – wyświetla log systemowy

mount – pokazuje zamontowane dyski
df -h – pokazuje ilość przestrzeni na dyskach
free – pokazuje ilość pamięci
disktype /dev/sda - informacje o dysku

 

 

 

 

   
© Paweł Woźniak