gentoo在KVM+QEMU中安装笔记

时间:2024-01-26 10:13:52
gentoo是比较难安装的,本笔记主要是记录本次安装过程,以备参考。
1、首先,下载镜像,可以去国内各大镜像网站下载,我选择的是清华的镜像源:https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/
下载install-amd64-minimal-20200209T214502Z.iso和stage3-amd64-20200209T214502Z.tar.xz两个包
 
2、创建虚拟机
2.1、创建虚拟机磁盘
qemu-img create -q -f qcow2 gentoo.img 40G
2.2、创建虚拟机
sudo virt-install --connect qemu:///system \ --name gentoo \ --ram 2048 \ --vcpus=2 \ --disk path=/data/gentoo/gentoo.img,device=disk,bus=ide,size=60 \ --cdrom /home/neo/iso/gentoo-amd64-minimal-20200209T214502Z.iso \ --os-type=auto \ --network bridge=br0,model=virtio,model=e1000 \ --hvm \ --os-variant=auto \ --graphics vnc,listen=0.0.0.0,port=5914 \ --virt-type=kvm \ --noautoconsole
 
3、安装系统
3.1、虚拟机创建完成以后,打开VNC客户端连接虚拟机,显示进入系统,在boot提示符后边输入gentoo启动系统。
gentoo
 
系统启动以后自动进入命令行模式。
如果是真机安装,则需要添加额外的硬件配置,具体操作方式可以参考网上的教程。
 
3.2、配置网络
通过ifconfig查看当前网络配置,可以看到当前网络还未配置,一个简单的方法通过ping命令可以让gentoo自动配置网络,算是开发者给的一个小功能吧。
可以看到网络已经配置好,并且可以ping通网络了。
 
3.3、启动SSH服务,可以让我们进行远程安装
通过ifconfig查看网络IP,然后给虚拟机的root用户重置一下密码,就可以远程登陆了。
远程ssh登陆控制台。
网上教程有说如何配置代理的,这里不加赘述,如有需要可以参考网上的教程。
 
3.4、磁盘分区
本次选用BIOS+MBR的方式,分区采用fdisk工具,
fdisk /dev/sda
 
分区完成以后,如下图情况。
 
3.5、设置分区/dev/sda2为可引导分区,设置完成以后,通过p命令可以查看到该分区的启动列有*标记。
设置完成以后通过w命令将分区信息写入磁盘。
 
 
3.6、格式化磁盘,这里将/dev/sda2格式化为ext2。
mkfs.ext2 -T small /dev/sda2 mkfs.ext4 /dev/sda4 mkswap /dev/sda3 swapon /dev/sda3
 
 
3.7、挂载文件系统到livecd系统中。
mount /dev/sda4 /mnt/gentoo mkdir /mnt/gentoo/boot mount /dev/sda2 /mnt/gentoo/boot
 
 
3.8、将下载的stage3-amd64-20200209T214502Z.tar.xz包通过scp上传到系统/mnt/gentoo目录下,在宿主机系统下执行以下命令,输入root密码即可。
scp stage3-amd64-20200209T214502Z.tar.xz root@192.168.1.111:/mnt/gentoo/
 
在虚拟机下通过ls命令可能看到文件已上传。
解压stage包
tar xvpf stage3-amd64-20200209T214502Z.tar.xz --xattrs --numeric-owner
解压完成以后可以看到基本的文件目录树已创建好。
 
3.9、为了优化Gentoo,可以设置一些影响Portage的变量,Gentoo官方支持包管理器。 所有这些变量可以设置为环境变量(使用export),但这不是永久的。 为了保留设置,Portage读入/etc/portage/make.conf文件 ,一个用于Portage的配置文件。
注:要成功安装Gentoo,只需要设置下面提到的变量。
在你定义 CFLAGS和CXXFLAGS的时候,你需要把这些优化标记都合并起来。stage3文件里包含的你解压缩出来的默认值已经足够好了。
 
3.10、选择镜像站点
为了能更快的下载源代码,这里推荐选择一个快的镜像。提供一个叫作mirrorselect的好工具,它为用户选择所需镜像提供了一个很好的交换,只需要移动光标选择镜像并按Spacebar选择一个或多个镜像,我这里选择的是清华的源。
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
如下图:
查看make.conf文件可以看到新添加的源信息。
 
3.11、复制DNS信息
在进行新环境之前,还有一件要做的事情就是复制/etc/resolv.conf中的DNS信息。需要完成这个来确保即使进入到新环境后网络仍然可以使用,/etc/resolv.conf包含着当前网络中的DNS服务器。
如果不复制DNS信息,进入新环境后可能导致网络不可用。
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
 
3.12、挂载必要的文件系统
稍等片刻,Linux的根将变更到新的位置。为了确保新环境正常工作,需要确保一些文件系统可以正常使用。
mount --types proc /proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev
如下图
3.13、进入新的系统
现在所有的分区已经初始化,并且基础环境已经安装,是时候进入到新的安装环境了。这意思即系话将把根(所能访问到的最顶层位置)从当前的安装环境(安装CD或其他安装媒介)变为安装系统(叫做初始化分区)。因此叫作change root或chroot。
完成chroot有三个步骤:
1.使用chroot将根位置从/(在安装媒介里)更改成/mnt/gentoo/(在分区里)
2.使用source命令将一些设置(那些在/etc/profile中的)重新载入到内存中
3.更改主提示符来帮助我们记住当前会话在一个chroot环境里面。
chroot /mnt/gentoo /bin/bash source /etc/profile export PS1="(chroot) ${PS1}"}
如下图
从现在开始,所有的动作将立即在新Gentoo Linux环境里生效。
 
3.14、从网站安装ebuild数据库快照
emerge-webrsync
安装完成后会提示有新闻条目存在,可以先不用管这些,继续安装。
接下来是选择配置文件,如果需要安装桌面环境,则需要选择desktop配置,参考下图的设置,本次安装只安装基本系统,所以保持了默认。
3.15、更新@world集合
emerge --ask --update --deep --newuse @world
在Would you like to merge these packages? [Yes/No] 处输入yes后回车。
实际编译时间略长,并且中间可能会有停顿的情况,不要中止让其自动运行,最终会显示命令提示符才算完成,可以喝杯茶再来继续。
到些更新完成。
如果是安装的desktop,则需要配置USE参数,编辑make.conf添加下图中标红的信息。
nano -w /etc/portage/make.conf
把上图的红框部分添加进去,然后Ctrl+X,按Y并且回车即可完成保存并退出。
 
 
3.16、设置时区
echo "Asia/Shanghai" > /etc/timezone
重新配置sys-libs/timezone-data包,将会为我们基于/etc/timezone条目更新/etc/localtime文件。/etc/localtime文件用于让系统的C类库知道系统在什么时区:
emerge --config sys-libs/timezone-data
如下图
编辑/etc/locale.gen,配置编码
nano -w /etc/locale.gen
取消en_US前的#,添加zh_CN配置项,然后保存。
运行locale-gen重新配置系统时区。
locale-gen locale -a
设定系统级别的区域设置。
eselect locale list eselect locale set 5
重新加载环境
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
 
3.17、安装源码
Linux内核是所有发行版的核心,它位于用户程序和系统硬件之间,Gentoo提供给用户一些可选的内核源码,针对基于amd64-系统的Gentoo,建议使用包 sys-kernel/gentoo-sources。
emerge --ask sys-kernel/gentoo-sources
这将在/usr/src/中安装Linux内核源码,并有一个符号连接叫作linux将指向安装的内核源码:
 
 
3.18、配置内核
手工配置内核对于初学者看起来太恐怖,建议使用genkernel,它将自动配置并编译内核。
配置内核前需要做一些配置工作:
1)修改磁盘挂载配置表,添加如下信息:
/dev/sda2 /boot ext2 defaults 0 2
nano -w /etc/fstab
 
2)在make.conf中添加如下配置项
nano -w /etc/portage/make.conf
 
3)更新配置信息,在:后输入-3
etc-update
 
4)安装genkernel工具
genkernel配置内核的工作原理几乎和安装CD配置的内核完全一致。也就是说当使用genkernel建立内核,系统通常将在引导时检测全部硬件,就像安装CD所做的。因为genkernel不需要任何手动内核配置,它对于那些不能轻松的编译他们自动内核的用户来说是一个理想的解决方案。
首先emerge sys-kernel/genkernel,安装这个工具。
emerge --ask sys-kernel/genkernel
5)然后配置内核
genkernel all
这个过程着实有点长,机器性能不好的可能需要一个下午的时间,期间可以去玩耍一下。
 
4、配置系统
内核编译安装完成以后,需要配置一下系统才可以正常使用,比如安装一些模块什么的,如果需要可以参考网上的其他教程,这里只做为虚拟机,不需要安装其他模块。
4.1、安装固件和文件编辑器
emerge --ask sys-kernel/linux-fireware emerge --ask app-editors/vim
 
4.2、配置其他分区挂载点
将所有分区都配置在fstab中,这样系统启动的时候才能正确加载相应的分区。
vi /etc/fstab
编辑完成以后输入以下命令保存并退出编辑器
:wq
 
4.3、配置网络信息
vi /etc/conf.d/hostname
修改命令
安装网络工具
emerge --ask --noreplace net-misc/netifrc
修改root密码
passwd
 
4.4、安装系统工具
emerge --ask app-admin/sysklogd emerge --ask sys-apps/mlocate
 
4.5、设置远程访问
rc-update add sshd default
如果需要终端访问(在远程服务器的情况下这是可能的),请在 /etc/inittab中取消注释控制台部分:
vi /etc/inittab # SERIAL CONSOLES s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100 s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100
 
4.6、安装DHCP客户端
emerge --ask net-misc/dhcpcd
 
 
 
5、配置引导程序
完成配置Linux内核、安装系统工具和编辑配置文件,现在是时候去安装Linux安装的最后一个重要的步骤:引导器。
5.1、安装grub2
emerge --ask --verbose sys-boot/grub:2
因为是源码编译,过程有点长。
 
5.2、激活grub2
grub-install /dev/sda
显示No error reported.说明安装成功。
 
5.3、配置grub
grub-mkconfig -o /boot/grub/grub.cfg
显示done则配置完成。
 
 
6、重启系统
到此,gentoo基本系统已安装配置完成,接下来重启动进入新的系统。
exit cd ~ umount -l /mnt/gentoo/dev umount -R /mnt/gentoo reboot
重新启动以后,就可以通过VNC或ssh登陆新的系统了。
因为本机用的是命令行下的KVM+QEMU虚拟机,输入reboot命令行,新系统可能并不会成功重启,需要在宿主机下手工启动一下。
virsh start gentoo
 
如果需要ssh远程登陆系统,则需要在root用户下创建一个普通用户来用,因为root默认下是不允许ssh远程的。
useradd -m -g users -G wheel -s /bin/bash Name passwd Name
 
到此,完成整个系统的安装,如需安装其他工具软件,请参考网上其他教程。