Temat: [HOWTO] Dysk USB na FAT32 i polskie znaki w Sambie

Jako że sam nie mogłem za chiny znaleźć pakietu ani instrukcji jak to zrobić, postanowiłem sam rozkminić co mi się szczęśliwie udało więc wiedzą tą chciał bym się podzielić ze światem smile

OpenWRT, dysk USB na FAT32 i polskie znaki w Sambie

Problem:
- Dysk podpięty do portu USB routera ASUS WL-500G Premium z partycjami FAT32
- Stabilna paczka Samba 2.0.10 nie obsługuje kodowania UTF8, co najwyżej ISO8859-2
- Brak oficjalnej paczki NLS dla ISO8859-2


Rozwiązanie:

Zakładam, że Samba 2.0.x jest zainstalowana na routerze oraz dysk USB jest podpięty i podmontowany.

W skrócie:
1. Zainstalować paczkę z kodowaniem ISO8859-2
2. Podmontować dyski z parametrem -o iocharset=iso8859-2
3. Ustawić w Sambie: character set = ISO8859-2 i client code page = 852


ad.1

Ponieważ Samba 2.x nie posiada wsparcia dla UTF8 w celu uzyskania polskich znaków konieczne jest podmontowanie partycji z kodowaniem ISO8859-2. Tu pojawia się kolejny problem, ponieważ w oficjalnym repozytorium pakietów niema paczki z tym kodowaniem. Skompilowałem odpowiednią paczkę pod Whiterussian 0.9. O tym jak to zrobiłem w osobnym FAQ pt. Kompilacja polskich NLS (kodowanie ogonków w systemach plików).

Instalacja paczki z kodowaniem ISO8859-2:

# ipkg install http://spawarka.kni.pk.edu.pl/~dzwiedziu/openwrt/packages/kmod-nls-iso8859-2_2.4.30-brcm-5_mipsel.ipk

Po zainstalowaniu paczki, należy zrestartować router:

# reboot

ad.2

O podłączaniu i montowaniu dysku USB jest tu: http://openwrt.livenet.pl/doku.php/hardware:usbhdd więc nie będę wklejał treści tam zawartych. Napiszę tylko, że dla przykładu jeżeli montujemy dysk poleceniem:

# mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/disc0_1

Należy je zmienić na:

# mount -o iocharset=iso8859-2 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/disc0_1

Parametr -t jest bardzo rzadko wymagany. Zwykle mount sam rozpoznaje system plików. Co do artykułu zamieszczonego pod http://openwrt.livenet.pl/doku.php/hardware:usbhdd mam tylko jedną uwagę:
Przedstawiony tam skrypt montowania partycji przy starcie i umieszczony pod /etc/init.d/S11mount u mnie nie działał.
Po pierwsze, wykonywał się przed załadowaniem zmiennej środowiskowej PATH więc trzeba było zmienić mount na /bin/mount.
Po drugie, S11... to trochę za wcześnie, efekt był taki że potem coś odmontowywało dyski i podmontowywało je znów po swojemu. Skrypty startowe są wykonywane w kolejności alfabetycznej. Dlatego dla przykładu S11xxx wykona się przed S12xxx. Pomogła zmiana nazwy na S89mount, Samba ma u mnie S98samba.

A oto cały mój skrypt: /etc/init.d/S89mount

#!/bin/sh
#
# mount script
#
/bin/umount /mnt/disc0_1
/bin/umount /mnt/disc0_5
/bin/mount -o iocharset=iso8859-2 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/disc0_1
/bin/mount -o iocharset=iso8859-2 /dev/scsi/host0/bus0/target0/lun0/part5 /mnt/disc0_5

Uwaga! Jeżeli ktoś używał pakietów instalowanych na dysku USB i używają one skryptów startowych, niech się one wykonują po montowaniu dysków!


ad.3

O konfiguracji Samby jest cały artykuł tu: http://openwrt.livenet.pl/doku.php/software:nas#samba
Napiszę tylko by do sekcji [Global] dopisać linijki:

character set = ISO8859-2
 client code page = 852

A oto cały plik /etc/samba/smb.conf który u mnie działa wyśmienicie:

[global]
 syslog = 0
 syslog only = yes
 workgroup = DOM
 server string = ASUS WL-500G Premium
 security = share
 encrypt passwords = yes
 guest account = nobody
 local master = yes
 name resolve order = lmhosts hosts bcast
 wins support = yes
 os level = 65
 character set = ISO8859-2
 client code page = 852

[C]
 comment = C na dysku USB
 path = /mnt/disc0_1
 browseable = yes
 public = yes
 writeable = no

[D]
 comment = D na dysku USB
 path = /mnt/disc0_5
 browseable = yes
 public = yes
 writeable = no

Może po poprawieniu i uściśleniu co niejasne wrzucić to na http://openwrt.pl/ ?

2

Odp: [HOWTO] Dysk USB na FAT32 i polskie znaki w Sambie

Dokonałem kilka zmian na openwrt.pl. Przy podpinaniu dysku USB dopisałem instrukcje instalacji pakietu zawierającego ISO 8859-2 oraz instrukcję montowania dysku FAT32. Na stronie o instalacji Samby poprawiłem przykładowy plik smb.conf dopisując:
character set = ISO8859-2
client code page = 852