笔记本安装CentOS
步骤/目录:
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后就能找到。
如果显示无法解析 mirrorlist.centos.org
,可以更换源(以 mirrors.aliyun.com
阿里源为例):
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo_back
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
chmod 777 CentOS-Base.repo
yum clean all
yum makecache
yum update
(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