近几天在 Louisa 的指导下安装Gentoo系统。这其实是很复杂的学问。我怕我会忘记很多东西,所以打算整理一下,放到这个博客里。

机子上原本是Win10,抹去了系统后,硬件如下:

1
2
3
4
5
6
7
8
9
10
电脑型号: 神舟 CN15S 笔记本电脑

处理器: 英特尔 Core i7-6700HQ @ 2.60GHz 四核
主板: Notebook N15_17RF
内存: 8 GB ( 英睿达 DDR3L 1600MHz )
主硬盘: 日立 HGST HTS721010A9E630 ( 1 TB / 7200 转/分 )
显卡: Nvidia GeForce GTX 965M ( 2 GB )
显示器: 冠捷 AOC2280 2280W ( 21.7 英寸 )
声卡: 英特尔 High Definition Audio 控制器
网卡: 英特尔 Dual Band Wireless-AC 3165

另外还有一台Mac,用它来做安装期间查资料等的工作。

首先是制作Gentoo启动盘

制作启动盘

这个地方做了很多次,因为中间试图换装Arch Linux。

所以除了最开始在Win10上制作启动盘之外,还在Mac上面制作过。

当然首先你要有个U盘。

Windows上制作。

  1. 下载Gentoo

    amd64 和 x86 对应64位机和32位机。

    如果没有经验的话,建议选择live DVD。

  2. 使用UItraISO制作启动盘

    下载一个UItraISO,打开。

    选择盘符,选择下载好的iso文件。

    写磁盘。

在Mac上制作

  1. 下载Gentoo

    在Win上制作一样

  2. 使用磁盘工具抹掉U盘

    磁盘工具.app应用程序/实用工具文件夹下。打开后选择你的U盘,点图标“抹掉”,格式为Mac OS 扩展 (日志式),抹掉

  3. unmount U盘

    找出U盘文件:

    1
    diskutil list

    可以认出你的U盘文件的标识符, 类似/dev/disk2

    1
    diskutil unmountDisk /dev/disk2
  4. 写入U盘文件

    将第一步下载好的iso文件写到U盘里

    1
    sudo dd if=~/Downloads/livedvd-amd64-multilib-20160704.img.dmg of=/dev/rdisk2 bs=1m

    注意这里的of 文件是rdisk2 而不是disk。

    此前查到的有一步是需要制作img文件,但是发现没有这样的一步也是可以的.

    这里可能需要一点时间,没有输出。等待着就好了。

  5. 拔出U盘

    在上一步结束后,可能弹出窗口提示无法读取U盘,只要选择推出即可。

    否则直接:

    1
    diskutil eject /dev/disk2

    讲道理的话,直接拔也可以

UEFI启动

进到电脑BIOS选单,把safe boot关掉,然后选择从U盘启动。

各个型号的电脑BIOS的方式不一样,因此此处从略。

我的神舟电脑是F2或F7

在启动之后,就能见到一个有图形界面的Gentoo了。随便选择一个图形界面,然后Login登陆进去,就可以体验到Gentoo的样子了。但是这实际还是在启动盘的系统上,所以我们其实还是需要在终端下继续进行我们接下来的操作。

在终端里的时候直接输入sudo su登陆到root用户。因为我们经常需要更高的权限来做安装系统的相关工作。

使用SSH连接(Optional)

这是因为我需要粘贴 路姐 给我的代码,所以我需要一个SSH来连到Gentoo上。

首先是让Gentoo连上网络。因为我的电脑好像这方面比较奇怪,所以既尝试了有限连接又尝试了无线的连接。

这里可以参阅Gentoo的文档

讲道理的话,有图形界面的方式可以连接网络,但是不知道为什么我的电脑没有成功。所以还是以终端的方式进行好了。

有线连接 PPPOE

学校有线是pppoe

ip addr确认你的有线网卡:一般是以en或者eth0开头的。

直接使用pppoe-setup指令即可。按照提示一步一步来即可,除了中途选网卡的时候和pppoe的账号密码,其他均是默认即可。

结束之后pppoe-start连接pppoe。

无线方式连接 WPA2

寝室无线的加密方式是WPA2个人版。

我的liveDVD版本的U盘系统里自带NetworkManager。所以在终端里输入nmtui然后选择你的Wifi登陆即可。

在配置网络结束之后ip addr看看有否分配到ip地址

配置SSH服务器

配置root用户的密码(在root用户下)。

1
passwd

启动ssh服务

1
/etc/init.d/sshd start

此时按理来说就可以在其他机子上进行访问了,但是无法用root账户进行访问。但是现在只有root账户,所以需要在 /etc/ssh/ssh_config 中将

1
PermitRootLogin no

后面改为yes。

之后重启服务:

1
/etc/init.d/sshd restart

此时可以在本机尝试进行登录。

如果出现在本机登录无法成功的情况,则在/etc/hosts.allow中加上这么一行:

1
sshd: <你的另一台电脑的ip>:ALLOW

挂载文件系统

输入lsblk命令以查看磁盘

1
2
3
4
5
6
7
8
9
10
11
livecd ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 14.3G 0 disk
|-sdb4 8:20 1 270M 0 part /mnt/cdrom
`-sdb1 8:17 1 14.3G 0 part
loop0 7:0 0 236M 1 loop /mnt/livecd
sda 8:0 0 931.5G 0 disk
|-sda2 8:2 0 1K 0 part
|-sda5 8:5 0 233G 0 part
|-sda1 8:1 0 233G 0 part
`-sda6 8:6 0 233G 0 part

由此可以知道sda是电脑的硬盘,而sdb是U盘。

接下来打算512MB的boot、10GB的swap空间、然后留50GB空间给root,剩下全部是home的内容。

1
parted -a optimal /dev/sda

parted是一个拆分磁盘空间的命令行。

接下来:

1
2
3
4
5
6
7
8
mklabel gpt
unit mib
mkpart primary 1 513
name 1 boot
mkpart primary 513 -1
name 2 rootfs
set 1 boot on
quit

依次做了这些:

  • 制造一个新的gpt类型的磁盘标签,用于EFI启动
  • 设置默认单元为mib
  • 将一个1到513的空间分离出来,作为主空间
  • 然后将它命名为boot
  • 将余下的所有空间分离出来,作为根目录
  • 然后设置从主分区启动
  • 退出parted

在退出前输入print命令,以检查实际的情况。如果一切正常,你的输出应该类似这样:

1
2
3
4
5
6
7
8
9
10
(parted) print
Model: ATA HGST HTS721010A9 (scsi)
Disk /dev/sda: 953870MiB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1.00MiB 513MiB 512MiB boot boot, esp
2 513MiB 953869MiB 953356MiB rootfs

设置第一个分区为FAT32文件系统

1
mkfs.fat -F32 /dev/sda1

接下来继续划分rootfs的空间

1
2
3
4
5
6
pvcreate /dev/sda2
vgcreate vg1 /dev/sda2
lvcreate --size 10G --name swap vg1
lvcreate --size 50G --name root vg1
lvcreate --extents 100%FREE --name home vg1
ls /dev/mapper

依次做了这些:

  • 创造一个物理卷sda2
  • 然后利用这个物理卷创建物理卷组[^1]vg1
  • 分一个10G的逻辑卷让他名为swap
  • 分一个50G的逻辑卷让它名为root
  • 将余下的部分分一个逻辑卷,命名为home
  • 列出/dev/mapper

如果一切正常,你的输出应该类似这样:

1
2
livecd ~ # ls /dev/mapper
control vg1-home vg1-root vg1-swap

现在我们已经有了相应的盘区了,接下来要将她们挂载到我们的U盘的文件系统中以使用并操作它们。

1
2
3
4
5
6
7
8
mkswap -L "swap" /dev/mapper/vg1-swap
mkfs.ext4 -L "root" /dev/mapper/vg1-root
mkfs.ext4 -m 0 -L "home" /dev/mapper/vg1-home
swapon -v /dev/mapper/vg1-swap
mount -v -t ext4 /dev/mapper/vg1-root /mnt/gentoo
mkdir -v /mnt/gentoo/{home,boot,boot/efi}
mount -v -t ext4 /dev/mapper/vg1-home /mnt/gentoo/home
mount -v /dev/sda1 /mnt/gentoo/boot

这些语句做的是:

  • 制作swap空间的vg1-swap和ext4格式vg1-root vg1-home
  • 将它们挂载到文件系统/mnt目录下的相应位置。(之后将以/mnt作为新系统的根目录。

到这个地步文件系统是基本完成了。

下一步将是开始准备编译内核的相应部分,首先需要下载编译的工具,因而也需要网络;所以如果跳过了SSH这一步的朋友,还是需要看看如何配置网络。

收尾的说明

这往后的内容将在后面跟着。总之第一天弄的时候我是在这里结束的。

其实到此为止可以直接进行关机操作了。但是为了确保你的改动写入磁盘,你最好执行sync指令。

然后如果你足够体贴,想去确保安全,可以手动unmount你的文件系统。

1
2
3
umount /mnt/gentoo/home
umount /mnt/gentoo/boot
umount /mnt/gentoo/

然后再进行关机。