步骤/目录:
1.烧录镜像与安装界面
2.安装CentOS
3.初始化操作
    (0)静态局域网IP
    (1)合盖设置
    (2)基础设置
    (3)ufw
    (4)lm_sensors与watchdog
    (5)安全性设置
    (6)python3
    (7)修改DNS
    (8)docker
    (9)其他

本文首发于个人博客https://lisper517.top/index.php/archives/57/,转载请注明出处。
本文的目的是在废旧笔记本上安装CentOS系统。相比于树莓派,好处是断电后的续航能力、自动关机,树莓派在这方面还是不够完美。
本文实验日期为2022年10月6日,笔记本为2011年的上网本,cpu 1.66GHz,内存2G,硬盘250GB。之前装过 CentOS 8 桌面版,有点卡,这次选择 CentOS 7 无桌面版。提醒一下,如果想省心,最好安装Ubuntu。

1.烧录镜像与安装界面

阿里云镜像网站 下载CentOS镜像,笔者选择的是 http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso 这个版本(用torrent下载最快,不要直接下载),用Everything版本实际安装的时候可以选择装多少工具。下载好镜像后用 Win32 Disk Imager 或者 Raspberry Pi Imager (这两个烧录工具的下载见 树莓派4B初始化 )把镜像烧录到一张空白的sd卡上。笔记本插上sd卡开机,进入BIOS(笔者的笔记本是按F2),选择从sd卡引导开机(或者把sd卡引导开机的优先级调到最高),保存BIOS并退出、重启,直接选择 Install CentOS 7,等待一段时间后进入CentOS的安装界面。

2.安装CentOS

跟着引导一步步走即可安装成功:语言选择美式英语(也可以选简中),时区改到上海,更改键盘布局,安装介质就是本地的media,软件选择请自行选择(比如选择最简安装),分区时把以前装的系统覆盖掉、选择自动分区(你也可以根据自己的需要手动分区),打开有线、无线网络,开始安装。安装过程中可以设置一下root密码、创建一个系统用户。
最后重启,再次进入BIOS,把sd卡引导调到后面。至此CentOS安装完成,重启后进入命令行界面。

3.初始化操作

安装完成后,用root身份登录,进行一些初始化操作。以下的项目为笔者的习惯,可自行修改。

(0)静态局域网IP

自带的vi和curl有时候不太好用,所以需要安装vim、wget:

yum install -y vim wget

然后登录路由器管理页面,把笔记本的有线、无线内网ip都设置成静态的。之后都用PuTTY以root身份远程登录笔记本,进行操作。

(1)合盖设置

这里参考了 这篇文章
正常情况下,笔记本关上盖子后会休眠,但是也可以设置为仅仅锁定。

vim /etc/systemd/logind.conf

其中有一行: #HandleLidSwitch=suspend ,把它改为 HandleLidSwitch=lock ,然后保存设置:

systemctl restart systemd-logind

之后把笔记本合上屏幕也没关系。

(2)基础设置

passwd root #修改用户密码
passwd wuhuqifei
yum install -y epel-release

wuhuqifei指刚才安装CentOS时创建的系统用户。
现在apt和yum的源感觉都不用换了,yum可以自动寻找最快的源。
epel-release提供了一些软件库,比如ufw在默认的库里就找不到,装上epel-release后就能找到。

(3)ufw

ufw是一个简化操作的防火墙(相较于iptables等防火墙的复杂语法)。

yum install -y ufw
ufw default deny
ufw allow 22
ufw enable
systemctl enable ufw
systemctl start ufw
systemctl restart ufw
systemctl status ufw.service
ufw status

如果 yum install -y ufw 失败的话就等会儿再装,直到成功。

(4)lm_sensors与watchdog

lm_sensors可得到cpu温度(需要硬件支持,一般都支持);watchdog可以根据温度和其他条件决定是否重启。
据说sensors需要64位系统。笔者的笔记本,使用 uname -p 会输出 x86_64

yum install -y lm_sensors
sh -c "yes|sensors-detect"
sensors
#输出CPU核心温度

接下来写一个脚本,使得每隔1s在一个文件里更新CPU温度(仅写入核心0的温度):

mkdir -p ~/mybash
mkdir /usr/local/watchdog
vim ~/mybash/lm_sensors_into_file.sh

内容如下:

#!/bin/bash
cpu_core0=`/usr/bin/sensors | grep "Core 0" | awk '{print $3}' | cut -c 2-3`
cpu_core1=`/usr/bin/sensors | grep "Core 1" | awk '{print $3}' | cut -c 2-3`
#可根据需要换成其他cpu核心的温度
echo $cpu_core0 > /usr/local/watchdog/cpu_temperature

然后继续操作:

chmod +x ~/mybash/lm_sensors_into_file.sh
~/mybash/lm_sensors_into_file.sh
cat /usr/local/watchdog/cpu_temperature
#显示温度
crontab -e

添加一行:

* * * * * /root/mybash/lm_sensors_into_file.sh #每分钟运行一次写入温度的脚本

然后安装watchdog:

yum install -y watchdog
systemctl enable watchdog
vim /etc/watchdog.conf

对/etc/watchdog.conf改动3处:

去掉 #max-load-1 = 24 前的#
将 #temperature-device = 改为 temperature-device = /usr/local/watchdog/cpu_temperature
将 #max-temperature = 120 改为 max-temperature = 90

最后进行如下操作:

systemctl daemon-reload
systemctl start watchdog
systemctl status watchdog

检查一下watchdog能否读取温度文件。

(5)安全性设置

修改/etc/pam.d/su:

#auth       required   pam_wheel.so use_uid

前面去掉注释的#。
之前在安装CentOS时创建过一个系统用户,这里以wuhuqifei指代。
进行如下操作:

usermod -G wheel wuhuqifei

经过以上设置,只有在wheel组中的用户才能使用su命令切换用户,并且把wuhuqifei加入了wheel组。

下面关闭密码登录ssh,仅开启密钥登录。用puttygen生成密钥,并进行如下操作:

su wuhuqifei
mkdir /home/wuhuqifei/.ssh
touch /home/wuhuqifei/.ssh/authorized_keys
chmod 700 -R /home/wuhuqifei/.ssh
vim /home/wuhuqifei/.ssh/authorized_keys

将公钥粘贴到该文件中。
另外,还需要一个openssh、不带密码的密钥用于备份,也把公钥粘贴到该文件中。
最后,关闭密码登录ssh:

su root
vim /etc/ssh/sshd_config

对/etc/ssh/sshd_config改动2处:

将 #PermitRootLogin yes 改为 PermitRootLogin no
将 PasswordAuthentication yes 改为 PasswordAuthentication no

最后应用:

systemctl reload sshd

到这里时暂时先不关闭PuTTY窗口,而是另外新建一个PuTTY看是否只能通过密钥连接,是否还能以root登录,如果有误的话及时修改;并且试一下能否从wuhuqifei切换到root。

(6)python3

CentOS最小安装自带python2.7,可以自行安装python3。可以自行编译,或者像笔者一样偷懒:

yum install -y python3

默认安装的是 python-3.6.8 。
笔者从源文件编译 python 3.10 时总是出错(无法使用pip,因为SSL错误),只好选择最简单的方法。

(7)修改DNS

vim /etc/resolv.conf

发现该文件是由NetworkManager生成的( #Generated by NetworkManager )。根据 这个回答 ,进行如下操作:

nmcli con
#查找到想要修改的网络连接的 Name ,后文的 $connectionName 都改成这个 Name
nmcli con mod $connectionName ipv4.dns "8.8.8.8 8.8.4.4" #设置ipv4的DNS
nmcli con mod $connectionName ipv4.ignore-auto-dns yes #忽略路由器提供的DNS
nmcli con mod $connectionName ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844" #设置ipv6的DNS
nmcli con mod $connectionName ipv6.ignore-auto-dns yes
service NetworkManager restart
vim /etc/resolv.conf

/etc/resolv.conf 内的ipv4、ipv6的dns服务器成功修改为谷歌的dns服务器。

(8)docker

参考 这篇文章 ,进行了如下操作:
如果之前安装过docker,先卸载旧版本的:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine

然后再安装:

cd /tmp
curl -fsSL get.docker.com -o get-docker.sh
chmod +x get-docker.sh
sh get-docker.sh --mirror Aliyun
rm get-docker.sh
systemctl enable docker
systemctl start docker
docker -v
mkdir /etc/docker
vim /etc/docker/daemon.json

写入:

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://xxxx.mirror.aliyuncs.com"
  ]
}

最后一个网址是阿里云给个人的docker官方仓库源(只要注册阿里云账号就送),如果没有的话就不加。
然后进行如下操作:

systemctl restart docker
docker pull portainer/portainer-ce
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

到 笔记本ip:9000 进行个性化配置。portainer-ce提供了一个网页UI界面,方便管理docker。

最后安装docker-compose:

curl -L https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

(9)其他

自行安装其他需要的软件,最后更新一下:

yum update -y
reboot

标签: CentOS

添加新评论