Linux + FreeBSD mini-HOWTO
Niels Kristian Bech Jensen nkbj@image.dk
v1.11, 30 март 2000 (превод - 22 февруари 2005)
Този документ е написан от Niels Kristian Bech Jensen, аз само го превеждам и пренаписвам леко, защото от 2000 година до сега са се променили някои неща и документа е малко невалиден поради, вече много напредналото, развитеи на ядрата и файловите системи. Текущата версия на FreeBSD е FreeBSD-5.3 , а на Linux - 2.4/2.6
Този документ описва как да използваме Linux и FreeBSD на една система. Също представя FreeBSD и разисква как двете операционни системи могат да си съдействат заедно, примерно като споделят swap пространство. Вероятно трябва да имате малко опит с Linux или FreeBSD и разделяне на твърдия диск (fdisk
) преди да четете този документ. Съветите тук са изпробвани с FreeBSD 5.3 , но трябва да са валидни и за останалите версии. Не се колебайте да ми пишете (както и на мен - преводача) за всякакви коментари, въпроси или предложения свързани с този документ. Също бих желал да чуя и от хора, които имат опит с използването на Linux заедно с NetBSD или OpenBSD.
1. Какво е FreeBSD?
2. FreeBSD етикети на твърдите дискове
3. Споделяне на swap пространсвто между Linux и FreeBSD
4. Зареждане на FreeBSD с LILO
5. Монтиране на файлови системи
6. Стартиране на "чужди" бинари
7. Информационни ресурси
1. Какво е FreeBSD?
FreeBSD е безплатна UNIX-подобна система също като Linux. Главната разлика е, че Linux ядрото е написано независимо, тоест започнато е от нулата, а FreeBSD е базирана на свободно дистрибутираните части от 4.4BSD (Berkeley Software Distribution) познати като 4.4BSD-lite. Този факт може да накара някои хора да мислят, че FreeBSD е по-близо до това да бъде "истински" UNIX, отколкото Linux. FreeBSD може да върви на следните платформи: alpha, amd64, i386, ia64, pc98 и sparc64.
NetBSD и
OpenBSD са подобни на FreeBSD и също вървят на няколко платформи. Хардуерните изисквания за всички *BSD системи са подобни на тези за Linux.
Разработването на FreeBSD се ръководи по различен начин в сравнение с Linux разработването. Централен екип от разработчици служат като арбитри и осигуряват ръководството на проекта. Големи промени в напредък се дискутират по така наречените "mailing lists". Проектът FreeBSD има две разклонения на разработване (също като Linux): "-CURRENT" и "-STABLE".В "-CURRENT" се разработват новите свойства и детайли. Разработването на "-STABLE" се ограничава до премахване на бъговете и тестване на новите свойства и детайли.
FreeBSD може да се използва и (ре-)дистрибутира свободно както Linux. Повечето части от системата са пуснати под BSD copyright, GNU GPL или друг open-source лиценз.
2. FreeBSD етикети на твърдите дискове
Linux и FreeBSD имат различни схеми за етикети на твърдите дискове и разделите. Тази секция обяснява основните разлики между тези две схеми. Всъщност схемата на FreeBSD е адаптация на традиционния BSD етикетен стил. Така схемата е много подобна на други BSD-базирани UNIX системи като NetBSD, OpenBSD, Ultrix,
Digital Unix, SunOS и Solaris.
2.1 FreeBSD "дялове" и "раздели"
FreeBSD се нуждае от една от четирите части на таблицата на разделите във вашия твърд диск. Този основен раздел се нарича "дял" в терминологията на FreeBSD. След това с помощта на програмта disklabel
може да се направят до осем раздела в този основен раздел. Тези логически раздели се наричат "раздели" в терминологията на FreeBSD. Тази идея е подобна на начина, по който Linux (и DOS) поддържат логически раздели в разширен раздел. Не можете да инсталирате FreeBSD в разширен раздел направен от Linux (или DOS). Забележете, че програмата fdisk
на Linux в своето главно меню не показва разделите на BSD като FreeBSD дялове, но показва информация за етикета на BSD диск, ако използвате командата "b". Това ще покаже нещо подобнно (/dev/hda4
е FreeBSD дял):
root@Soulstealer:/# fdisk /dev/hda
The number of cylinders for this disk is set to 4866.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 40.0 GB, 40027029504 bytes
255 heads, 63 sectors/track, 4866 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 61 489951 82 Linux swap
/dev/hda2 62 790 5855692+ 83 Linux
/dev/hda3 791 4437 29294527+ 83 Linux
/dev/hda4 * 4438 4866 3445942+ a5 FreeBSD
Command (m for help): b
Reading disklabel of /dev/hda4 at sector 71280406.
BSD disklabel command (m for help): p
8 partitions:
# start end size fstype [fsize bsize cpg]
a: 4438 4450* 12* 4.2BSD 2048 16384 12808
b: 4450* 4463* 12* swap
c: 4438 4866 429 unused 0 0
d: 4463* 4469* 6* 4.2BSD 2048 16384 6408
e: 4469* 4482* 12* 4.2BSD 2048 16384 12808
f: 4482* 4866* 384* 4.2BSD 2048 16384 28552
BSD disklabel command (m for help): q
root@Soulstealer:/#
Буквите "a"..."f" в първата колона са същите като показания отдолу примера за FreeBSD дял. Има три специални раздела в BSD. Буквата "а" обозначава root раздела, "b" обозначава swap раздела, докато "c" обозначава целия дял. Вижте документацията на FreeBSD за повече информация върху "стандартния" начин за определяне на тези букви в различните типове раздели.
2.2 Етикети на устройства и раздели в Linux и FreeBSD
Етикетите на твърдите дискове в Linux и FreeBSD са както следва:
Linux FreeBSD
First IDE drive /dev/hda /dev/ad0
Second IDE drive /dev/hdb /dev/ad1
First SCSI drive /dev/sda /dev/sd0
Second SCSI drive /dev/sdb /dev/sd1
Разделите (FreeBSD дялове) на IDE интерфейс са с етикети в следния ред (за пример е даден /dev/hda
):
Linux FreeBSD
First primary partition /dev/hda1 /dev/аd0s1
Second primary partition /dev/hda2 /dev/аd0s2
Third primary partition /dev/hda3 /dev/аd0s3
Fourth primary partition /dev/hda4 /dev/аd0s4
Разделите в моя FreeBSD дял са със следните етикети. Възможно е да сменяте етикетите, при инсталацията на FreeBSD (/dev/hda4
е FreeBSD дялът в отзи пример):
FreeBSD label FreeBSD mount point
/dev/ad0s4a /
/dev/ad0s4b swap
/dev/ad0s4d /tmp
/dev/ad0s4e /var
/dev/ad0s4f /usr
Ако сте инсталирали FreeBSD в /dev/sd1s3
дял (/dev/sdb3
от гледна точка Linux), предишният пример ще изглежда така:
FreeBSD label FreeBSD mount point
/dev/sd1s3a /
/dev/sd1s3b swap
/dev/sd1s3d /tmp
/dev/sd1s3e /var
/dev/sd1s3f /usr
Ако имате Linux разширен раздел след FreeBSD дял ще имате проблем, защото ако Linux ядрото ви е без поддръжка на UFS, то разделите във FreeBSD дяла няма да бъдат разпознати. Това може да доведе до грешно означаване на устройствата и загуба на информация. Моят съвет е: винаги разполагайте своя FreeBSD дял след разширения раздел на Linux и не променяйте логическите раздели в Linux разширения раздел след инсталиране на FreeBSD!
3. Споделяне на swap пространсвто между Linux и FreeBSD
Тази секция обяснява как направих Linux и FreeBSD да споделят swap раздела. Може да има и други начини да постигнете същият разултат. Можете да инсталирате FreeBSD преди Linux ако искате, само обърнете внимание на реда на разделите във FreeBSD дяла.
3.1 Инсталиране и подготвяне на Linux
Първата стъпка е да инсталирате нормално Linux. Трябва да оставите свободно пространство за FreeBSD дяла на своя твърд диск. Не е нужно да правите Linux swap раздел, но ако искате можете да го сложите в пространството където ще разположите FreeBSD. По този начин може да изтриете Linux swap раздела по-късно и да използвате пространството за FreeBSD.
След като инсталирате Linux трябва да компилирате ново ядро. Прочетете The
Linux Kernel HOWTO ако това е ново за вас. Трябва да включите UFS filesystem support (read only) и BSD disklabel (FreeBSD
partition tables) support:
CONFIG_UFS_FS=y
CONFIG_BSD_DISKLABEL=y
Инсталирайте новото ядро и рестартирайте. Премахнете всеки ред който съдържа думата swap от файла /etc/fstab
, ако сте направили Linux swap раздел. Подсигурете се с работещо флопи с новото ядро. Сега сте готови да инсталирате FreeBSD.
3.2 Инсталиране на FreeBSD
Инсталирайте FreeBSD както е описано в документацията за FreeBSD. Премахете Linux swap раздела, ако сте направили такъв (може да използвате програмата fdisk
на FreeBSD. Обърнете внимание на реда на разделите във FreeBSD дяла. Ако използвате етикетите по подразбиране вторият раздел ще бъде swap раздела. Завършете инсталацията на FreeBSD и рестартирайте в Linux.
3.3 Настройка на FreeBSD swap раздела в Linux
Пуснете dmesg
ако сте стартирали Linux. Изходният текст трбва да изглежда така:
Partition check:
hda: hda1 hda2 hda3 hda4
Това означава, че /dev/hda4
е вашият FreeBSD дял, докато
/dev/hda5
, /dev/hda6
, /dev/hda7
, /dev/hda8
и
/dev/hda9
са FreeBSD разделите. Ако вашият swap раздел е вторият раздел от дяла, то той ще бъде /dev/hda6
.
Трябва само да поставите следното във файла /etc/fstab
на Linux, за да активирате swap раздела:
/dev/hda6 none swap sw 0 0
FreeBSD може да ползва всякакъв вид swap пространство, но Linux се нуждае от специално описване на swap пространството. Описването се прави с mkswap
. FreeBSD разрушава това описание, ако използва споделен swap раздел, за това ще трябва да изпълнявате mkswap
с всяко зареждане на Linux. За да направите това автоматично трябва да намерите скрипта, който изпълнява swapon
по време на зареждането. В Slackware скрипта е /etc/rc.d/rc.S
. Сложете следното точно преди swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Това ще изпълни mkswap
на всеки swap раздел в /etc/fstab
с всяко зареждане, освен ако не сте го коментирали (първият знак от реда да е "#")
Изпълнете free
да проверите размера на swap пространството след като сте заредили Linux. Също трябва да заредите FreeBSD, за да се уверите, че всичко работи както се очаква. Ако не работи, вероятно сте използвали грешен раздел за swap раздел. Единственото решение на този проблем е да преинсталирате FreeBSD и да опитате отново. Опитът е чудесен учител. :-)
4. Зареждане на FreeBSD с LILO
Можете лесно да заредите FreeBSD с LILO. Не инсталирайте мениджъра за пъвроначално зареждане (boot manager - Booteasy
) ако искате да използвате LILO. Приложете следните редова в своя файл /etc/lilo.conf
и изпълнете lilo
(като знаем, че FreeBSD дяла е /dev/hda4
):
other=/dev/hda4
table=/dev/hda
label=FreeBSD
Ако сте инсталирали FreeBSD във втория SCSI интерфейс, използвайте нещо подобно (ако FreeBSD дяла е /dev/sdb2
):
other=/dev/sdb2
table=/dev/sdb
loader=/boot/chain.b
label=FreeBSD
5. Монтиране на файлови системи
5.1 Монтиране на UFS файлови системи под Linux
По настоящем, файловата система по подразбиране на FreeBSD-5.* e u2fs (ufs2). За съжаление тя не се поддържа от настоящите ядра на Linux (2.4/2.6). Съществува кръпка за ядрото на Linux, която осигърява поддръжка на u2fs като е възможно само четене (read-only). Така че се налага компилиране на ново ядро (като е нужно да включите поддръжка на "BSD disklabel"). Можете да го изградите като модул или директно в сорса на ядрото. Добра идея е да се направи като модул. След като инсталирате новот ядро и сте заредили модула или сте оставили kerneld да го свърши вместо вас, монтирането може да стане по един от следните начини
mount -t u2fs /dev/hda9 /mnt/FreeBSD
;
mount -t u2fs /dev/hda9 /mnt/FreeBSD
;
mount -t ufs -o ufstype=44bsd /dev/hda9 /mnt/FreeBSD
Можете да монтирате всеки раздел от FreeBSD дяла с изключение на swap раздела.
5.2 Монтиране на ext2fs файлови системи под FreeBSD
За да монтирате ext2fs файлова система под FreeBSD трябва тя да се поддържа от ядрото. Във FreeBSD-5.* ext2fs се поддържа по подразбиране.
Монтирането става по следния начин:
mount_ext2fs /dev/аd0s3 /mnt
6. Стартиране на "чужди" бинари
6.1 Стартиране на FreeBSD бинари под Linux
Пакетът iBCS
поддържа стартиране на FreeBSD бинари под Linux, но той е стар и не се поддържа.
6.2 Стартиране на Linux бинари под FreeBSD
FreeBSD има способността да стартира Linux бинари.За да направите това, трябва да изпълните следното:
Трябва да разрешите Linux съвместимост, за да направите това трябва да редактирате файла /etc/rc.conf
като добавите следното:
linux_enable="YES"
...и рестартирате
Друг начин да заредите поддръжка на Linux бинари е като изпълните командата /usr/bin/linux
. По този начин не е нужно да рестартирате и нямате постоянно заредена поддръжка на Linux бинари (спестява памет). Не забравяйте да добавите
options COMPAT_LINUX
към конфигурационния файл на ядрото, ако компилирате ново.