- 论坛徽章:
- 0
|
本帖最后由 ulovko 于 2012-08-29 11:17 编辑
Gentoo/FreeBSD是由Gentoo社区发起的项目,其系统结构和Debian GNU/kFreeBSD类似,都是采用FreeBSD的内核,使用GNU的libc,工具链以及软件加以包装,成为一个全新的系统。
Gentoo/FreeBSD项目曾经一度无人开发和维护,但是在今年1月份,本项目重新开始焕发活力,并且取得了很多进展。
本文主要参考自:http://wiki.gentoo.org/wiki/Gentoo_FreeBSD
Gentoo/FreeBSD的主要特性如下:
1、以Gentoo的portage取代FreeBSD的ports系统(这份portage的内容和Gentoo Linux的portage是完全一样的)。
2、基系统由portage所接管。
3、./contrib和./crypto里面的软件以Gentoo Linux的版本所取代。
4、rc系统由Gentoo的OpenRC所取代。
5、Python,wget以及bash包含在基本系统里面,以支持portage的管理。
6、FreeBSD原生的bootloader从基系统里面移除了。
7、支持运行jails,也可以在原版FreeBSD的jails里面运行(未测试,待考证)。
注意:由于系统结构的差异,Gentoo/FreeBSD并不完全支持原版FreeBSD的二进制包,默认也不100%支持原版FreeBSD的脚本。
以下内容以最新的FreeBSD-9.0为例,在GPT磁盘安装Gentoo/FreeBSD(采用UFS2文件系统,虽然官方说可以采用root on ZFS的方式安装,但是本人测试下,如果基于ZFS,会导致后面的基系统解压和zpool import出错,原因未知)。
准备工作
下载FreeBSD-9.0的CD或者USB镜像,以便给安装过程提供基本环境,选择LiveCD模式启动。登录名为root,密码空。
注意:如果你的磁盘是采用4KB扇区的高级格式磁盘,在启动菜单那里选择2. [Esc]ape to loader prompt,根据你的磁盘设备名,输入以下内容:- set kern.cam.ada.0.quirks="1"
- boot
- (比如我的是ada1,则应该输入:set kern.cam.ada.1.quirks="1")
复制代码 网络配置
首先,创建一个/tmp/bsdinstall_etc目录,以重写resolve.conf。- root # mkdir -p /tmp/bsdinstall_etc
复制代码 查看你的网络设备,本例子为em0。- root # ifconfig
- em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
- options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
- ether 00:00:00:00:00:00
- nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
- media: Ethernet autoselect (1000baseT <full-duplex>)
- status: active
- lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
- options=3<RXCSUM,TXCSUM>
- inet6 ::1 prefixlen 128
- inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
- inet 127.0.0.1 netmask 0xff000000
- nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
复制代码 设置默认网关和IP地址(不采用DHCP)- root # ifconfig em0 192.168.0.100
- root # route add default 192.168.0.1
- root # echo "nameserver 8.8.8.8" > /etc/resolv.conf (本例采用Google的公用DNS)
复制代码 如果采用DHCP如果使用的是无线网卡和DHCP,以我自己的ath0为例- root # ifconfig wlan0 create wlandev ath0 ssid YOUR_SSID up
- root # dhclient wlan0
复制代码 网络设置部分完成。
配置分区(采用UFS2文件系统)
本例的磁盘设备为ada1,GPT分区表,分区结构为:
/dev/ada1p1:NTFS文件系统,300GB
/dev/ada1p2:NTFS文件系统,178GB
余下220GB可用空间给Gentoo/FreeBSD。
使用gpart命令给磁盘添加分区
注意:如果采用的是4KB扇区的高级格式磁盘,请在所有的gpart add命令后面加入-a 4K参数,以对齐分区边界,获得更好的性能。- root # gpart add -s 64k -t freebsd-boot ada0 (由于本人采用ada2上面的Grub2引导ada1的Gentoo/FreeBSD,因此这一步我不需要)
- root # gpart add -s 4G -t freebsd-swap ada1
- root # gpart add -t freebsd-ufs ada1
复制代码 接着用gpart show查看分区表,以核对分区情况(Wiki原文的实例,非本人的分区结构)- root # gpart show
- => 34 25165757 ada0 GPT (12G)
- 34 128 1 freebsd-boot (64k)
- 162 20971520 2 freebsd-ufs (10G)
- 20971682 4194109 3 freebsd-swap (2G)
复制代码 如果指定了-a 4K参数,则分区情况应该类似如下- root # gpart show
- => 34 25165757 ada0 GPT (12G)
- 34 6 - free - (3.0k)
- 40 128 1 freebsd-boot (64k)
- 168 20971520 2 freebsd-ufs (10G)
- 20971688 4194096 3 freebsd-swap (2G)
- 25165784 7 - free - (3.5k)
复制代码 创建文件系统- root # newfs -U /dev/ada1p4
复制代码 挂载- root # mount /dev/ada1p4 /mnt
- root # swapon /dev/ada1p3
复制代码 下载stage3和portage快照
现在,已经可以使用FreeBSD-9.0的stage3- root # cd /mnt
- root # fetch http://dev.gentoo.org/~aballier/fbsd9.0/x86/stage3-i686-freebsd-9.0.tar.bz2 (x86用户使用)
- root # fetch http://dev.gentoo.org/~aballier/fbsd9.0/amd64/stage3-amd64-freebsd-9.0.tar.bz2 (amd64用户使用)
- root # fetch http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
复制代码 解压stage3和portage快照- root # cd /mnt
- root # setenv LANG "en_US.UTF-8"
- root # tar **f stage3-*.tar.bz2 -C /mnt
- root # tar xjf portage-latest.tar.bz2 -C /mnt/usr
复制代码 chroot进入新的系统环境- root # mount -t devfs devfs /mnt/dev
- root # cp /etc/resolv.conf /mnt/etc/
- root # chroot /mnt /bin/bash
复制代码 对新系统进行设置- (chroot) root # env-update && source /etc/profile
- (chroot) root # cp /usr/share/zoneinfo/GMT /etc/localtime (please select your time zone)
- (chroot) root # emerge nano
- (chroot) root # nano -w /etc/make.conf (如果有必要)
复制代码 升级stage3里面的几个包,以修补bug- (chroot) root # emerge sys-devel/gcc-config
- (chroot) root # emerge sys-freebsd/freebsd-mk-defs sys-freebsd/freebsd-lib app-arch/libarchive dev-libs/libedit
复制代码 安装FreeBSD的内核源代码- (chroot) root # USE=symlink emerge freebsd-sources
复制代码 编译安装FreeBSD内核,关于内核的配置,可以参考FreeBSD手册- (chroot) root # emerge flex
- (chroot) root # cd /usr/src/sys/i386/conf(如果你使用x86的版本)
- (chroot) root # cd /usr/src/sys/amd64/conf (如果你使用amd64的版本)
- (chroot) root # cp GENERIC.hints /boot/device.hints
复制代码- (chroot) root # config GENERIC
- (chroot) root # cd ../compile/GENERIC
- (chroot) root # make cleandepend && make depend && make -j3 && make install
复制代码 安装bootloader- (chroot) root # emerge sys-freebsd/boot0
复制代码 配置系统(采用UFS2文件系统)- (chroot) root # nano -w /etc/fstab
- #Device Mountpoint FStype Options Dump Pass#
- /dev/ada1p4 / ufs rw 1 1
- /dev/ada1p3 none swap sw 0 0
复制代码 设置主机名- (chroot) root # nano -w /etc/conf.d/hostname
- # (Set the hostname variable to your host name)
- hostname="GFBSD"
复制代码 配置网络- (chroot) root # nano -w /etc/conf.d/net
- # (Set the dns_domain variable to your domain name)
- dns_domain_lo="homenetwork"
- # Manually setting)
- config_em0="192.168.0.100 netmask 255.255.255.0"
- routes_em0="default via 192.168.0.1"
- # Using DHCP)
- config_em0="dhcp"
复制代码 把net.em0加入default运行级- (chroot) root # cd /etc/init.d
- (chroot) root # ln -s net.lo0 net.em0
- (chroot) root # rc-update add net.em0 default
复制代码 设置root密码安装其他的必须包- (chroot) root # emerge dhcpcd
复制代码 退出chroot环境
在chroot里面的设置已经全部完成,现在退出chroot环境把bootloader写入磁盘- root # gpart bootcode -b /mnt/boot/pmbr ada1
- root # gpart bootcode -p /mnt/boot/gptboot -i 1 ada1
复制代码 一切准备就绪,现在可以重启进入你的Gentoo/FreeBSD了。
后记:
Gentoo/FreeBSD可以说是混合了Gentoo和FreeBSD的配置方法。内核模块可以通过/boot/loader.conf配置开机自动加载或者使用kldload命令加载。而在系统本身的配置方面,又几乎和Gentoo一样,采用Gentoo的rc控制启动服务,也可以使用USE flag和profile来配置portage的环境。
尽管如此,Gentoo/FreeBSD仍然是不完善的系统,目前尚无法编译启动xorg-server(至少在我的机器上如此)。另外,由于内核仍然是FreeBSD,因此,对于硬件支持也是和FreeBSD一样,不如Linux那么广泛。
希望随着Gentoo/FreeBSD的不断开发,以及原版FreeBSD对于KMS的引入,相信以后这些问题都能得到解决。在此之前,本系统不可用于生产环境。
|
评分
-
查看全部评分
|