Win8+Gentoo双系统安装

原创
2014/01/09 00:04
阅读数 3.6K

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

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

    参考文章:

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

    http://wiki.gentoo.org/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.cn/gentoo"
SYNC="rsync://rsync.cn.gentoo.org/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


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

展开阅读全文
打赏
1
7 收藏
分享
加载中
你的斐然文采,让我立刻认出来是你~
2014/03/14 18:04
回复
举报
子矜博主

引用来自“紫电清霜”的评论

道长是linux专家

马甲改了你都能认出来。。。
2014/03/14 17:59
回复
举报
道长是linux专家
2014/03/14 16:43
回复
举报
子矜博主
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia
2014/01/17 11:23
回复
举报
子矜博主
https://github.com/Bumblebee-Project/bumblebee-gentoo/issues/19
2014/01/17 11:15
回复
举报
子矜博主
gtf 1920 1080 60
xinitrc:
xrandr --setprovideroutputsource modesetting NVIDIA-0

xrandr --newmode "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
xrandr --addmode eDP-0 1920x1080_60.00
xrandr --output eDP-0 --mode 1920x1080_60.00
2014/01/16 22:47
回复
举报
子矜博主
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection


Section "Device"
Identifier "intel"
Driver "modesetting"
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection
2014/01/16 22:33
回复
举报
子矜博主
xorg.conf:
nvidia-xconfig: version 331.38 (buildmeister@swio-display-x64-rhel04-15) Wed Jan 8 19:53:14 PST 2014

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
Inactive "intel"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
# generated from data in "/etc/conf.d/gpm"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection

Section "Device"
Iden
2014/01/16 22:32
回复
举报
子矜博主
xinit.rc:
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx

xrandr --setprovideroutputsource modesetting NVIDIA-0

xrandr --addmode eDP-0 1920x1080_60.00
xrandr --output eDP-0 --mode 1920x1080_60.00

startkde
2014/01/16 22:32
回复
举报
子矜博主
emerge nvidia-drivers xf86-video-modesetting
2014/01/16 22:32
回复
举报
更多评论
打赏
20 评论
7 收藏
1
分享
返回顶部
顶部