admin 管理员组

文章数量: 887021

为什么80%的码农都做不了架构师?>>>   

    Gentoo是一个不太适合新手的Linux发行版,倒不是说比Ubuntu等高端多少,而是比较麻烦,需要折腾几下。但凡问题都是可以解决的,只是时间和精力的问题。从上个星期六开始,搞到今天下午,终于搞定了在windows8上安装Gentoo。因此记录下来,也给其他同志一个参考。因为机器配置的差异性,有些问题可能你不会遇到,也可能你会有新的问题,因此如果你的确要参考,请先阅读完本文。

    因为直接安装双系统风险较大,没有经验不建议直接效仿,最好在虚拟机上自己先试一试。

    参考文章:

    http://www.gentoo/doc/en/handbook/handbook-amd64.xml

    http://wiki.gentoo/wiki/UEFI_Dual_boot_with_Windows_7/8


安装准备

    如果是在虚拟机上,可以直接参考Gentoo Handbook来试着编译一次,熟悉一下安装过程。

安装环境

    机器:MSI GE60 2OC 219 XCN (i74700MQ, GT750M, 4G RAM, 1T SATA)

    操作系统:Windows8.1 Pro  (UEFI + Gpt分区) 另外有4G U盘一个

    首先应该下载一个支持UEFI启动的Systemresccd,用来安装你的系统;以及stage3的最新包。stage3是什么?个人理解就相当于一个系统的毛坯吧,解压完就是各个文件结构。

    从最后一个盘中压缩30G磁盘。现在你要担心你的数据了,有时候,一不小心就把自己的数据搞掉了,因此还是备份比较好。将U盘格式化为FAT32格式,并制作安装盘。这时,你可以把stage3的包放到U盘的根目录下,以及把安装步骤保存到文本中,也放进去,这样装系统的时候可以直接从U盘里面获取,不需要下载,并可以在安装系统的时候,直接参阅步骤。

安装rEFInd

    refind用来做启动项管理,相当于Grub2。windows下安装refind比较简单,实际上就是一个文件拷贝的功能。注意需要在主板上禁用掉secure boot功能,否则安装完重启还是会直接进入windows。成功禁用的标志就是windows右下角提示“SecureBoot 未正确配置”。不要在意这些细节了,“呵呵”。

    好了,插上U盘,现在重启吧。如果顺利的话,就可以看到windows和u盘的两个启动项了,选择后者,就可以看到一系列的启动选项。如果你和我一样不幸,选择任何一个都不能进入Linux,而是停留在一个黑屏上,硬盘也不闪动,呵呵,那么强制重启吧。这个问题纠结了我一阵子,解决的方法也很简单,重启,进入windows,修改U盘里面的grub配置文件:

# Display settings
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output console
fi

(把terminal_output 后面的gfxterm修改为console)。究其原因,可能是系统里没有独立显卡的驱动造成的吧。而且还有一个奇怪的现象,点击一次之后,不能进入系统,又回到启动项那里;再点一次,会提示error couldn't terminate EFI services. 不知道是何原因,反正按键之后,能够进入系统、


Gentoo安装

网络设定

    很不幸,进入系统之后,不能识别我的网卡。使用ifconfig -a查看网卡是否可用,如果只有一个lo,而lspci 命令可以看到网卡设备,那么就是没有合适的驱动了。因为本机是杀手网卡,而杀手网卡在Linux的驱动模块为alx(已经集成到Linux 3.10的内核中了)。如果网络不通,那么后面的步骤就比较困难了,幸好SystemRescueCD提供了一个alternative kernel with default options的启动项,它使用的是比较新的内核,已经集成了我的网卡驱动了,进入系统之后,就可以直接上网了(DHCP)。

    如果需要PPPoE拨号上网的话,可以用pppoe-setup命令输入帐号及密码,再pppoe-start拨号。也可以直接参考Configuring your Network。

磁盘分区

    这里就要开始注意了,请按照Use gdisk instead of fdisk or parted to create gentoo partitions一文来进行分区,可以使用+100M, + 2G这样来指定分区大小。我的分区也很简单,和教程一样,/boot,swap,/三个分区,分别对应到了/dev/sda8 , /dev/sda9, /dev/sda10。其中交换分区分了2G。在最后保存的时候,好像报了一个错误,大意是“这个错误可能没有影响,或者已经损坏了你的磁盘”吧,我重试过分区,也是一样的错误。但是的确没有什么影响,windows和Linux最终都工作的很正常。

    分区完之后,需要格式化磁盘,并挂载分区。

安装基本系统

    因为在之前就已经把stage3的包放到了U盘中,因此现在是时候拷贝到新的文件系统中了。虽然是放在根目录的,但是进入了系统之后,这个就被挂载到一个t开头的文件夹下面了,不过记不得了,将它拷贝到/mnt/gentoo/,解压即可,参照Installing the Gentoo Installation Files来进行。现在设置USE和编译选项。USE是个啥?刚开始也纳闷了好久,不知道该怎么设,后面大概知道这就是个全局变量吧,相当于是各个软件的编译选项的默认配置吧。不管了,先看看我的make.conf

CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j5"
CHOST="x86_64-pc-linux-gnu"

USE="-gtk -gnome X qt4 kde dbus dvd alsa cdr bindist mmx sse sse2"

PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"

GENTOO_MIRRORS="ftp://mirrors.xmu.edu/gentoo"
SYNC="rsync://rsync.gentoo/gentoo-portage"

    -march=native是让gcc自动识别cpu架构,-j5应该是5个并行编译吧,我觉得应该设置到8才对,i7不是支持8线程么,呵呵。USE这样是配置安装kde的,和文档差不多,加了个X。因为对这个东西不太熟,所以配置的也就这样吧。后面是Gentoo的安装源和同步源,选择的厦大的镜像,速度还可以。还有其他的配置可以参考Installing the Gentoo Base System一章来进行,其中profile我选择的是desktop/kde。搞完这些后,就chroot到我们的新系统中了。

内核配置

    下面就开始配置内核了。因为默认安装的内核是3.10.xx吧,我想用最新的3.12.6,驱动更加好办一些。而3.12.6还不是稳定版,因此需要处理一下。

    emerge  --autounmask-write gentoo-source:3.12.6
    etc-update
    emerge  --ask gentoo-source:3.12.6

    内核的配置最好手动进行。一个比较好的做法是,用一个虚拟机挂载SystemRescueCD,进入图形界面(启动项中有选择),在虚拟机下载内核并配置好了,将配置文件(最后是一个.config)拷贝过来直接用即可。所以可以在虚拟机中

cd /usr/src/linux
make xconfig

    使用xconfig会得到一个图形化的界面,点击之后,在下方都有说明,并会提示你“if unsure,choose N"之类的,可以自行决定,因为本人也是新手,第一次配置,就不敢指手画脚了,反正这东西不要怕就行了。在驱动部分,选择自己的机器设备驱动,其他的都可以去掉。例如网卡驱动,除了我的杀手网卡和无线网卡编译成模块之外,其他的型号驱动都取消了,编译了也用不着。

    由于使用UEFI,有些选项需要进行设置(貌似默认基本上都有吧),记得参考Kernel configuration。

    使用前文提及的方法很容易就可以把配置文件拷贝到U盘再拷贝到新系统中,放置到内核源码目录下即可(/usr/src/linux)。现在就可以开始编译了。编译过程实际上很快,在本机不超过10分钟,每次都是上完厕所回来竟然发现编译完了,哈哈。编译完成之后,拷贝到启动目录,疑问refind的缘故,需要改名为bzImage-*或者vmlinuz-*:

cp arch/x86_64/boot/bzImage /boot/bzImage-3.12.4-gentoo

    接着需要做的一个是生成initramfs,这个需要生成,在后面配置开机启动项的时候需要用到它。

emerge genkernel
genkernel --install initramfs

    然后将生成的initramfs更名为initramfs--3.12.4-gentoo(和内核后面的一致)。这样做的目的是因为如果不生成initrams或者名称不对,后面启动的时候,会提示cannot open root device .的错误。这个错误很常见吧,论坛多数说这个是磁盘驱动编译不对的缘故,但实际上貌似不是。反正按照这样做,就不会有这个错误了。

系统配置

    参照教程完成其他配置,以及安装常用工具。因为使用refind作为启动项管理,因此不需要安装Grub等其他启动配置软件。安装完成之后,重启系统。


启动项管理

    现在重启之后,应该就可以看到Linux的启动项了,如果没有,请重新使用光盘进入系统,挂载分区后,检查/boot下的bzImage是否名称错误,是否存在等等。现在进入系统之后,还会报错:could not determine root device.然而输入/dev/sda10(我的/分区)之后,系统照常启动。因此我开始怀疑是启动项的问题,果然,后面才发现需要配置一下refind的配置文件。

    手动修改吧:

#不让他自动扫描我的/boot分区所在的磁盘,否则出现两个启动项,一个自动扫描的,一个是自己配置的
dont_scan_volumes "boot"
menuentry Gentoo {
    icon EFI/refind/icons/os_gentoo.icns
    volume boot
    loader \bzImage-3.12.6-gentoo
    initrd \initramfs-3.12.6-gentoo
    options "root=/dev/sda10 ro"
}

    其中boot是分区卷标,必须先进入到Linux后修改:

e2label  /dev/sda8 boot
e2label /dev/sda10 gentoo
#查看Label
blkid /dev/sda8

    将配置文件采取安装的相同做法,替换掉原有配置即可。好了,现在,一个完美的Win8+Gentoo双系统就这样成功了。看似很容易的一件事情,却花费了我几天的 时间,才终于搞成功,一度觉得解决不了了。不过每次遇到问题,都是一种不服输的态度,因为有问题总会有原因,有原因就一定可以解决嘛。

安装KDE

    下面安装KDE吧,没有图形界面,有啥意思?

    emerge --ask xorg-server
    emerge --ask kdebase-meta
    emerge --ask kdm

    注意xorg-server和kdebase的编译时间都很长,以我的经验来看,xorg需要大约1小时,kde要两小时。因此一定要有心理准备,并且别在上班的时候干这事(坐在那里真是无聊)。

   修改 /etc/conf.d/xdm,

DISPLAYMANAGER="kdm"

    让kdm开机启动,这样就能直接进入kde了:

rc-update add xdm default


    好了,就记录到这里吧。还有一大堆衣服要洗,已是半夜了,好冷好冷,望各位看官勿喷。

转载于:https://my.oschina/std/blog/191521

本文标签: 双系统 Gentoo