前言
我想在自己的Macbook上搞套开发环境,但比如Mysql之类的软件不想安装在Macbook的系统里,于是就想虚拟一个系统作为服务器。Gentoo官方的文档已经非常详细,信息量巨大,如果你肯专研,那么可以从中学习到很多Linux和Gentoo的知识,单单只说安装,整个过程并没有那么复杂,如果你的网速还可以,安装Gentoo大约不到2小时,我也是反复安装才成功的。
准备
- 在Oracle VirtualBox网站下载虚拟机:VirtualBox
- 如果你宿主系统是Windows,你最好有个SSH Client,比如SecureCRT或者Putty。
- 在Gentoo网站下载(版本可能会更新,事先下载好):
- install-x86-minimal-20120131.iso
- stage3-i686-20120131.tar.bz2
- portage-20120130.tar.bz2
虚拟电脑设置
- 假设你已经为Gentoo新建好了虚拟电脑,进入虚拟电脑的设置窗口;
- “storage”选项卡,增加一个IDE控制器,选择你下载的Minimal ISO;
- “网络”选项卡,保持Adapter1的设置不动保证你的虚拟电脑可以共享你的机器网络,增加一个Adapter2,连接方式选择“Bridged Adapter”,保证虚拟电脑和你的机器在一个网段里,这样你可以SSH到虚拟电脑。
配置安装环境
设置网络
# 按照之前的步骤,我们其实设置了两个网卡——eth0, eth1,查看一下,如果配置不正确,命令可能告诉你网卡不存在。
ifconfig eth0 && ifconfig eth1
# 现在让网卡工作起来:
dhcpcd eth0 && dhcpcd eth1
这个时候应该能ping通www.163.com了, 并且从命令的输出可以看到虚拟电脑的IP(192.168.xxx.yyy),SSH Client通过这个IP访问虚拟电脑。
现在给root设置一个密码,
passwd
# 现在可以通过SSH Client来访问虚拟机了。以下的操作都可以在ssh client里完成,你可以最小化虚拟机了。然后执行分区
fdisk /dev/sda
接下来是和fdisk进行交互了,请参考Gentoo官方手册,这里只列出基本步骤。
1. 创建一个用来挂载 /boot 的启动分区;
2. 创建一个用来swap分区;
3. 创建一个挂载 / 的系统分区
4. 创建文件系统
# sda3为ext3,挂载/mnt/gentoo
mkfs.ext3 /dev/sda3
mount /dev/sda3 /mnt/gentoo
# sda1为ext2,用于挂载boot
mkfs.ext2 /dev/sda1
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
# 创建交换区
mkswap /dev/sda2 && swapon /dev/sda2
安装包
cd /mnt/gentoo
# stage3 tarball是一个含有最小Gentoo环境的压缩包,我用迅雷先下载好了,通过scp或者sftp上传到虚拟电脑即可,上传好了解压。
tar xvjf stage3-i686-20120131.tar.bz2
# portage 是gentoo的软件包管理工具,最主要的命令emerge。先前已经下载好了,上传到虚拟电脑解压出来。
tar xvjf portage-20120130.tar.bz2
安装源
这有点像Ubuntu装好之后要先设置软件源,这里也差不多,mirrorselect是个类似窗口一样的交互界面,选择大陆的镜像,我选择的是网易的。
mirrorselect -i -o >> /mnt/gentoo/etc/make.cnf
# 再挑一个SYNC服务器,用来更新Portage。
mirrorselect -i -o -r >> /mnt/gentoo/ect/make.cnf
# 拷贝resolv.cnf
cp -L /ect/resolv.conf /mnt/gentoo/etc/
挂载proc和dev
mount -t proc none /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev
安装Gentoo
进入安装环境
搞定一切,可以进入新环境了。
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1=”(chroot) $PS1”
# 现在可以使用emerge命令了,先更新一下。
emerge --sync
完了之后可以先安装几个软件玩一玩,也方便下面的安装。
没有vim,先搜索一下Vim,找到有这个软件安装之,顺便把less也安装一下,后面要用到。
emerge --search vim
emerge vim && emerge less
选择profile,你可以理解为选择安装Gentoo的用途,虚拟机做服务器,所以选的是server,先看一下提供那些预设的profile,记住你选择的编号。
eselect profile list
eselect profile set 5
下载内核
现在可以来整内核了,很简单就是用emerge安装gentoo-sources:
emerge gentoo-sources
# 这个过程比较长⋯⋯不过总算结束了。这步结束之后,最后一行会显示内核的版本号,你可以把它记下来。
cd /usr/src/linux
配置硬件
make menuconfig
接下来这个会让你一头雾水,靠,我怎么可能能把自己的机器搞得这么清楚?好吧,如果你是个硬件专家,这玩意儿肯定难不倒你,而我在虚拟机里,我该怎么选?所以我直接退出了。
编译和安装内核
make && make modules_install
这也是个漫长的过程⋯⋯完成之后,拷贝内核镜像到/boot
,<>
内的是之前你看到的版本号,你可以不这么命名,这里命名实际上是随意的,最好规范点吧,以后升级内核的时候也容易辨认,不过不管你改成了什么,记住它,到后面配置启动时有用。
cp arch/i386/boot/bzImage /boot/kernel-<x.xx.xx>-gentoo-r1
配置分区
编辑/etc/fstab
文件
/dev/sda1 /boot ext2 noauto,noatime 1 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext3 noatime 0 1
none /dev/pts devpts defaults 0 0
修改hostname
编辑/etc/conf.d/hostname
文件,这个 hostname不能是localhost,否则mysql启动不了。
配置网络
编辑/etc/conf.d/net
文件,因为虚拟电脑有两个网卡,都通过dhcp连接网络。
config_eth0=”dhcp”
config_eth1=“dhcp”
然后设置网络自动启动
cd /etc/init.d
ln -s net.lo net.eth0 && ln -s net.lo net.eth1
rc-update add net.eth0 default && rc-update add net.eth1 default
# 改下root密码
passwd
必要的软件
# 日志工具
emerge syslog-ng
rc-update add syslog-ng default
# 定时任务工具
emerge vixie-cron
rc-update add vixie-cron default
#文件索引
emerge mlocate
# ssh服务自动启动
rc-update add sshd default
# dhcpcd服务
emerge dhcpcd
配置bootloader
完成了这个,你就可以进入Gentoo了。先安装grub
emerge grub
编辑grub配置文件/boot/grub/grub.conf
,如下(和版本有关的自己替换一下):
title Gentoo Linux 3.1.15-r1
root (hd0,0)
kernel /boot/kernel-3.1.15-gentoo-r1 root=/dev/sda3
以上/boot/kernel-
grub --no-floppy
grub>root (hd0, 0)
grub>setup (hd0)
grub>quit
现在,执行关机
shutdown -h now
结束
重新设置一下虚拟电脑,把之前设置的ISO启动盘去掉,然后启动虚拟电脑,祝你好运!