一. 制作启动盘
因为提前下载好了 stage3, 所以直接把 stage3 做到镜像里面去,
首先打包stage3相关文件, tar -cvf stage3.tar stage3
然后挂载镜像 mount -o rw xxx.iso /mnt/gentoo
,
然后追加文件 mkisofs -o ~/new.iso /mnt/gentoo ~/stage3*
, 这样就得到了一个包含stage3的镜像. 但是我发现这样是启动不了的.
所有我后来先建立一个文件夹 gentoo, 然后把镜像里面的所有内容复制到gentoo里面,再把 stage3 也复制到 gentoo 里面.
然后 mkisofs -o gentoonew.iso -J -r -v -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "Gentoo_amd64_stage_20170105" gentoo
这样就作出了一个新的镜像.
mkisofs
来自:
mmkisofs
来自:
因为我笔记本是双硬盘,所以我的U盘是 /dev/sdc1
, 使用dd指令, dd if=xxx.iso of=/dev/sdc bs=1M
. 这样就得到一个包含了 stage3 的启动盘. 注意这边用sdc 而不是 sdc1.
但是老是提示我没有可用空间了, 然后我才发现我的U盘是山寨的, 8G 硬盘 只有480M可用.
然后我重新找了个U盘, 先用WIN 下面的 ultraiso 来做一个包含 stage3 的启动U盘. 然后使用这个启动盘启动进入系统.
二: 配置网络
配置WPA的无线网络, 首先使用 ifconfig 查看自己的无线网卡名是什么, 比如说 xxx
然后
vi /etc/conf.d/net
modules="wpa_supplicant"
wpa_supplicant_xxx="-Dwext"
config_xxx="dhcp"
vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="yyy"
psk="zzz"
proto=WPA
key_mgmt=WPA-PSK
group=CCMP
pairwise=CCMP
priority=2
}
ln -s /etc/init.d/net.lo /etc/init.d/net.xxx
/etc/init.d/net.xxx restart
ping 如果能够通了,那么无线网络设置就可以了.
三. 磁盘分区
parted -a optimal /dev/sda
mklabel gpt
unit mib
mkpart primary 1 3
name 1 grub
set 1 bios_grub on
mkpart primary 3 131
name 2 boot
mkpart primary 131 8323
name 3 swap
mkpart primary 8323 -1
name 4 rootfs
set 2 boot on
quit
这样磁盘就分好区了. SWPA 8G.
进行格式化
mkfs.ext2 /dev/sda2
mkfs.ext4 /dev/sda4
开启SWAP
mkswap /dev/sda3
swapon /dev/sda3
挂载硬盘
mount /dev/sda4 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda2 /mnt/gentoo/boot
date
解压 stage3
cd /mnt/gentoo
cp -rf /mnt/cdrom/stage ./
tar xvjpf stage3*.tar.bz2
四. 设置portage
设置 portage
vi ./etc/portage/make.conf
CFLAGS="-march=native -O2 -pipe"
MAKEOPTS="-j3"
选择镜像, 注意使用空格选择, 我选择了163. 这步骤如果没有选择,后面可以手动在 文件中加入 GENTOO_MIRRORS的变量来指定镜像.
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
mkdir /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
cp -L /etc/resolv.conf /mnt/gentoo/etc/
五. chroot
mount -t 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
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
六. 使用新的配置更新系统
emerge-webrsync
eselect profile list
eselect profile set 3 选择 desktop
emerge --ask --update --deep --newuse @world 这会花费非常多的时间,这边可以先不选择 desktop, 先把系统跑起来之后,再选择 desktop 然后更新.
七. 设置时间
ls /usr/share/zoneinfo/Asia
echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data
vim /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GBK
zh_CN.UTF-8 UTF-8
local-gen
eselect locale list
这里为了以后查资料方便,所以选择的是英文环境 en_US.utf8
eselect locale set 5
env-update && source /etc/profile && export PS1="(chroot) $PS1"
八. 编译内核
下载源码
emerge --ask sys-kernel/gentoo-sources
下载一个生成 initramfs工具
emerge --ask sys-kernel/genkernel
配置fstab
vim /etc/fstab
/dev/sda2 /boot ext2 defaults 0 2
因为手动配置内核很难保证一次完美,为了安装方便,第一次使用genkernel,后面有时间再手动慢慢来调教内核.
genkernel all
关于模块, 暂时先不加载模块, 后面再调整.
find /lib/modules// -type f -iname '.o' -or -iname '.ko' | less
vim /etc/conf.d/modules
按照驱动
emerge --ask sys-kernel/linux-firmware
九.配置fstab
查看分区标签
blkid
( 这个地方有错误, 这个错误导致了后面不能读写的问题, 具体在本文后面有叙述.)
vim /etc/fstab
LABEL=boot /boot ext2 noauto,noatime 0 2
LABEL=swap none swap sw 0 0
LABEL=rootfs / ext4 noatime 0 1
十.配置网络 (后来发现这一个步骤没有按照无线网卡软件, 也没有对无线网卡参考开头进行相应的配置, 导致了后面的问题.)
vim /etc/conf.d/hostname
hostname="xxx"
vim /etc/conf.d/net
dns_domain_lo="xxx"
emerge --ask --noreplace net-misc/netifrc
ifconfig 查看现在的网卡名称
vim /etc/conf.d/net
config_xxx="dhcp"
配置网络自启动
cd /etc/init.d
ln -s net.lo net.xxx
rc-update add net.xxx default
vim /etc/hosts
127.0.0.1 xxx.xxx xxx xxx
十一. 设置密码和启动
passwd
设置启动
vim /etc/rc.conf
vim /etc/conf.d/keymaps 默认的 us 键盘就可以
vim /etc/conf.d/hwclock 默认的UTC就很好.
十二. 系统工具
系统log
emerge --ask app-admin/sysklogd
rc-update add sysklogd default
文件系统
emerge --ask sys-fs/dosfstools
emerge --ask sys-fs/ntfs3g
DHCP
emerge --ask net-misc/dhcpcd
十三. 系统引导
配置GRUB
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask --update --newuse --verbose sys-boot/grub:2
emerge --ask --newuse sys-boot/os-prober 让grub 能够检测到其他的系统
ls /boot 查看/boot分区有没有加载
emerge --ask --verbose parted 安装分区软件
parted
print 检查 boot 分区有没有 bios grub, 没有就用下面这条设置,有的话就跳过.
(parted)set 1 bios_grub on
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
十四. 准备重启( 这时候我犯了一个大错误, 没有安装无线网卡的软件, 并且对网络进行配置, 这时候应该安装软件,并且参考开头部分对网络进行相应的设置)
emerge --ask --verbose livecd-tools
emerge --ask --verbose mirrorselect
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
十五. 重启能够进入系统, 发现不能上网, 重新 chroot, 然后安装 wpa_supplicant
vi /etc/conf.d/net
modules="wpa_supplicant"
wpa_supplicant_xxx="-Dwext"
config_xxx="dhcp"
vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="yyy"
psk="zzz"
proto=WPA
key_mgmt=WPA-PSK
group=CCMP
pairwise=CCMP
priority=2
}
ln -s /etc/init.d/net.lo /etc/init.d/net.xxx
/etc/init.d/net.xxx restart
ping 如果能够通了,那么无线网络设置就可以了.
挂载硬盘
mount /dev/sda4 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda2 /mnt/gentoo/boot
chroot
mount -t 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
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
emerge --ask --verbose wpa_supplicant
vim /etc/conf.d/net
modules="wpa_supplicant"
wpa_supplicant_xxx="-Dwext"
vim /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="yyy"
psk="zzz"
proto=WPA
key_mgmt=WPA-PSK
group=CCMP
pairwise=CCMP
priority=2
}
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
十六. 出大事情了. 不能写入硬盘
再次进入系统,发现硬盘上面的文件都不能写入, 错误是 EXT2的错误, 错误码 (2c0)
经过一段时间的排查, 发现是 fstab 里面的问题, 我这个系统里面必须写 /dev/sda4 这种模式, 不要用 LABEL=rootfs 这种模式. 修改之后重启就没有问题了.
十七. 双硬盘, 双系统
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
在显示的信息里面能够看到 grub发现了WIN7, 并且加入了启动选项. 重启, 选择WIN7, 顺利进入, 一切正常.
十八. 普通用户
useradd -m -G users,wheel,audio -s /bin/bash xxx
passwd xxx
到此, 整个安装过程结束. 达到了第一阶段完成. 后面就是 portage 之类的事情了.