FreeBSD Logo               

Skąd pobrać FreeBSD? Wybierz serwer ftp:
 

 


Dokumentacja
 
manuale  
  faq 
 
handbook

Jak to zrobić?
  Instalacja
  Komendy
  Usługi
  Upgrade
  NFS
  Jądro
  SDI-PPP
  Identyfikacja
  Quota
  OpenSSH
  TelnetSSL 
  Agenci MTA
  POP3 i SMTP
  Autoryzacja
  Serwer WWW
  Serwer NEWS
  Serwer Nazw
  ProFTPD
  IPv6
  Squid
  Samba
  DHCP
  Dummynet
  Ipfilter
  PF
  Polonizacja
  VMvare
  Udostępnianie
  Mały Router
 
Terminal
  Linux2FreeBSD

Niusy
  pl.comp.os.bsd

Po polsku
  bsdzine.org
  freebsd.pl
  www.bsd4u.org
  www.bsdguru.org
  bofh.vt.pl

Po innemu
  bsdvault.net
  freebsdhowtos.com
  freebsd-howto.com

Linkownia



Studio reklamowe

Usługi informatyczne MAC



 

 

Linux2FreeBSD

 

Zmiana systemu?

Wstęp

Dokument opisuje jak zmienić system operacyjny z Linuksa (w zasadzie z dowolnej dystrybucji) na FreeBSD. Zdecydowana większość tekstu jest adekwatna także w przypadku migracji do innego systemu typu *BSD (OpenBSD, NetBSD itp.). Pisząc "zmienić" mam na myśli przeniesienie z Linuksa kont użytkowników, poczty, katalogów domowych, konfiguracji programów Sendmail, Apache, Bind, SSH. Przenoszenie pozostałych rzeczy w większości przypadków raczej nie ma sensu. Opisałem jednak co moim zdaniem można i warto jeszcze przenieść. Decyzję co do ostatecznej listy przenoszonych plików pozostawiam czytelnikowi.

Postanowiłem napisać ten HOWTO ponieważ nigdzie nie znalazłem podobnej instrukcji. Co więcej - na moje pytania, zadawane na listach dyskusyjnych, czy automatyczna migracja z Linuksa na FreeBSD jest możliwa korespondenci odpowiadali negatywnie. Okazuje się jednak, iż z powodzeniem i bez większych trudności można zamienić Linuksa na FreeBSD przenosząc przy tym wszystkie istotne dane! Sprawdziłem to w praktyce migrując z systemu SuSE Linux 6.0 na FreeBSD 3.2 oraz z Debian/GNU Linux 2.1 na FreeBSD 3.3

Na tej stronie wypunktowałem główne różnice między Linuksem a FreeBSD.

Z niniejszego tekstu dowiesz się:

 

1. Jak przygotować system FreeBSD

Aby móc przenieść dane z Linuksa do FreeBSD musimy mieć możliwość zamontowania dysku z systemem plików Ext2, którego standardowo używa Linux. W tym celu niezbędne jest odpowiednie skonfigurowanie jądra systemu, tak by FreeBSD odczytywał partycje Ext2. W tym celu do pliku konfiguracyjnego jądra systemu należy dopisać:

options     "EXT2FS"

Przypominam, iż plik ten znajduje się zazwyczaj w katalogu /usr/src/sys/i386/conf.

Niektóre systemy *BSD potrafią także uruchamiać binaria pochodzące z Linuxa. FreeBSD robi to przez tzw. Linux Emulator.

Jeśli chcesz uruchamiać programy z Linuksa wpisz w pliku /etc/rc.conf

linux_enable=YES

W większości przypadków to zupełnie wystarcza. Jeśli jednak nadal masz problemy, dodaj w konfiguracji jądra opcję:

options     LINUX

2. Jak podłączyć dysk linuksowy do FreeBSD

Po skompilowaniu i zainstalowaniu jądra z aktywowaną obsługą systemu plików Ext2 można wyłączyć komputer i podłączyć do niego dysk linuksowy. Należy pamiętać by ustawić odpowiednio zworki w dyskach oraz by pierwszym (startowym) dyskiem był ten z systemem FreeBSD. Po uruchomieniu komputera logujemy się jako root i montujemy dysk linuksowy do katalogu /mnt

Przykład dla dysku SCSI:

mount -t ext2fs /dev/da1s1 /mnt

Przykład dla dysku IDE:

mount -t ext2fs /dev/wd1s1 /mnt

Oczywiście parametry polecenia mount mogą się u ciebie różnić. Jeśli np. system plików Ext2 na dysku linuksowym jest na drugiej partycji to należy podać /dev/wd1s2 (/dev/da1s2) itd. Więcej informacji na temat polecenia mount otrzymasz po wydaniu komendy:

man mount

3. Jak przenieść katalogi domowe i pocztę użytkowników

Przeniesienie poczty oraz katalogów domowych użytkowników wraz z plikami, które zawierają jest stosunkowo proste. Jedyną rzeczą, o której należy pamiętać jest zachowanie atrybutów katalogów i plików. Po przeniesieniu danych o użytkownikach (pkt 4) system FreeBSD automatycznie będzie wskazywał prawidłową grupę i właściciela przeniesionego katalogu / pliku.

Katalogi domowe użytkowników w obu systemach znajdują się w /home Aby dokonać przeniesienia całej struktury tego katalogu wraz z odpowiednimi atrybutami plików należy wydać komendę:

cp -R -p /mnt/home /home

Cierpliwie czekamy (czas zależy od ilości przenoszonych danych)...

Tak przeniesione katalogi nie nadają się jeszcze do użytku! System zamiast identyfikatora właściciela pliku (login) oraz nazwy grupy będzie pokazywał wartości numeryczne (UID oraz GID). Powodem tego jest fakt, iż FreeBSD nie ma jeszcze wystarczających informacji o właścicielach katalogu / pliku. Należy przenieść dane o użytkownikach czyli wykonać pkt 4.

W podobny sposób przenosimy pocztę. Należy pamiętać o dwóch rzeczach - zachowaniu atrybutów, tak jak w przypadku katalogów domowych, oraz różnym miejscu składowania poczty w obu systemach:

Linuks - /var/spool/mail
FreeBSD - /var/mail

Aby prawidłowo przenieść pocztę użytkowników należy wydać komendę:

cp -p /mnt/var/spool/mail /var/mail

4. Jak przenieść konta użytkowników

Najważniejszym i chyba najtrudniejszym etapem w procesie migracji jest przenoszenie danych o użytkownikach, w szczególności identyfikatorów (login), haseł itp. Problem wynika z faktu, iż FreeBSD trzyma informacje o użytkownikach w innych plikach niż Linuks. Są one wzajemnie niekompatybilne więc nie da się ich bezpośrednio skopiować.

Standardowo, Linuks trzyma dane o użytkownikach w dwóch plikach tekstowych:

/etc/passwd - zawiera m.in. login, UID, GID, pole GECOS (informacje o użytkowniku np. imię i nazwisko)
/etc/shadow - zawiera m.in. zakodowane hasło, dane o dacie ważności konta i hasła

Istnieją wersje Linuksa, które nie mają zainstalowane tzw. shadow passwords i trzymają wszystkie dane w jednym pliku /etc/passwd Jest to bardzo niebezpieczne! Ponieważ nie znam obecnie praktycznych instalacji Linuksa bez shadow passwords przypadek ten pominę.

FreeBSD posługuje się dwoma plikami tekstowymi:

/etc/passwd - zawiera m.in. login, UID, GID, pole GECOS (informacje o użytkowniku np. imię i nazwisko)
/etc/master.passwd - zawiera dodatkowo m.in. zakodowane hasło, dane o dacie ważności konta i hasła

oraz plikiem binarnym:

/etc/pwd.db

Jak zatem dokonać odpowiednich konwersji? Istnieje kilka metod, z których opiszę moim zdaniem najprostszą (sprawdziłem w praktyce). Przed konwersją należy zaopatrzyć się w pakiet John the Ripper -- Password Cracker. Jest bezpłatnie dostępny pod adresem http://www.false.com/security/john/. Do ściągnięcia są wersje dla wszystkich popularnych systemów (w tym Windows 9x/NT oraz Linux i FreeBSD). Z całego pakietu interesuje nas jedynie program unshadow (unshadow.exe w wesji dla Windows).

Tworzymy jakiś tymczasowy katalog i przechodzimy tam, np.

mkdir /root/cnv
cd /root/cnv

Kopiujemy tam pliki passwd i shadow pochodzące z systemu Linux, np.

cp /mnt/etc/passwd /root/cnv
cp /mnt/etc/shadow /root/cnv

Dokonujemy konwersji do jednego, wspólnego pliku używając programu unshadow:

unshadow passwd shadow > linux_passwd

Wynik działania programu unshadow znajdzie się w pliku linux_passwd. Proponuję wyedytować ten plik (vi linux_passwd) usuwając wszystkie konta systemowe (tzn. takie, które nie należa do zwykłych użytkowników np. root, daemon, nobody itp.). Zazwyczaj konta systemowe posiadają nr UID poniżej 1000 i znajdują się na początku pliku. Operacja ta jest bardzo ważna ponieważ pozwala uniknąć powtarzania się identyfikatorów w obu systemach. Ponadto konta systemowe we FreeBSD nie pokrywają się z tymi w Linuksie!

Spreparowany według powyższych wskazówek plik linux_passwd nie nadaje się jeszcze do użytku przez FreeBSD. Należy uzupełnić prakujące pola dodając "::0:0" pomiędzy polem 4 a 7. Można to zrobić automatycznie, posługując się programem awk:

cat linux_passwd | awk -F \
: '{printf("%s:%s:%s:%s::0:0:%s:%s:%s\n",\
 $1, $2,$3,$4,$5,$6,$7); }' > bsd_passwd

Do końca konwersji pozostają nam jeszcze dwie czynności. Pierwszą jest dołączenie pliku bsd_passwd do /etc/master.passwd Zanim to zrobimy warto wykonać kopię plików /etc/master.passwd oraz /etc/passwd by móc powrócić do stanu wyjściowego w przypadku niepowodzenia:

cp /etc/master.passwd /etc/master.passwd.OK
cp /etc/passwd /etc/passwd.OK
cat bsd_passwd >> /etc/master.passwd

Ostatnią czynnością jest wygenerowanie nowych plików /etc/passwd oraz /etc/pwd.db Służy do tego znajdujące się we FreeBSD polecenie pwd_mkdb:

pwd_mkdb /etc/master.passwd

To wszystko! Aby sprawdzić poprawność konwersji należy zalogować się na konto jednego z przeniesionych użytkowników. Jeśli uda się to zrobić to oznacza, iż najprawdopodobniej migracja przebiegła pomyślnie.

5. Jak przenieść konfigurację popularnych programów

Ponieważ w obu systemach pracują praktycznie te same programy, można się pokusić o przeniesienie ich konfiguracji. Uwolni nas to, przynajmniej częściowo, od żmudnego konfigurowania systemu.

Zasada ogólna

Przenoszenie konfiguracji oprogramowania w tych samych lub bardzo zbliżonych wersjach jest dość bezpieczne. Można zatem zastosować następującą procedurę:

  • Zachowujemy oryginalny plik konfiguracyjny pod zmienionym rozszerzeniem (np. httpd.conf.org) WAŻNE!;
  • Kopiujemy plik konfiguracyjny z Linuksa;
  • Przeglądamy pliki pod względem ewentualnych różnic. Głównie poprawiamy ścieżki;

Należy szczególnie zwrócić uwagę na dwie rzeczy:

  • Katalogi wskazywane w plikach konfiguracyjnych mogą (i są) często inne w Linuksie i FreeBSD;
  • Nazwy użytkowników pod którymi pracują poszczególne programy mogą się różnić choć jest tak niezbyt często;

Według podanej procedury można stosunkowo łatwo przenieść konfigurację podstawowych programów - Sendmail, Apache, Bind, SSH - które są praktycznie identyczne z używanymi w Linuksie. Główne różnice to umiejscowienie programów, ich konfiguracji i danych, które używają.

Jeśli natomiast wersje danego programu w obu systemach znacznie się różnią (np. bind 4.x i bind 8.x) to oznacza najczęściej, że i pliki konfiguracyjne uległy znacznym zmianom. Nie polecam w takim przypadku ich przenoszenia. Bezpieczniej będzie skonfigurować program od nowa.

6. Co można i warto jeszcze przenieść

Przychodzą mi do głowy jeszcze dwie rzeczy, które warto przenieść. Są to logi oraz dane poszczególnych aplikacji.

W przypadku logów można je śmiało przenosić bez jakichkolwiek zmian w plikach. Pamiętać jedynie należy o wgraniu logu do właściwego katalogu ponieważ występują tu różnice zarówno między dystrybucjami Linuksa jak i Linuksem a FreeBSD.

Dane aplikacji, które warto przenieść to np. zawartość serwera WWW (strony WWW, aplikacje w PERL'u z cgi-bin) czy pliki wystawiane przez serwer FTP (anonymous ftp). Podobnie jak we wcześniejszych przypadkach pamiętać należy o wgraniu plików do właściwego katalogu ponieważ występują tu różnice zarówno między dystrybucjami Linuksa jak i Linuksem a FreeBSD.


Autor: Piotr Wasilewski

Oryginał dokumentu: http://jezus.pl/wasilewski/linux-freebsd-HOWTO.html


Lipiec 2001





Kontakt  

© 2001-2009 FreeBSD Projekt
Wszelkie Prawa Zastrzeżone.