FreeNAS0.68开发人员手册作者:FreeNASProjectsTeam翻译,改编:石磊版权:转载请注明出处FreeNAS0.68开发人员手册1安装FreeBSD1.1安装1.2配置User和Shell1.2.1安装BashShell1.2.2配置Bash1.3升级FreeBSD宿主系统源代码树1.3.1安装CVSup1.3.2配置CVSup1.4重新编译所有代码1.4.1配置/etc/make.conf1.4.2编译所有1.4.2.1编译安装内核1.4.2.2编译安装根1.4.2.3升级port2安装FreeNAS2.1定义系统环境变量2.2创建根文件系统2.2.1创建工作目录2.2.2生成最小root文件系统2.3拷贝需要的二进制文件2.4准备/etc2.4.1安装etc和PHP配置脚本2.4.2其他注意事项(自己写,未验证)2.4.3配置平台变量2.4.4配置config.xml2.4.5时区Zone信息2.5编译内核2.5.1添加A100U2U2W-SCSI-Controller驱动程序2.5.2编译并压缩内核2.5.3安装模块2.5.4添加试验版本的geomRAID5模块2.5.6安装mbr2.6安装软件包2.6.1PHP52.6.1.1安装libxml22.6.1.2下载并解压PHP5.2写配置文件$FREENAS/usr/local/lib/php.ini2.6.2Lighthttpd2.6.3clog2.6.4MSNTP2.6.5ataidle2.6.6iscsiinitiator2.6.7Pure-FTPd2.6.8samba(CIFSserver)2.6.9NFS2.6.10Netatalk2.6.10.1安装DatabaseBerkeleyport2.6.10.2安装2.6.11RSYNC2.6.12Unison2.6.13scponly2.6.14openssh-portablewithHPNpatch2.6.15ntfs-3g2.6.16e2fsck2.6.17SMART2.6.18aaccli2.6.19beep2.6.20mDNSReponder(Applebonjour)2.7构建bootloader3.8添加库3.9添加WebGUI3.10创建msfroot2.11创建image(为了harddrive或CF)2.12创建cd-rom2.12.1安装CDRTools2.12.2创建可引导iso文件1安装FreeBSD1.1安装安装FreeBSD6.2版本只需要分两个区,/和swap。创建一个新用户并加入wheel组。启动SSHD服务。1.2配置User和Shell1.2.1安装BashShell$pkg_add-rbash#(-r表示使用远程下载:ftp)1.2.2配置Bash$chpassusername#(更改用户的登录shell=/usr/local/bin/bash,chpass实际会修改/etc/passwd文件)$cp.profile.bash_profile在.bash_profile中加入PS1=[\u@\h:\w]case`id-u`in0)PS1=${PS1}#;;*)PS1=${PS1}$;;esac1.3升级FreeBSD宿主系统源代码树1.3.1安装CVSupCVSup用于从远程服务器主机上的主CVS仓库发布和升级源代码树的软件包。用户可以用其保持其源代码树更新。$pkg_add-rcvsup-without-gui1.3.2配置CVSupCVSup的配置文件为/etc/supfile,可以参考/usr/share/examples/cvsup/下的模板文件撰写(具体参考FreeBSD用户手册附录A)$cp/usr/share/examples/cvsup/stable-supfile/etc/supfile$cp/usr/share/examples/cvsup/ports-supfile/etc/ports-supfile编辑/etc/supfile和/etc/ports-suppfile,寻找并更改下面,表示从那个站点下载defaulthost=cvsup.fr.FreeBSD.org***1.3.3更新源码g:代表没有GUI-L2:显示2级别的输出$cvsup-g-L2/etc/supfile$cvsup-g-L2/etc/ports-supfile1.4重新编译所有代码1.4.1配置/etc/make.conf安装完所有的FreeBSD的Patches,使用动态库重新编译所有的程序,来节约磁盘空间编辑/etc/make.conf加入(可参考/usr/share/examples/etc/make.conf更改/etc/make.conf)NO_SHARED=no1.4.2编译所有1.4.2.1编译安装内核$cd/usr/src$make-j4buildworld#在/usr/obj下建立一个全新的stable树,-j4表示并行编译4个程序$makebuildkernel#建立新的stable缺省内核$makeinstallkernel#安装内核$reboot1.4.2.2编译安装根启动时使用单用户模式,给loader传入参数boot-s$fsck-p#使用preen模式检测文件系统,仅仅修复一部分错误,遇到特殊错误会报错并退出$mount-u/#装载根分区。-u表示一个已经mount的磁盘状态应该改变$mount-a-tufs#-a表示mount/etc/fstab所有后面-t表示的ufs文件系统$swapon-a#打开交换分区。-a表示使用所有/etc/fstab中列出的swap,除了noauto$adjkerntz-i#保持cmos中的local和kernel中的UTC时间的offset,-i表示将adjkerntz加入启动和关闭中来自动运行,/etc/rc中会加入相应条目。$mergemaster-p#安装系统配置文件的脚本工具,建立一个临时的根环境,把新的配置文件映射到这个环境$cd/usr/src$makeinstallworld#安装新的stable程序树$makedelete-old#$mergemaster#更新/etc配置文件,需要与用户交互,如果是新安装的系统,则直接更新$reboot$makedelete-old-libs1.4.2.3升级port$pkg_add-rperl$cd/usr/ports$makeindex$pkg_add-rportupgrade#安装portupgrade工具,来简化port升级过程$portversion-l#显示需要升级的port$portupgrade-arR#开始升级port,-a升级所有已安装且过时的程序-r按照依赖关系递归的升级-R按照需要关系递归的升级2安装FreeNAS安装FreeNAS需要的工具和PHP脚本,如果指令不是很清楚,下载FreeNAS的根文件系统.tgz文件并与你安装的相比较来进行分析。2.1定义系统环境变量$exportWORKINGDIR=/usr/local/freenas$exportFREENAS=/usr/local/freenas/rootfs$exportBOOTDIR=/usr/local/freenas/bootloader#引导程序$exportCDROOT=/usr/local/freenas/cdroot#生成最终cdiso文件的目录2.2创建根文件系统2.2.1创建工作目录$mkdir/usr/local/freenas2.2.2生成最小root文件系统下载freenas-create-dir.sh,其内容为:#!/bin/sh##ThisscriptwaswrittenbyDavidCourtneyofUltradesic#:minibsd@ultradesic.com##AdaptedforFreeNASbyOlivierCochard-Labbé()#ModifiedbyVolkerTheile(votdev@gmx.de)MINIBSD_DIR=/usr/local/freenas/rootfs;#Initializevariables.opt_f=0#Parsethecommand-lineoptions.whilegetopts'fh'optiondocase$optioninf)opt_f=1;;h)echo$(basename$0):CreateFreeNASdirectorystructure;echoCommonOptions:;echo-fForceexecutingthisscript;exit1;;?)echo$0:Badoptionspecified.Exiting...;exit1;;esacdoneshift`expr$OPTIND-1`echoCreateFreeNASdirectorystructure...if[!-z$1];thenMINIBSD_DIR=$1;echoUsingdirectory$1.;fiif[1!=$opt_f-a-d$MINIBSD_DIR];thenecho;echo$MINIBSD_DIRalreadyexists.Removethedirectory;echobeforerunningthisscript.;echo;echoExiting...;echo;exit1;fi;mkdir$MINIBSD_DIR;cd$MINIBSD_DIR;#Createdirectoriesmkdirboot;#fdisk和bsdlabel使用mkdirboot/kernel;#保存kernel模块mkdirbin;mkdircf;#用于挂载CompactFlashcard,Harddisk..mkdirftmp;#用于通过WebGUI进行防火墙升级时挂载临时的内存文件系统mkdirconf.default;#保存出厂时的默认配置文件config.xmlmkdirdev;mkdiretc;mkdiretc/defaults;mkdiretc/inc;#保存boot脚本和WebGUI所需要的phpinclude文件mkdiretc/pam.d;mkdiretc/ssh;mkdiretc/iscsi;mkdirlib;mkdirlib/geom;mkdirlibexec;mkdir-m0777mnt;mkdir-m0700root;mkdirsbin;mkdirusr;mkdirusr/bin;mkdirusr/lib;mkdirusr/lib/aout;mkdirusr/libexec;mkdirusr/local;mkdirusr/local/bin;mkdirusr/local/lib;mkdirusr/local/sbin;mkdirusr/local/share;mkdirusr/local/share/locale;mkdirusr/local/etc;mkdirusr/local/文件mkdirusr/local/大多数的连接目标文件在FreeNAS运行时生成ln-scf/confconfln-s/var/run/htpasswdusr/local/在webGUI运行时用户配置的us