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
 
到此,完成整个系统的安装,如需安装其他工具软件,请参考网上其他教程。

gentoo在KVM+QEMU中安装笔记的更多相关文章

  1. kvm/qemu/libvirt学习笔记 (1) qemu/kvm/libvirt介绍及虚拟化环境的安装

    kvm简介 kvm最初由Quramnet公司开发,2008年被RedHat公司收购.kvm全称基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux的一个内核模块 ...

  2. KVM+Qemu+Libvirt实战

    上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚 ...

  3. 【KVM安装】在Centos6.8中安装KVM

    阅读目录 前题条件 章节1:安装Centos6.8-进行硬件检测 章节2:配置网络-设置桥接方式 章节3:安装KVM 章节4:OVA转qcow2 章节5:使用KVM创建虚拟机 章节6:参考链接 前题条 ...

  4. 开始使用gentoo linux——gentoo安装笔记(下)

    gentoo安装笔记(下) 上一章,已经对操作系统安装做了充分准备,并且已经从livecd(u盘系统)切换进入了gentoo安装环境中. 不过现在才是真正的开始!打起精神!这可不是在装ubuntu! ...

  5. 开始使用gentoo linux——gentoo安装笔记(上)

    gentoo linux安装笔记(上) 家里有一台破旧的富士通笔记本,08年至今质量依然杠杠的,但是性能已经不能和现代超极本同日而语,装上了ubuntu更是不敢恭维,别提gnome和kde的linux ...

  6. Linux:Gentoo系统的安装笔记(四)

    本来以为结束,谁知离正常的系统还是比较远,不过不放弃,这期的笔记我敢肯定是最后一期了,写了那么多我也觉得烦,被gentoo折磨烦了. 安装KDE桌面 选择正确的配置文件 先获取root权限来安装桌面环 ...

  7. Linux:Gentoo系统的安装笔记(三)

    这期笔记将是gentoo安装的最后一期了,虽然已经配置内核了,但是也要完成剩下的安装步骤,这离安装完成已经不远了,继续加油!!! 如果中断了安装,请看第二期的笔记进行恢复安装,但请重新编译一次内核,否 ...

  8. Linux:Gentoo系统的安装笔记(二)

    这期笔记继续安装Gentoo,上期我们已经到了可以进入新环境了,这意味着就是将原来的安装CD或其它介质改为硬盘上安装系统了,话不多说,马上开始! 恢复安装 由于我已经中断了安装,对于已经可以进入新环境 ...

  9. Linux:Gentoo系统的安装笔记(一)

    这次我选择安装Gentoo,用来做我学习的笔记.这次我是使用虚拟机安装Gentoo,一是方便操作,二是可以看着手册,一边看一边操作,严格按照手册上的步骤执行,一般是不会出现问题的. 查看手册最好学会看 ...

随机推荐

  1. ELK日志分析系统搭建

    之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...

  2. 01_垂直居中body中的应用

    1: 应用场景 在body中书写一个代码块, 使其相对于body垂直居中 <!DOCTYPE html> <html lang="en"> <head ...

  3. 9.python中sys.argv[]用法说明

    在python中sys.argv[]是用来获取命令行输入的参数的(参数和参数之间空格区分),sys.argv[0]表示代码本身文件路径,所以从参数1开始,表示获取的参数了 举例说明:创建一个程序名为t ...

  4. 初学者的API测试技巧

    API(应用程序编程接口)测试是一种直接在API级别执行验证的软件测试.它是集成测试的一部分,它确认API是否满足测试人员对功能.可靠性.性能和安全性的期望.与UI测试不同,API测试是在没有GUI层 ...

  5. es6种for循环中let和var区别

    let和var区别: for(var i=0;i<5;i++){ setTimeout(()=>{ console.log(i);//5个5 },100) } console.log(i) ...

  6. Scala实践6

    1  if表达式 Scala中if...else..表达式是有返回值的,如果if和else返回值类型不一样,则返回Any类型. scala> val a3=10 a3: Int = 10 sca ...

  7. 一个由"2020年1月7日 京东出现的重大 Bug 漏洞"引起的思考...

    2020年1月7日,京东由于优惠券设置错误,导致大量产品以0元或者超低价成交,并且发货.网传小家电被薅24万件,损失损失金额高达7000多万.很多网友表示收到货了,在网上晒出到货截图.下面为购买截图: ...

  8. feign架构 原理解析

    什么是feign? 来自官网的解释:Feign makes writing java http clients easier 在使用feign之前,我们怎么发送请求? 拿okhttp举例: publi ...

  9. cogs 3. 服务点设置 dijkstra

    3. 服务点设置 ★   输入文件:djsa.in   输出文件:djsa.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 为了进一步普及九年义务教育,政府要在某乡镇建 ...

  10. java.sql.SQLException: connection holder is null 问题处理

    问题描述 上上个周测试的时候突然报系统异常,于是我立即查看日志,发现是一个数据库异常:java.sql.SQLException: connection holder is null我第一想到的就是可 ...