[OpenBSD]

[Spis treści] [Sekcja 7 - Ustawienia klawiatury i wyświetlania] [Sekcja 9 - Migracja na OpenBSD]

8 - Pytania ogólne


Spis treści


8.1 - Zapomniałem hasła superużytkownika... Co robić?

Na ustawienie nowego hasła pozwolą następujące czynności:

  1. Uruchomienie komputera w trybie jednego użytkownika (ang. single user mode). Na architekturze i386, po pojawieniu się znaku zachęty programu ładującego należy wpisać "boot -s".
  2. Zamontowanie partycji /.
    # fsck -p / && mount -uw /
  3. Jeśli /usr jest umiejscowione na innej partycji niż / (a tak właśnie powinno być), konieczne będzie zamontowanie także tego systemu plików.
    # fsck -p /usr && mount /usr
  4. Zmiana hasła narzędziem passwd(1).
  5. Ponowne uruchomienie w trybie wielu użytkowników (ang. multiuser mode)... i zapamiętanie nowego hasła użytkownika root!!!

8.2 - X Window nie uruchamia się; zamiast tego wyświetlanych jest mnóstwo komunikatów o błędach

Jeśli X Window jest poprawnie zainstalowany oraz używany jest wcześniej przygotowany i sprawdzony plik XF86Config, to problem najprawdopodobniej tkwi w zmiennej machdep.allowaperture. Należy upewnić się, że w pliku konfiguracyjnym jądra włączona jest opcja:

option APERTURE

(jest ona ustawiona w jądrze GENERIC).

Jeśli tak, wystarczy ustawić w pliku /etc/sysctl.conf zmienną machdep.allowaperture=2. Dzięki temu XFree86 będzie miał dostęp do sterownika aperture. Podczas instalacji systemu pojawia się pytanie, czy X Window będzie używane; odpowiedź twierdząca spowoduje prawidłowe ustawienie tej zmiennej. OpenBSD wymaga sterownika aperture dla każdego X serwera, dzięki czemu może kontrolować podsystem wejścia/wyjścia (ang. I/O) karty graficznej.

W przypadku innych problemów z X Window na platformie i386, pomocna może okazać się dokumentacja zamieszczona na stronie projektu XFree86: http://www.xfree86.org/support.html. Więcej informacji na temat konfiguracji i użytkowania X na twojej platformie znajdziesz w pliku /usr/X11R6/README twojego systemu.

8.3 - Czy mogę korzystać z języka programowania "L" w OpenBSD?

Możesz znaleźć wsparcie dla wielu powszechnych języków programowania albo w systemie bazowym (a mówiąc dokładniej w pakietach baseXX.tgz oraz compXX.tgz), lub w systemie portów i pakietów. Zalecane jest abyś zainstalował zestaw plików lub pakiet zawierający kompilator którego chcesz użyć zamiast kompilowania go ze źródeł. W przypadku niektórych kompilatorów, kompilacja ze źródeł wymaga sporych zasobów systemowych i nie jest zazwyczaj potrzebna, o ile nie masz specjalnych potrzeb lub nie istnieje taki pakiret.

Zamieszczona poniżej tabela w zamierzeniu ma pokazać przegląd kompilatorów dla różnych języków, gdzie możesz znaleźć kompilator, oraz czy istnieją jakieś ograniczenia lub zagadnienia z nim związane. Niektóre z nich są ograniczone do konkretnych platform. Możesz także zobaczyć podobne zestawienie przeglądając rezultat przeszukiwania drzewa portów pod kątem wpisów nie zawierających "Archs", lub poprzez ręczne przeszukanie pliku Makefile drzewa portów. W drugim przypadku, szukaj linii zawierających ONLY_FOR_ARCHS, NOT_FOR_ARCHS, BROKEN, itd.

Uwaga: Aby można było łatwiej korzystać z tabeli, jest ona posortowana alfabetycznie bez rozpatrywania różnych kategorii języków programowania. Nie jest to pełna lista wszystkiego co jest dostępne lub może być wykorzystane w OpenBSD. Jeżeli uważasz że istnieją niescisłości lub pewne zagadnienia nie wspomniane w tabeli możesz to zgłosić.

JęzykLokalizacjaUwagi
Awk base38.tgz, awk(1)
lang/gawk GNU awk
C, C++ comp38.tgz, gcc(1) Kompilatory C/C++ zawarte w systemie bazowym zostały poddane audytowi i posiadają kilka rozszerzeń bezpieczeństwa (tj. ProPolice) włączonych domyślnie. Prosimy zobacz gcc-local(1) po więcej szczegółów. Będą także emitowały ostrzeżenia w sytuacjach wykorzystania niebezpiecznych funkcji takich jak sprintf(), strcpy(), strcat(), tmpnam, itd. Zauważ, że większość platform korzysta z gcc 3.3.5, lecz niektóre z 2.95.3.
C, C++ lang/gcc Kompilatory te nie przechodzą audytu bezpieczeństwa i nie zawierają rozszerzeń w zakresie bezpieczeństwa jak te w systemie bazowym. Kompilatory te nazywają się egcc, eg++, itd, aby uniknąć zamieszania z ich odpowiednikami w systemie bazowym.
Caml lang/ocaml Objective Caml
COBOL lang/open-cobol
Fortran comp38.tgz, g77(1) Wspierany jest tylko Fortran 77.
lang/gcc Wspierany jest także Fortran 95 poprzez egfortran w gcc 4.0 i wyższych. Ten nowy kompilator jest dostępny jako podpakiet gcc (g95).
Haskell lang/ghc
lang/nhc98
Java devel/jdk Sun JDK - nie są dostępne pakiety; zobacz sekcję dotyczącą kompilacji poniżej.
lang/jikes Szybki kompilator, działa dobrze. Wymaga "run-time jar", wersja bytecode wszystkich standardowych API.
devel/eclipse Duży IDE; działa z Sun JDK.
Lua lang/lua Dodatkowe biblioteki Lua i pomocnicze narzędzia są dostepne w drzewie portów.
Perl base38.tgz, perl(1) Wiele modułów Perl'a jest dostępna w drzewie portów, zatem zacznij szukać tam, zamin rozpoczniesz instalację modułów z CPAN.
PHP www/php4 Dostępne jest mnóstwo podpakietów dla różnych modułów PHP.
www/php5
Prolog lang/gprolog GNU Prolog compiler.
Python lang/python Other ports are using Python 2.3 by default.
Ruby lang/ruby
Scheme lang/scm
Smalltalk lang/squeak
Tcl lang/tcl

Budowanie Sun JDK

Ze względu na restrykcyjną licencję SCSL, OpenBSD nie może dostarczać binarnych pakietów dla JDK. Oznacza to że będziesz zmuszony zbudować je z portów. Zwracamy uwagę, że do tego celu wymagana jest duża ilość pamięci RAM by kompilacja zakończyła się sukcesem.

Porty JDK znajdują się w podkatalogu devel/jdk drzewa portów. Możesz wybierać pomiędzy różnymi wersjami, każda znajduje się w osobnym podkatalogu. Tylko wersje 1.3 i 1.4 zawierają wtyczkę do przedlądarki. Gdy wpiszesz make pojawi się wiadomość prosząca się o ręczne pobranie plików źródłowych ze stony Sun'a. Zanim to zrobisz, będziesz się musiał zarejestrować na tej stronie, i wyrazić zgodę na warunki licencji. Z tego właśnie powodu nie może nastąpić automatyczne pobranie.

Gdy już zdobędziesz niezbędne pliki dystrybucyjne i zestaw łat, skopiuj je do katalogu /usr/ports/distfiles i rozpocznij tworzenie wydając polecenie make w odpowiednim podkatalogu drzewa portów.

JDK wymaga działającego kompilatora Java 2 jako podstawy do kompilacji. Z tego powodu port korzysta z linuksowej wersji JDK. Jeżeli czujesz że to nie jest fair, powinieneś spytać firmę Sun, dlaczego nie dostarczają natywnej wersji dla OpenBSD. Emulacja linuksa w OpenBSD jest ograniczona do systemów i386, zatem JDK skompiluje się tylko na platformie i386. Budowa portów powinna zadbać o zainstalowanie właściwych plików i ustawienie kern.emul.linux=1. Więcej informacji dotyczącej emulacji linuksa znajdziesz na stronie manuala compat_linux(8), a także w FAQ 9 - Uruchamianie aplikacji linuksowych w OpenBSD. Zwróć uwagę, że emulacja linuksa jest potrzebna tylko podczas budowy JDK, która daje natywną wersję JDK dla OpenBSD. Nie potrzebujesz emulacji linuksa by pracować z natywną wersją JDK.

Po wielu godzinach, kompilacja się zakończy. Po prostu kontynuuj wpisując make install by zainstalować JDK.

Inne narzędzia rozwojowe

Dodatkowo, istnieje znacznie więcej narzędzi rozwojowych dostępnych w systemie bazowym lub poprzez system portów i pakietów. Kilka przykładów:

8.4 - Co to są porty?

Proszę przeczytaj FAQ 15, Praca z portami.

8.5 - Co to są pakiety?

Proszę przeczytaj FAQ 15, Zarządzanie pakietami.

8.6 - Czego używać - portów czy pakietów?

Proszę przeczytaj FAQ 15.

8.8 - Czy można wykorzystać stację dyskietek, która nie była podłączona podczas rozruchu systemu?

Konieczne będzie takie skonfigurowanie jądra żeby zakładał, że stacja dysków jest przyłączona, nawet jeśli nie zostanie ona wykryta przy starcie systemu. Można to osiągnąć przez ustawienie flagi na wartość 0x20 w przy użądzeniu fdc(4). Przydatny może być tutaj User Kernel Config lub po prostu ustawienie tej flagi na stałe podczas konfiguracji jądra. Korzystając z UKC operacja ta będzie wyglądać tak:

# config -e -f /bsd
OpenBSD 3.8 (GENERIC) #138: Sat Sep 10 15:41:37 MDT 2005
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> change fd*
245 fd* at fdc0 drive -1 flags 0x0
change [n] y
drive [-1] ? ENTER
flags [0] ? 0x20
245 fd* changed
245 fd* at fdc0 drive -1 flags 0x20
ukc> q

Saving modified kernel.
#

8.9 - Program ładujący OpenBSD (tylko i386 i amd64)

Podczas rozruchu systemu OpenBSD pojawia się następujący znak zachęty.

boot>

Jeżeli użytkownik nie zaingeruje, jądro zostanie załadowane automatycznie. Czasem jednak pojawiają się problemy lub zachodzi konieczność podania specjalnych opcji dla jądra. W tym właśnie momencie można podać jedną z nich. Przygodę z programem ładującym najlepiej rozpocząć od lektury strony podręcznika systemowego boot(8). Tutaj zademonstrujemy tylko kilka najczęściej używanych polecenień programu ładującego.

Podczas normalnego startu, jeśli nie zostaną podane inne opcje, program ładujący próbuje uruchomić jądro skompilowane w pliku /bsd. Jeśli to się nie powiedzie poszuka pliku /obsd, a następnie /bsd.old. Można samodzielnie podać nazwę kernela, który ma zostać uruchomiony:

boot> boot hd0a:/bsd
lub
boot> b /bsd

Ten przykład zadziała jeśli kernel bsd będzie znajdował się na partycji 'a' na pierwszym twardym dysku rozpoznanym przez BIOS.

Oto krótka lista opcji, których można użyć podczas startu jądra OpenBSD.

Składnia dla polecenia boot jest następująca: boot [ plik_jądra [-acds]]

Szczegółowy opis zawiera strona podręcznika systemowego boot(8).

8.10 - OpenBSD i jednorazowe hasła S/Key

S/Key jest mechanizmem pozwalającym wykorzystywać jednorazowe hasła podczas połączenia z systemem przez kanał nie zapewniający bezpiecznej transmisji. Jest to doskonałe rozwiązanie dla osób nie mogących wykorzystać ssh lub innego szyfrowanego połącznia. Implementacja S/Key z OpenBSD używa różnych jednokierunkowych funkcji mieszających:

Przygotowanie S/Key - Krok pierwszy

Aby rozpocząć prace z S/Key konieczny jest katalog /etc/skey. Jeżeli ten katalog nie istnieje, należy go utworzyć jako użytkownik root wydając polecenie:

# skeyinit -E

Po utworzeniu katalogu inicjalizujemy S/Key za pomocą polecenia skeyinit(1). Zaraz po uruchomieniu skeyinit(1) poprosi o podanie hasła. Należy podać hasło używane do logowania w systemie. Uruchamianie programu skeyinit(1) na nieszyfrowanym połączeniu mija się zupełnie z celem - narzędzie to powinno być używane albo przez ssh albo bezpośrednio z konsoli. Po autoryzacji hasła systemowego skeyinit(1) poprosi o podanie jeszcze jednego hasła. Jest to tzw. sekretna fraza S/Key, a NIE hasło systemowe. Sekretna fraza powinno mieć przynajmniej 10 znaków, ale zaleca się użycie frazy zawierającej kilka wyrazów. Oto przykład wykorzystania skeyinit(1):

$ skeyinit

Reminder - Only use this method if you are directly connected
   or have an encrypted channel.  If you are using telnet,
   exit with no password and use skeyinit -s.
Password:
[Adding ericj with md5]
Enter new secret passphrase:
Again secret passphrase:

ID ericj skey is otp-md5 100 oshi45820             
Next login password: HAUL BUS JAKE DING HOT HOG

Bardzo ważną linią w powyższym przykładzie jest ID ericj skey is otp-md5 100 oshi45820. Zawiera ona wiele cennych informacji, których znaczenie opisano poniżej:

Ale najważniejsze jest hasło jednorazowe. Nowe hasło zawiera 6 krótkich wyrazów wraz ze spacjami i innymi znakami. Hasło jednorazowe wyświetlone przez skeyinit nie może być użyte do zalogowania (jest dla niego specjalne zastosowanie, patrz skeyinit(1)). Aby móc się zalogować, hasło jednorazowe dla odpowiedniego numeru sekwencyjnego, wyświetlonego przy procesie logowania, musi zostać obliczone przy pomocy skey(1). Następna sekcja pokaże jak to należy robić.

Wykorzystanie ważnego hasła jednorazowego do zalogowania

Posiadając juz hasło jednorazowe można zalogować się w systemie. Poniżej przedstawiony jest przykład sesji używającej S/Key przy logowaniu. Aby zalogować się z użyciem S/Key,należy dołączyć frazę :skey do nazwy użytkownika.

$ ftp localhost
Connected to localhost.
220 oshibana.shin.ms FTP server (Version 6.5/OpenBSD) ready.
Name (localhost:ericj): ericj:skey
331- otp-md5 96 oshi45820
331 S/Key Password: 
230- OpenBSD 3.8 (GENERIC) #138: Sat Sep 10 15:41:37 MDT 2005
230-
230- Welcome to OpenBSD: The proactively secure Unix-like operating system.
230-
230- Please use the sendbug(1) utility to report bugs in the system.
230- Before reporting a bug, please try to reproduce it with the latest
230- version of the code.  With bug reports, please try to ensure that
230- enough information to reproduce the problem is enclosed, and if a
230- known fix for it exists, include that as well.
230-
230 User ericj logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Proszę zauważyć, że dołączono frazę ":skey" do nazwy użytkownika. Informuje to demona ftpd, że do autentykacji zostanie użyte hasło jednorazowe. Uważny czytelnik mógł dostrzec, że numer zmienił się na otp-md5 96 oshi45820. Stało się tak dlatego, że kilkakrotnie używano już haseł jednorazowych podczas logowania. Jak w takim razie zdobyć następne hasło jednorazowe po wykorzystaniu poprzedniego?

Gdy jesteś już zalogowany, proces login`u wydrukuje linię zawierającą wszystkie potrzebne informacje, dzięki którym możesz wygenerować od razu nowe jednorazowe hasło wykorzystując, poprzez skopiowanie i wklejenie do wiersza poleceń:

otp-md5 96 oshi45820

Po wpisaniu swojej bezpiecznej frazy, zostanie wyświetlone twoje jednorazowe hasło zostanie, które możesz wykorzystać do zalogowania się poprzez S/Key. otp-md5 jest nie tylko opisem użytej funkcji hash`ującej, jest to także alternatywna nazwa dla komendy skey(1).

Jeśli jesteś już zalogowany i chcesz uzyskać jednorazowe hasło dla następnej sesji, skorzystaj z skeyinfo(1), który powie ci czego masz użyć przy następnym logowaniu. Na przykład tutaj, musiałem wygenerować kolejne hasło jednorazowe do kolejnego możliwego zalogowania się w przyszłości.(pamiętaj że robię to poprzez bezpieczne połączenie).

$ skeyinfo
95 oshi45820

Jeszcze lepiej jest użyć komendy skeyinfo -v, która zwraca wynik możliwy do wykonania przez interpreter poleceń. Na przykład:

$ skeyinfo -v
otp-md5 95 oshi45820
Więc najprostrzym sposobem na uzyskanie kolejnego hasła S/Key jest:
$ `skeyinfo -v`
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
NOOK CHUB HOYT SAC DOLE FUME

Proszę zwrócić uwagę na odwrócone, pojedyncze apostrofy zastosowane w powyższym przykładzie.

Często zdarza się, że uzyskanie bezpiecznego połączenia lub bezpiecznej lokalnej maszyny w danym momencie jest naprawdę kłopotliwe, a tworzenie S/Key podczas nieszyfrowanej sesji mija się z celem, czy można więc od razu utworzyć wiele haseł jednorazowych? Oczywiście można wywołać komendę skey(1) wraz z parametrem określającym ilość haseł do wygenerowania. Można je wydrukować i zabrać wszędzie tam gdzie będą potrzebne.

$ otp-md5 -n 5 95 oshi45820
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
91: SHIM SET LEST HANS SMUG BOOT
92: SUE ARTY YAW SEED KURD BAND
93: JOEY SOOT PHI KYLE CURT REEK
94: WIRE BOGY MESS JUDE RUNT ADD
95: NOOK CHUB HOYT SAC DOLE FUME

Hasło znajdujące się na samym dole tej listy powinno zostać użyte jako pierwsze, ponieważ numery sekwencyjne odliczane są do 100 do 1.

Użycie hasła jednorazowego w programach telnet(1) i ssh(1)

Stosowanie S/Key z usługami telnet(1) czy ssh(1) realizje się identycznie jak z ftp - należy dołączyć frazę ":skey" na końcu nazwy użytkownika. Na przykład:

$ telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

OpenBSD/i386 (oshibana) (ttyp2)

login: ericj:skey
otp-md5 98 oshi45821
S/Key Password: SCAN OLGA BING PUB REEL COCA
Last login: Thu Oct  7 12:21:48 on ttyp1 from 156.63.248.77
Warning: no Kerberos tickets issued.
OpenBSD 3.8 (GENERIC) #138: Sat Sep 10 15:41:37 MDT 2005

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

You have mail.
$

8.12 - Czy OpenBSD obsługuje SMP?

Z datą wydania OpenBSD 3.6, SMP jest wspierane na platformach OpenBSD/i386 i OpenBSD/amd64

W zestawach instalacyjnych jest dostarczane oddzielne jądro SMP "bsd.mp", które można wybrać w czasie instalacji. Zaleca się przetestowanie tego jądra przed uczynieniem go domyślnym jądrem poprzez zmianę jego nazwy na "bsd".

Mamy nadzieję wspierać inne platformy SMP w przyszłości. Na większości innych platform, OpenBSD będzie działać na maszynie wieloprocesorowej, ale tylko jeden z procesorów będzie wykorzystywany. Wyjątkiem jest platforma SPARC - OpenBSD/sparc może wymagać usunięcia dodatkowych modułów MBus, aby system w ogóle się uruchomił. Wieloprocesorowe maszyny SPARC64 będą działać pod warunkiem, że podstawowa wersja jest wspierana.

8.13 - Podczas próby użycia urządzeń tty wyświetlane są komunikaty o błędach

Dla połączeń inicjowanych przez maszynę z OpenBSD stosuje się urządzenia /dev/cuaXX. Urządzenia /dev/ttyXX przeznaczone są tylko do pracy jako terminale lub jako linie dial-in. We wcześniejszych wydaniach jądra możliwe było inne użycie urządzeń /dev/ttyXX, jednak ta opcja została usunięta.

Cytat z podręcznika systemowego cua(4):

Dla sprzętowych linii terminali szeregowych (dobrym przykładem będzie tu RS232) połączenia przychodzące (dial-in) i wychodzące (dial-out) obsługiwane są przez dwa różne urządzenia. Na przykład terminal /dev/tty03 posiada odpowiadające mu urządzenie /dev/cua03 służące do obsługi dial-out. Urządzenie /dev/cuaXX zazwyczaj posiada numer poboczny większy o 128 od przypisanego mu urządzenia /dev/ttyXX.Biorąc pod uwagę to, że urządzenia dial-in wymagają aktywności ze strony sprzętu aby móc zająć zasoby systemowe, w czasie oczekiwania urządzenia dial-out mogą bez przeszkód komunikować się z urządzeniami zewnętrznymi, na przykład z modemem. Oznacza to, że podczas oczekiwania procesu getty(8) aż ktoś z zewnątrz systemu połączy się z linią szeregową, można nawiązać połączenie dial-out (na tej samej sprzętowej linii szeregowej) bez powiadamiania getty(8) o tym fakcie. Po zakończeniu połączenia dial-out, getty(8) obsłuży przychodzące połączenie właściwie, nie zauważywszy nawet faktu, że urządzenie /dev/cuaXX było wykorzystywane.

8.14 - Jakie przeglądarki stron WWW są dostępne dla OpenBSD?

Tekstowa przeglądarka Lynx jest częścią bazowego systemu OpenBSD i posiada obsługę protkołu SSL. Inne przeglądarki znajdują się w drzewie portów, w tym:

Przeglądarki graficzne

Przeglądarki tekstowe

Większość wyżej wymienionych przeglądarek można znaleźć w kolekcji pakietów, w katalogu www. Bardzo często posiadają one także prekompilowane pakiety, dostępne na serwerach FTP i na płytach CD. Przeglądarki graficzne to najczęściej ogromne progamy wymagające sporo czasu na pobranie źródeł i kompilację. Dlatego wszędzie tam, gdzie to możliwe, należy poważnie zainteresować się możliwością instalacji z pakietu.

8.15 - Jak używać edytora mg?

mg to mikroimplementacja edytora Emacs dostarczana wraz z OpenBSD. "Mikro" oznacza, że mg to bardzo mały edytor (trzeba pamiętać, że Emacs jest ogromną aplikacją). Podstawowa dokumentacja edytora mg znajduje się na stronie podręcznika systemowego mg(1) i w przewodniku, dostarczanym wraz z kodami źródłowymi. Więcej interesujących pytań (np.: "Gdzie jest klawisz Meta?") i odpowiedzi na nie znajduje się w Emacs FAQ.

mg jest niewielkim odpowiednikiem edytora Emacs. W praktyce znaczy to, że posiada wiele opcji edycyjnych jak Emacs 17, jednak nie zawiera dodatkowych udogodnien edytora Emacs (takich jak obsługa poczty elektronicznej, grup dyskusyjnych, a także tryb pracy dla języków Lisp, C++, Lex, Awk, Java, ...).

8.16 - ksh nie czyta mojego pliku .profile!

Prawdopodobną przyczyną ignorowania przez ksh(1) pliku .profile może być jeden z dwóch powodów:

8.17 - Dlaczego moje zmiany w pliku /etc/motd są nadpisywane?

Plik /etc/motd jest modyfikowany podczas każdego startu systemu. Aż do pierwszej pustej linii (ale wyłączając ją), wszystko jest zastępowane informacją o wersji jądra. Redagując ten plik należy pamiętać, aby pozostawić na początku jedną pustą linię.

8.18 - Dlaczego www.OpenBSD.org działa na systemie Solaris?

Chociaż żaden z deweloperów nie uważa tego za jakiś istotny problem, pytanie to często pojawia się na listach dyskusyjnych. Strona www.OpenBSD.org i główny serwer FTP projektu OpenBSD są utrzymywane są na serwerach SunSITE na University of Alberta w Kanadzie. Jest to system oparty na komputerach Sun, posiadający duże zasoby dyskowe oraz szybkie połączenie z Internetem. SunSITE umożliwia wykorzystanie swoich zasobów przez Projekt OpenBSD. Wiele serwerów lustrzanych Projektu działa na komputerach z systemem OpenBSD, ale nie mają one dostępu do tak szybkich łączy, więc główna strona umiejscowiona jest na SunSITE.

8.19 - Problemy w trakcie wykrywania urządzeń PCI

Istnieją pewne sytuacje podczas których komputery mogą błędnie rozpoznawać urządzenia na szynie PCI, lub mogą zawiesić się wykrywając wiele adapterów NIC w jednej maszynie. Jest to wina PCIBIOS-u, ale w prosty sposób można ominąć ten problem. Wystarczy uruchomić konfigurację jądra podczas startu systemu i wyłączyć PCIBIOS, jak w poniższym przykładzie:

boot> boot -c
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2004 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 3.8 (GENERIC) #138: Sat Sep 10 15:41:37 MDT 2005
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Intel Pentium III (Coppermine) ("GenuineIntel" 686-class, 128KB L2 cache)
1 GHz
cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,SYS,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXS
R,SIMD
real mem  = 267956224 (261676K)
avail mem = 243347456 (237644K)
using 3296 buffers containing 13500416 bytes (13184K) of memory
User Kernel Config
UKC> disable pcibios
UKC> quit
[... ciach ...]

To rozwiąże problem z błędnym PCIBIOS. Następnie, wspomagając się lekturą strony podręcznika systemowego config(8) do zmiany ustawień jądra tak aby nie musieć zajmować się tym w przyszłości.

8.20 - Antyaliasing i czcionki TrueType w X

Zagadnienie to omówiono w tym dokumencie.

8.21 - Czy w OpenBSD jest dostępny system plików z księgowaniem?

Nie. W OpenBSD używany jest inny mechanizm mający na celu uzyskanie podobnych efektów jak w systemach plików z księgowaniem. Nosi on nazwę Soft Updates.

8.22 - Domena odwrotna
     - albo -
dlaczego logowanie trwa tak długo?

Wielu nowych użytkowników dotyka problem długiego, dwuminutowego oczekiwania na zalogowanie się podczas korzystania z usług takich jak ssh, ftp czy telnet. Zdarzyć się to może również w trakcie używania serwera proxy, na przykład ftp-proxy, a także podczas wysyłania poczty elektronicznej przy pomocy programu sendmail.

Prawie zawsze winę ponosi domena odwrotna (ang. reverse DNS). DNS (ang. Domain Name Server) używany jest w Internecie do tłumaczenia nazw takich jak "www.openbsd.org", na odpowiadające im numery IP. Drugim zadaniem DNS jest zamiana adresów IP na ich nazwy "domenowe" - ten proces nazywany jest właśnie "Reverse DNS".

Aby zapewnić lepszą jakość logowanych informacji, OpenBSD zawsze sprawdza domenę odwrotną podczas próby dostępu do takich usług jak ssh, ftp, telnet, sendmail lub ftp-proxy. Na nieszczęście, zdarza się, że maszyna próbójąca połączyć się z daną usługą nie posiada właściwej domeny odwrotnej.

Przykład:

W tym przykładzie OpenBSD używany jest jako firewall i bramka dla małej sieci domowej, która mapuje wszystkie adresy z sieci lokalnej na adres zewnętrzny przy pomocy NAT. Można go także wykorzystać jako przekaźnik poczty. Postępując krok po kroku, zgodnie z opisem w podręczniku użytkownika, można otrzymać w pełni sprawny i dający powody do zadowolenia system. Z jednym wyjątkiem - każda próba połączenia się z maszyną kończy się długim oczekiwaniem (dochodzącym aż do dwóch minut), zanim cokolwiek się wydarzy.

Co się dzieje:

Użytkownik pracujący na komputerze znajdującym się za NAT, posiadającym adres 192.168.1.35 z puli zarezerwowanych adresów IP, próbuje uzyskać dostęp do bramki przy pomocy ssh. Serwer ssh prosi o podanie nazwy użytkownika i hasła. Następnie próbuje sprawdzić domenę odwrotną adresu 192.168.1.35, by zapisać ją w pliku dziennika. Pojawia się problem, ponieważ klasa adresów 192.168.0.0 jest klasą zarezerwowaną i serwer DNS poza siecią lokalna nie będzie posiadał informacji na jej temat. Czasem serwer DNS odeśle szybką odpowiedź o wystąpieniu błędu, w tym przypadku OpenBSD przyjmie, że nie można uzyskać informacji o domenie odwrotnej dla danego adresu i pozwoli użytkownikowi zalogować się. Inne serwery DNS nie udzielą ŻADNEJ odpowiedzi - w tym przypadku OpenBSD będzie oczekiwać, aż czas oczekiwania resolwera na odpowiedź zakończy się. Czasem może to zabrać około dwóch minut, zanim system pozwoli się zalogować. Systuacja jest jeszcze bardziej problematyczna w przypadku ftp-proxy - część klientów FTP uzna, że ftp-proxy nie działa, zanim system pośredniczący zakończy oczekiwanie na rozwinięcie domeny odwrotnej.

To może być bardzo denerwujące. Na szczęście istnieje prosty sposób pozwalający naprawić taką systuację.

Plik /etc/hosts:

Najprostszą metodą jest umieszczenie w pliku /etc/hosts informacji o wszstkich komputerach znajdujących się w sieci wewnętrznej. Plik /etc/resolv.conf powinien zawierać linię lookup file bind, która sprawi, że resolwer najpierw sprawdza zawartość pliku /etc/hosts zanim wyśle zapytanie do serwera DNS, podanego po dyrektywie nameserver.

Przykładowy plik /etc/hosts może wyglądać w następujący sposób:

::1 localhost.w.sieci.lokalnej.org localhost
127.0.0.1 localhost.w.sieci.lokalnej.org localhost
192.168.1.1 gw.w.sieci.lokalnej.org gw
192.168.1.20 scrappy.w.sieci.lokalnej.org scrappy
192.168.1.35 shadow.w.sieci.lokalnej.org shadow

Plik resolv.conf może przyjąć taką postać:

search w.lokalnej.sieci.org
nameserver 24.2.68.33
nameserver 24.2.68.34
lookup file bind

A co jeśli w sieci lokalnej, do przydzielania adresów IP, używany jest serwer DHCP? Jak skonfigurwać plik /etc/hosts? Bardzo prosto! Wystarczy umieścić w nim wpisy dotyczące wszystkich adresów przydzielanych dynamicznie oraz te, które są stałe.

::1 localhost.w.sieci.lokalnej.org localhost
127.0.0.1 localhost.w.sieci.lokalnej.org localhost
192.168.1.1 gw.w.sieci.lokalnej.org gw
192.168.1.20 scrappy.w.sieci.lokalnej.org scrappy
192.168.1.35 shadow.w.sieci.lokalnej.org shadow
192.168.1.100 d100.w.sieci.lokalnej.org d100
192.168.1.101 d101.w.sieci.lokalnej.org d101
192.168.1.102 d102.w.sieci.lokalnej.org d102
         [... ciach ...] 
192.168.1.198 d198.w.sieci.lokalnej.org d198
192.168.1.199 d199.w.sieci.lokalnej.org d199

W tym przykładzie w pliku /etc/hosts umieszczono zakres używany przez DHCP od 192.168.1.100 do 192.168.1.199 oraz trzy statyczne adresy IP.

Jeśli sama bramka dostępowa używa DHCP do konfiguracji swoich interfejsów, może pojawić się kłopot - dhclient, za każdym razem gdy odnawiana jest dzierżawa, nadpisze plik /etc/resolv.conf, usuwając z niego linię "lookup file bind". Rozwiązaniem tego problemu jest umieszczenie w pliku /etc/resolv.conf.tail linii "lookup file bind".

Lokalny serwer DNS

Szczegóły opisujące konfigurację DNS wykraczają poza zakres tego dokumentu. Najważniejsze jest, aby serwer DNS, którego używają komputery z sieci wewnętrznej, był autorytatywnym serwerem dla domeny normalnej i odwrotnej dla tej sieci i wszystkie hosty (łącznie z bramką) korzystały z tego serwera.

8.23 - Dlaczego strony WWW OpenBSD nie odpowiadają standardom HTML4/XHTML?

Obecnie strony WWW tworzone są tak, by były poprawnie wyświetlane na różnych przeglądarkach począwszy od wersji 4.0. Nie ma sensu dostosowywać starszych stron do standardu HTML4 lub XHTML dopóki nie będzie pewności, że będą one prawidłowo działać na starszych przeglądarkach. Oczywiście, wszyscy nowi ochotnicy są mile widziani, ale priorytetem jest pisanie kodu czy dokumentacji dotyczącej nowych problemów, a nie dostosowywanie istniejących stron WWW do nowych standartów.

8.24 - Dlaczego zegar jest niedokładny o dwadzieścia kilka sekund?

Po użyciu polecenia rdate(8) do synchronizacji czasu z serwerem NTP może się zdażyć, że zegar będzie późnił się o dwudzieścia kilka sekund w stosunku do czasu lokalnego.

Jest to spowodowane różnicą pomiędzy czasem uniwersalnym (UTC - Coordinated Universal Time - czas atomowy, który uwzględnia obserwacje astronomiczne), a czasem TAI (International Atomic Time - czas bazujący tylko na zegarze atomowym). Aby uczynić czas UTC zgodnym z obserwowanym ruchem słońca na niebie dodawane są do niego sekundy przestępne korygujące różnice pomiędzy UTC, a czasem słonecznym. Właśnie te dodatkowe sekundy są powodem rozbieżności. Dokładniejsze informacje można uzyskać wpisując w wyszukiwarce WWW hasło (bez apostrofów): "leap seconds UTC TAI" [lub na stronach polskich: "sekundy przestępne UTC TAI" - przyp. tłum].

Rozwiązanie tego problemu jest bardzo proste. W większości krajów można otrzymać prawidłowy czas poprzez dodanie parametru "-c" do programu rdate(8) i wybranie właściwej strefy czasowej z katalogu /usr/share/zoneinfo/right/. Np. prawidłowy czas dla Niemiec można ustawić w taki sposób:

     # cd /etc && ln -sf /usr/share/zoneinfo/right/CET localtime
     # rdate -ncv ptbtime1.ptb.de
Dla innych krajów może to wyglądać trochę inaczej.

Dlaczego zegar jest niedokładny o kilka godzin?

Domyślnie OpenBSD przyjmuje że zegar systemowy ustawiony jest na UTC (Universal Coordinated Time).

Jeżeli stanowi to problem (np. w sytuacji gdy używasz poza OpenBSD innego systemu operacyjnego) mozesz zmienić zachowanie domyślne korzystając z config(8). Dla przykładu chcąc skonfigurować zegar systemowy na US/Eastern (5 godzin przed UTC, czyli 300 minut):

#config -ef
OpenBSD 3.8 (GENERIC) #138: Sat Sep 10 15:41:37 MDT 2005
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> timezone 300
timezone = 300, dst = 0
ukc> quit
Saving modified kernel
Więcej informacji znajdziesz w options(4) pod hasłem "TIMEZONE=value".

Normalnie strefa czasowa ustawiana jest podczas instalacji systemu. Jeżeli potrzebujesz zmienić strefę czasową możesz stworzyć nowe dowiązanie symboliczne do właściwego pliku strefy czasowej w /usr/share/zoneinfo. Dla przykładu, by ustawić maszynę do korzystania z EST5EDT jako nową strefę:

# ln -fs /usr/share/zoneinfo/EST5EDT /etc/localtime

Zobacz także:

[Spis treści] [Sekcja 7 - Ustawienia klawiatury i wyświetlania] [Sekcja 9 - Migracja na OpenBSD]


[wstecz] www@openbsd.org
$OpenBSD: faq8.html,v 1.23 2005/12/07 15:31:46 saad Exp $