|
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
Z niniejszego tekstu dowiesz się:
- Jak przygotować system FreeBSD;
- W jaki sposób podłączyć dysk linuksowy do FreeBSD;
- Jak przenieść katalogi domowe i pocztę użytkowników;
- Jak przenieść konta użytkowników;
- Jak przenieść konfigurację popularnych programów;
- Co można i warto jeszcze przenieść z Linuksa;
Zakładam, że masz już poprawnie zainstalowany system FreeBSD.
Jak to zrobić opisuje
drugi rozdział podręcznika FreeBSD Handbook.
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.
Więcej informacji o konfiguracji i kompilacji jądra we FreeBSD dowiesz się z
piątego rozdziału podręcznika FreeBSD Handbook lub z działu
Jądro.
Niektóre systemy *BSD potrafią także uruchamiać binaria
pochodzące z Linuxa. FreeBSD robi to przez tzw. Linux Emulator. Jest to
szczegółowo opisane w
23 rozdziale podręcznika FreeBSD Handbook.
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/ad1s1 /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/ad1s2 (/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 wersji 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żą 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
",
\
$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 znaczym 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
Wasilewski(at)Jezus.pl
Oryginał (najnowsza wersja) dokumentu znajduje się pod
adresem:
http://Jezus.pl/wasilewski/linux-freebsd-HOWTO.html
Data ukazania się artykułu: ???
Ostatnia aktualizacja: 25.09.1999r. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |