Temat: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

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

Kompilacja polskich pakietów NLS dla OpenWRT

0. Czym jest NLS?
1. Pobranie stabilnych źródeł Whiterussian 0.9
2. Dokonanie odpowiednich zmian w skryptach konfiguracji i kompilacji
3. Konfiguracja
4. Kompilacja

ad.0

NLS czyli Native Language Support to strony kodowania dla systemów plików w jądrze linuksa. W USA używa się kodowania ASCII, jednak ono obsługuje tylko alfabet używany w USA. By polskie ogonki prawidłowo się wyświetlały należy zastosować rozszerzonego zestawu znaków. Żeby nie było to zbyt proste istnieją 3, a nawet 4 strony kodowe zawierające polskie znaki:

IBM 852 (Latin II) - zestaw znaków używany w systemie DOS

Windows CP1250 - zestaw znaków używany w systemie MS Windows, jest całkowicie niekompatybilny z 852 (IMHO tylko 'ó' o 'Ó' pozostawało zgodne)

ISO 8859-2 - zestaw znaków najczęściej używany w Internecie oraz na alternatywnych do MS Windows systemach operacyjnych. Jest w 66,(6)% zgodny z CP1250, tj. inaczej kodowane są litery: 'ą', 'ś' i 'ź' oraz 'Ą', 'Ś' i 'Ź'.

UTF8 - najbardziej zalecany, zawierający kodowanie wszystkich znaków alfabetów używanych na Ziemi. Jednak jest on znacznie bardziej skomplikowany od ww. Tu znaki z zestawu ASCII są kodowane za pomocą jednego znaku, tak samo jak w ASCII. Natomiast znaki nie występujące w ASCII są kodowane za pomocą od dwóch do czterech znaków. Stąd dokument zajmuje trochę więcej miejsca na dysku, ale będzie prawidłowo wyświetlany w każdym systemie obsługującym UTF8. Niestety nie wszystkie systemy obsługują UTF8. Zalicza się do nich Samba 2.x, stąd potrzeba napisania tego artykułu.

W oficjalnych repozytoriach znajdują się jedynie pakiety z kodowaniem UTF8 i kodowaniem dla Europy Zachodniej: 850 i ISO 8859-1.

ad.1

Stabilne źródła Whiterussian 0.9 najlepiej pobrać z repozytorium SVN:

$ svn co https://svn.openwrt.org/openwrt/branches/whiterussian/

Po wykonaniu tej operacji w katalogu ./whiterussian/openwrt mamy ściągnięte źródła.


ad.2

Obiektem naszych zainteresowań będą pliki:

openwrt/target/linux/linux-2.4/config/brcm
openwrt/target/linux/linux-2.4/Makefile
openwrt/target/linux/Config.in

Oraz pliki:

openwrt/target/linux/control/kmod-nls-cp852.control
openwrt/target/linux/control/kmod-nls-iso8859-2.control
openwrt/target/linux/control/kmod-nls-cp1250.control

Których jeszcze nie ma więc zaczniemy od ich stworzenia, ale najpierw co one oznaczają?
Są to pliki które zawierają tylko nazwę pakietu z modułem kernela, jego opis, sekcję w której się znajduje i priorytet (tzn. czy ma być domyślnie zaznaczony).
Zawartość plików:

kmod-nls-iso8859-2.control

Package: kmod-nls-iso8859-2
Priority: optional
Section: sys
Description: Kernel module for ISO 8859-2 (Latin 2)

kmod-nls-cp852.control

Package: kmod-nls-cp852
Priority: optional
Section: sys
Description: Kernel module for NLS Codepage 852 (Central Europe)

kmod-nls-cp1250.control

Package: kmod-nls-cp1250
Priority: optional
Section: sys
Description: Kernel module for Windows Codepage 1250 (Central Europe)

Konfiguracja pliku openwrt/target/linux/linux-2.4/config/brcm. Jest to po prostu plik .config jądra z OpenWRT. Należy w nim dopisać lub odhashować te linijki:

CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_ISO8859_2=m

Ważną rzeczą jest zmodyfikowanie pliku: openwrt/target/linux/linux-2.4/Makefile
Zawiera ona skrypty budowania pakietów ipkg. W pliku Makefile należy odszukać miejsce, w którym jest skrypt np. do CODEPAGE_850 (linijka 221) i wkleić po nim (za linijką 223):

$(eval $(call KMOD_template,NLS_CP852,nls-cp852,\
    $(MODULES_DIR)/kernel/fs/nls/nls_cp852.o \
,CONFIG_NLS_CODEPAGE_852,,40,nls_cp852.o))
$(eval $(call KMOD_template,NLS_CP1250,nls-cp1250,\
    $(MODULES_DIR)/kernel/fs/nls/nls_cp1250.o \
,CONFIG_NLS_CODEPAGE_1250,,40,nls_cp1250.o))
$(eval $(call KMOD_template,NLS_ISO8859_2,nls-iso8859-2,\
    $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-2.o \
,CONFIG_NLS_ISO8859_2,,40,nls_iso8859-2.o))

Plik openwrt/target/linux/Config.in jest dla konfiguratora OpenWRT. Należy w nim dopisać informacje o modułach:

config BR2_PACKAGE_KMOD_NLS_CP852
    tristate "Codepage 852 (Central Europe)"
    default m
    help
      Kernel module for NLS Codepage 852 (Central Europe)

config BR2_PACKAGE_KMOD_NLS_CP1250
    tristate "Codepage 1250 (Central Europe)"
    default m
    help
      Kernel module for Windows Codepage 1250 (Central Europe)

config BR2_PACKAGE_KMOD_NLS_ISO8859_2
    tristate "ISO 8859-2 (Latin 2; Central European Languages)"
    default m
    help
      Kernel module for ISO 8859-2 (Latin 2)

Te linijki najlepiej wkleić gdzieś pod 340 linijką, gdzie jest o kodowaniach 850 i ISO 8859-1.


ad. 3

Wchodzimy do katalogu ./whiterussian/openwrt (por. ad 1.) i uruchamiamy:

$ make menuconfig

Możemy tam dokonać różnych zmian, które właściwie są zbędne ponieważ w pliku openwrt/target/linux/Config.in daliśmy wszędzie "default m". Wychodzimy z zapisaniem zmian w konfiguracji.


ad. 4

Pozostaje nam tylko skompilować źródła. Będąc w katalogu ./whiterussian/openwrt (por. ad 1.) wydajemy polecenie:

$ make

Potrwa to kilka godzin w zależności od szybkości komputera i łącza internetowego. Skrypt sam ściągnie potrzebne źródła jądra linuksa i toolchain. Po udanej kompilacji w katalogu ./whiterussian/openwrt/bin/packages znajdują się wszystkie skompilowane pakiety, w tym gotowe do instalacji nasze:

kmod-nls-cp1250_2.4.30-brcm-5_mipsel.ipk
kmod-nls-cp852_2.4.30-brcm-5_mipsel.ipk
kmod-nls-iso8859-2_2.4.30-brcm-5_mipsel.ipk

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

2

Odp: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

Jak najbardziej. I wystaw gdzieś pakiety, to zaoszczędzisz pracy innym.

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

3

Odp: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

Pakiety i wersja txt howto są pod adresem:
http://spawarka.kni.pk.edu.pl/~dzwiedziu/openwrt/

4

Odp: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

Już dodałem do openwrt.pl (http://openwrt.livenet.pl/doku.php/down … iterussian)

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

5

Odp: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

A ja całe to HOWTO wrzuciłem na wiki: http://openwrt.livenet.pl/doku.php/software:nls

6

Odp: [HOWTO] Kompilacja polskich NLS (kodowanie ogonków w systemach plików)

Dźwiedziu napisał/a:

A ja całe to HOWTO wrzuciłem na wiki: http://openwrt.livenet.pl/doku.php/software:nls

poprawiłem błędny link na OpenWrt.pl cp-1250 wskazywał na pakiet iso-8859-2