忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
123下一页
最近访问板块 发新帖
查看: 16224 | 回复: 26

[FreeBSD] 【系统安装】Gentoo/FreeBSD的基本安装 [复制链接]

论坛徽章:
0
发表于 2012-08-29 10:05 |显示全部楼层
本帖最后由 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,根据你的磁盘设备名,输入以下内容:
  1. set kern.cam.ada.0.quirks="1"
  2. boot
  3. (比如我的是ada1,则应该输入:set kern.cam.ada.1.quirks="1")
复制代码
网络配置
首先,创建一个/tmp/bsdinstall_etc目录,以重写resolve.conf。
  1. root # mkdir -p /tmp/bsdinstall_etc
复制代码
查看你的网络设备,本例子为em0。
  1. root # ifconfig

  2. em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
  3.         options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
  4.         ether 00:00:00:00:00:00
  5.         nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
  6.         media: Ethernet autoselect (1000baseT <full-duplex>)
  7.         status: active
  8. lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  9.         options=3<RXCSUM,TXCSUM>
  10.         inet6 ::1 prefixlen 128
  11.         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
  12.         inet 127.0.0.1 netmask 0xff000000
  13.         nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
复制代码
设置默认网关和IP地址(不采用DHCP)
  1. root # ifconfig em0 192.168.0.100
  2. root # route add default 192.168.0.1
  3. root # echo "nameserver 8.8.8.8" > /etc/resolv.conf (本例采用Google的公用DNS)
复制代码
如果采用DHCP
  1. root # dhclient em0
复制代码
如果使用的是无线网卡和DHCP,以我自己的ath0为例
  1. root # ifconfig wlan0 create wlandev ath0 ssid YOUR_SSID up
  2. root # dhclient wlan0
复制代码
网络设置部分完成。

配置分区(采用UFS2文件系统)
本例的磁盘设备为ada1,GPT分区表,分区结构为:
/dev/ada1p1:NTFS文件系统,300GB
/dev/ada1p2:NTFS文件系统,178GB
余下220GB可用空间给Gentoo/FreeBSD。

使用gpart命令给磁盘添加分区
注意:如果采用的是4KB扇区的高级格式磁盘,请在所有的gpart add命令后面加入-a 4K参数,以对齐分区边界,获得更好的性能。
  1. root # gpart add -s 64k -t freebsd-boot ada0 (由于本人采用ada2上面的Grub2引导ada1的Gentoo/FreeBSD,因此这一步我不需要)
  2. root # gpart add -s 4G -t freebsd-swap ada1
  3. root # gpart add -t freebsd-ufs ada1
复制代码
接着用gpart show查看分区表,以核对分区情况(Wiki原文的实例,非本人的分区结构)
  1. root # gpart show

  2. =>            34     25165757     ada0       GPT     (12G)
  3.                 34              128           1      freebsd-boot  (64k)
  4.               162     20971520           2      freebsd-ufs  (10G)
  5.      20971682       4194109           3      freebsd-swap  (2G)
复制代码
如果指定了-a 4K参数,则分区情况应该类似如下
  1. root # gpart show

  2. =>            34     25165757     ada0     GPT     (12G)
  3.                  34                 6                 - free -  (3.0k)
  4.                  40             128           1     freebsd-boot  (64k)
  5.                168    20971520           2     freebsd-ufs  (10G)
  6.       20971688      4194096           3     freebsd-swap  (2G)
  7.       25165784                 7                  - free -  (3.5k)
复制代码
创建文件系统
  1. root # newfs -U /dev/ada1p4
复制代码
挂载
  1. root # mount /dev/ada1p4 /mnt
  2. root # swapon /dev/ada1p3
复制代码
下载stage3和portage快照
现在,已经可以使用FreeBSD-9.0的stage3
  1. root # cd /mnt
  2. root # fetch http://dev.gentoo.org/~aballier/fbsd9.0/x86/stage3-i686-freebsd-9.0.tar.bz2 (x86用户使用)
  3. root # fetch http://dev.gentoo.org/~aballier/fbsd9.0/amd64/stage3-amd64-freebsd-9.0.tar.bz2 (amd64用户使用)
  4. root # fetch http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
复制代码
解压stage3和portage快照
  1. root # cd /mnt
  2. root # setenv LANG "en_US.UTF-8"
  3. root # tar **f stage3-*.tar.bz2 -C /mnt
  4. root # tar xjf portage-latest.tar.bz2 -C /mnt/usr
复制代码
chroot进入新的系统环境
  1. root # mount -t devfs devfs /mnt/dev
  2. root # cp /etc/resolv.conf /mnt/etc/
  3. root # chroot /mnt /bin/bash
复制代码
对新系统进行设置
  1. (chroot) root # env-update && source /etc/profile
  2. (chroot) root # cp /usr/share/zoneinfo/GMT /etc/localtime (please select your time zone)
  3. (chroot) root # emerge nano
  4. (chroot) root # nano -w /etc/make.conf (如果有必要)
复制代码
升级stage3里面的几个包,以修补bug
  1. (chroot) root # emerge sys-devel/gcc-config
  2. (chroot) root # emerge sys-freebsd/freebsd-mk-defs sys-freebsd/freebsd-lib app-arch/libarchive dev-libs/libedit
复制代码
安装FreeBSD的内核源代码
  1. (chroot) root # USE=symlink emerge freebsd-sources
复制代码
编译安装FreeBSD内核,关于内核的配置,可以参考FreeBSD手册
  1. (chroot) root # emerge flex
  2. (chroot) root # cd /usr/src/sys/i386/conf(如果你使用x86的版本)
  3. (chroot) root # cd /usr/src/sys/amd64/conf (如果你使用amd64的版本)
  4. (chroot) root # cp GENERIC.hints /boot/device.hints
复制代码
  1. (chroot) root # config GENERIC
  2. (chroot) root # cd ../compile/GENERIC
  3. (chroot) root # make cleandepend && make depend && make -j3 && make install
复制代码
安装bootloader
  1. (chroot) root # emerge sys-freebsd/boot0
复制代码
配置系统(采用UFS2文件系统)
  1. (chroot) root # nano -w /etc/fstab

  2. #Device                  Mountpoint               FStype               Options               Dump         Pass#
  3. /dev/ada1p4           /                                ufs              rw                1                1
  4. /dev/ada1p3           none                                  swap          sw                       0         0
复制代码
设置主机名
  1. (chroot) root # nano -w /etc/conf.d/hostname

  2. # (Set the hostname variable to your host name)
  3. hostname="GFBSD"
复制代码
配置网络
  1. (chroot) root # nano -w /etc/conf.d/net

  2. # (Set the dns_domain variable to your domain name)
  3. dns_domain_lo="homenetwork"

  4. # Manually setting)
  5. config_em0="192.168.0.100 netmask 255.255.255.0"
  6. routes_em0="default via 192.168.0.1"

  7. # Using DHCP)
  8. config_em0="dhcp"
复制代码
把net.em0加入default运行级
  1. (chroot) root # cd /etc/init.d
  2. (chroot) root # ln -s net.lo0 net.em0
  3. (chroot) root # rc-update add net.em0 default
复制代码
设置root密码
  1. (chroot) root # passwd
复制代码
安装其他的必须包
  1. (chroot) root # emerge dhcpcd
复制代码
退出chroot环境
在chroot里面的设置已经全部完成,现在退出chroot环境
  1. (chroot) root # exit
复制代码
把bootloader写入磁盘
  1. root # gpart bootcode -b /mnt/boot/pmbr ada1
  2. 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的引入,相信以后这些问题都能得到解决。在此之前,本系统不可用于生产环境
2.png

评分

参与人数 2可用积分 +11 收起 理由
send_linux + 6 很给力!
ulovko + 5 感谢分享 ^_^

查看全部评分

论坛徽章:
12
2015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56寅虎
日期:2014-05-10 09:50:35狮子座
日期:2013-09-08 08:37:5215-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:03
发表于 2012-08-29 10:29 |显示全部楼层
欢迎分享宝贵经验 ^_^

论坛徽章:
0
发表于 2012-08-29 11:25 |显示全部楼层
有兴趣的朋友也可以加入freenode的#gentoo-bsd交流下,里面的开发人员还是很热心的。

论坛徽章:
0
发表于 2012-08-29 11:36 |显示全部楼层
)支持BSD体系去GPL化。。。

论坛徽章:
0
发表于 2012-08-30 09:14 |显示全部楼层
顶一个
几年前用过gentoo-fbsd, 当时因为gentoo熟而对freebsd不熟情况下,折腾了一下
后来直接用FreeBSD后也没在用过了
进入gentoo-fbsd后,平常操作除了些底层相关的有影响外,其他跟gentoo下没多大区别,适合gentooer体验bsd用

评分

参与人数 1可用积分 +2 收起 理由
ulovko + 2 感谢分享 ^_^

查看全部评分

论坛徽章:
0
发表于 2012-09-05 16:45 |显示全部楼层
提示: 该帖被管理员或版主屏蔽

论坛徽章:
19
CU大牛徽章
日期:2013-04-17 11:48:262015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:43双鱼座
日期:2015-01-12 20:58:53水瓶座
日期:2014-07-31 22:02:02CU大牛徽章
日期:2013-04-17 11:48:40
发表于 2012-09-06 19:52 |显示全部楼层
这个神器,优势是什么?

论坛徽章:
5
技术图书徽章
日期:2013-08-27 10:03:49CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43技术图书徽章
日期:2014-04-24 15:51:26
发表于 2012-09-08 11:23 |显示全部楼层
回复 7# beyondfly


    只能说性能和定制性更好,门槛较高,面向开发人员的较多,因为他们更热衷于性能,况且软件性能也是他们的职责;

    相对来说,debian/redhat系的基本上是运维友好型 + 用户友好型的,很多成熟的方案都是debian/redhat 上搞的。

论坛徽章:
0
发表于 2012-09-18 09:29 |显示全部楼层
可以作为参考。。。

论坛徽章:
1
处女座
日期:2014-01-21 13:20:51
发表于 2012-09-27 11:46 |显示全部楼层
Gentoo好象好难,听说是最好的linux
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP