Alpine Linux


Alpine Linux是由社区开发的操作系统,它面向x86路由器、防火墙、虚拟专用网(VPN)、IP电话盒及瘦服务器而设计。其在设计时就贯彻了安全的理念,包含了一些主动安全特性如PaX和SSP,能防止软件中的漏洞被利用;内核打了grsecurity/PaX补丁,并且所有的程序都编译为Position Independent Executables(PIE) 来增强操作系统的安全性。该系统采用的C语言开发的通用库:uClibc,基础工具则都在BusyBox中,这在嵌入式系统中很常见,它们比GNU/Linux系统中的基础库(glibc)要小。即采用 musl libc 和 busybox 以减小系统的体积和运行时的资源消耗;也由于其非常轻量级的特性,它至今仍然是容器和嵌入式 Linux 部署的热门选择。还提供了自己的包管理工具 apk,通过其进行软件包的查询和安装。

Alpine Linux is a community-developed operating system designed for x86 Routers, Firewalls, VPNs, VoIP and servers.Alpine Linux is and always will be free of charge. You do not pay any licensing fees. You can download, use and share Alpine Linux with anyone for absolutely nothing.Alpine Linux was designed with security in mind. It has proactive security features, such as PaX and SSP, that prevent security holes from being exploited.Alpine Linux uses the uClibc C library and all of the base tools from BusyBox. These are normally found on embedded systems and are smaller than the tools found on GNU/Linux systems.

Alpine Linux 有很多版本
Mini Root FileSystem 最小的版本,仅包含内核,只用于构建 Docker 镜像
Standard 最小的可启动镜像,需要网络才能安装
Vanilla 包含一个原版基础内核
Extended 拓展版本,带有更多软件包
Virtual 与 Standard 类似,但更小,更适用于虚拟系统使用
Xen 内置 Xen Hypervisor 支持
Raspberry Pi 带有树莓派内核的版本
Generic ARM 带有默认 ARM 内核,带有 uboot 加载器
安装 Alpine
Alpine Linux是一个完整的操作系统,跟其他操作系统一样,可以将其安装到本地硬盘中。在安装过程中,指定一些电脑的基本设置,比如键盘布局、主机名、网卡、IP地址、root口令修改、时区设置、软件仓库地址、SSH服务器、NTP客户端、系统安装方式、磁盘格式化等,最后会问安装模式,选择 sys 来把系统安装到硬盘。
使用其ISO引导进入终端之后,输入用户名root,默认无密码,回车直接登录,然后执行"setup-alpine"命令,在终端上启动其安装程序。
1)键盘布局:us
2)网络设置
主机名:localhost
直接回车(默认)
网卡名:eth0
直接回车(默认)
3)root密码设置
4)时区设置Asia/Shanghai
5)镜像模式选择
软件仓库的地址-默认选 f,会自动检测最快的镜像站点。
模式选择:
r:随机的
f:在已有的选择最快的
e:手动修改配置文件
注意:必须能够连到外网,也就是网络配置正确,否则没有列表。
6)软件安装选择
软件安装选择:
选择安装openssh服务器。
选择NTP客户端(用来调整系统时钟)的类型,保持默认的chrony即可,回车。
7)磁盘格式化
因为Alpine Linux可以运行在内存里,这里的默认选项是不使用硬盘,所以要手动键入sda。以何种方式安装系统,这里需要键入"sys",表示把整个系统安装在硬盘上。向导让确认选择的sda磁盘上,其上的数据会全部丢失,键入"y"确认。
8)添加账号
在重启之前,要先给系统添加个非root帐号。因为root帐号不能用SSH终端直接登录,所以要添加个的帐号。
# adduser freeoa
优势与问题
1.优势
Alpine的Docker镜像特点是轻巧(大小只有5M)且有完整的包管理工具(APK),Docker官方镜像可能会用Alpine Linux替换Ubuntu。
2.问题
Alpine使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,通过DNS来进行服务发现时需要注意。
网络相关文件
#主机名文件
/etc/hostname
#使用新设置的主机名立刻生效,执行如下命令:
hostname -F /etc/hostname
#主机IP和域名映射文件
/etc/hosts
#文件内容为:
192.168.10.19 alpine.freeoa.net
#DNS 服务器配置文件
/etc/resolv.conf
#文件内容为:
nameserver 1.2.3.n
#网卡配置文件
/etc/network/interfaces
#文件内容为:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.166
netmask 255.255.255.0
gateway 192.168.0.254
#修改完相关配置以后,重新启动网络服务:
/etc/init.d/networking restart
网卡配置与Debian非常类似,网络相关的文档,详情请参见此处。
包管理--apk包管理命令
Alpine使用apk进行包管理,通过apk --help命令查看完整的包管理命令,可以先参考在Alpine Linux中安装bash shell一文。下面列举常用命令:
1.update:从远程镜像源中更新本地镜像源索引
update命令会从各个镜像源列表下载APKINDEX.tar.gz并存储到本地缓存,一般在/var/cache/apk/(Alpine在该目录下)、 /var/lib/apk/ 、/etc/apk/cache/下。
$ apk update
2.add:安装PACKAGES并自动解决依赖关系
add命令从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包。
$ apk add openssh openntp vim
$ apk add --no-cache mysql-client
$ apk add docker --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.x/main/ --allow-untrusted
安装指定版本软件包:
$ apk add asterisk=1.6.0.21-r0
$ apk add 'asterisk<1.6.1'
$ apk add 'asterisk>1.6.1'
3.del:卸载并删除PACKAGES
$ apk del openssh openntp vim
4.upgrade:升级当前已安装的软件包
upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或--upgrade选择指定)。
$ apk update #更新最新本地镜像源
$ apk upgrade #升级软件
$ apk add --upgrade busybox #指定升级部分软件包
5.search:搜索软件包
search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或—description参数指定通过软件包描述查询。
$ apk search #查找所以可用软件包
$ apk search -v #查找所以可用软件包及其描述内容
$ apk search -v 'acf*' #通过软件包名称查找软件包
$ apk search -v -d 'docker' #通过描述文件查找特定的软件包
6.info:列出PACKAGES或镜像源的详细信息
info命令用于显示软件包的信息。
$ apk info #列出所有已安装的软件包
$ apk info -a zlib #显示完整的软件包信息
$ apk info --who-owns /sbin/lbu #显示指定文件属于的包
镜像源配置
1.官方镜像列表:http://dl-cdn.alpinelinux.org/alpine/MIRRORS.txt
MIRRORS.txt中是当前Alpine官方提供的镜像源(Alpine安装的时候系统自动选择最佳镜像源)
2.国内镜像源
清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
阿里云镜像源:http://mirrors.aliyun.com/alpine/
3.如何配置软件源
以中科大源为例:在/etc/apk/repositories文件中加入对应源地址就行了,一行一个地址。
$ vim /etc/apk/repositories
# /media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.x/main
http://mirrors.ustc.edu.cn/alpine/v3.x/community
init系统
Alpine Linux使用的是与Gentoo一样的OpenRC这套init系统。以下命令可用于管理init系统
1.rc-update
rc-update主要用于不同运行级增加或者删除服务。
rc-update语法格式:
Usage: rc-update [options] add <service> [<runlevel>...]
or: rc-update [options] del <service> [<runlevel>...]
or: rc-update [options] [show [<runlevel>...]]
使用实例:
$ rc-update add docker boot #增加一个服务
$ rc-update del docker boot #删除一个服务
2.rc-status
rc-status 主要用于运行级的状态管理。
rc-status语法格式:
Usage: rc-status [options] <runlevel>...
or: rc-status [options] [-a | -c | -l | -r | -s | -u]
使用实例:
$ rc-status #检查默认运行级别的状态
$ rc-status -a #检查所有运行级别的状态
3.rc-service
rc-service主用于管理服务的状态
rc-service语法格式:
Usage: rc-service [options] [-i] <service> <cmd>...
or: rc-service [options] -e <service>
or: rc-service [options] -l
or: rc-service [options] -r <service>
使用实例:
$ rc-service sshd start #启动一个服务。
$ rc-service sshd stop #停止一个服务。
$ rc-service sshd restart #重启一个服务。
4.openrc
openrc主要用于管理不同的运行级。语法格式:
Usage: openrc [options] [<runlevel>]
可用的运行级
1.default
2.sysinit
3.boot
4.single
5.reboot
6.shutdown
使用实例
$ openrc single #更改为single运行级
其它指令
$ reboot #重启系统,类似于shutdown -r now。
$ halt #关机,类似于shutdown -h now。
$ poweroff #关机
Alpine发展记事(202x)
官方主页:http://alpinelinux.org/

Alpine Linux is a community-developed operating system designed for x86 Routers, Firewalls, VPNs, VoIP and servers.Alpine Linux is and always will be free of charge. You do not pay any licensing fees. You can download, use and share Alpine Linux with anyone for absolutely nothing.Alpine Linux was designed with security in mind. It has proactive security features, such as PaX and SSP, that prevent security holes from being exploited.Alpine Linux uses the uClibc C library and all of the base tools from BusyBox. These are normally found on embedded systems and are smaller than the tools found on GNU/Linux systems.

Alpine Linux 有很多版本
Mini Root FileSystem 最小的版本,仅包含内核,只用于构建 Docker 镜像
Standard 最小的可启动镜像,需要网络才能安装
Vanilla 包含一个原版基础内核
Extended 拓展版本,带有更多软件包
Virtual 与 Standard 类似,但更小,更适用于虚拟系统使用
Xen 内置 Xen Hypervisor 支持
Raspberry Pi 带有树莓派内核的版本
Generic ARM 带有默认 ARM 内核,带有 uboot 加载器
安装 Alpine
Alpine Linux是一个完整的操作系统,跟其他操作系统一样,可以将其安装到本地硬盘中。在安装过程中,指定一些电脑的基本设置,比如键盘布局、主机名、网卡、IP地址、root口令修改、时区设置、软件仓库地址、SSH服务器、NTP客户端、系统安装方式、磁盘格式化等,最后会问安装模式,选择 sys 来把系统安装到硬盘。
使用其ISO引导进入终端之后,输入用户名root,默认无密码,回车直接登录,然后执行"setup-alpine"命令,在终端上启动其安装程序。
1)键盘布局:us
2)网络设置
主机名:localhost
直接回车(默认)
网卡名:eth0
直接回车(默认)
3)root密码设置
4)时区设置Asia/Shanghai
5)镜像模式选择
软件仓库的地址-默认选 f,会自动检测最快的镜像站点。
模式选择:
r:随机的
f:在已有的选择最快的
e:手动修改配置文件
注意:必须能够连到外网,也就是网络配置正确,否则没有列表。
6)软件安装选择
软件安装选择:
选择安装openssh服务器。
选择NTP客户端(用来调整系统时钟)的类型,保持默认的chrony即可,回车。
7)磁盘格式化
因为Alpine Linux可以运行在内存里,这里的默认选项是不使用硬盘,所以要手动键入sda。以何种方式安装系统,这里需要键入"sys",表示把整个系统安装在硬盘上。向导让确认选择的sda磁盘上,其上的数据会全部丢失,键入"y"确认。
8)添加账号
在重启之前,要先给系统添加个非root帐号。因为root帐号不能用SSH终端直接登录,所以要添加个的帐号。
# adduser freeoa
优势与问题
1.优势
Alpine的Docker镜像特点是轻巧(大小只有5M)且有完整的包管理工具(APK),Docker官方镜像可能会用Alpine Linux替换Ubuntu。
2.问题
Alpine使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,通过DNS来进行服务发现时需要注意。
网络相关文件
#主机名文件
/etc/hostname
#使用新设置的主机名立刻生效,执行如下命令:
hostname -F /etc/hostname
#主机IP和域名映射文件
/etc/hosts
#文件内容为:
192.168.10.19 alpine.freeoa.net
#DNS 服务器配置文件
/etc/resolv.conf
#文件内容为:
nameserver 1.2.3.n
#网卡配置文件
/etc/network/interfaces
#文件内容为:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.166
netmask 255.255.255.0
gateway 192.168.0.254
#修改完相关配置以后,重新启动网络服务:
/etc/init.d/networking restart
网卡配置与Debian非常类似,网络相关的文档,详情请参见此处。
包管理--apk包管理命令
Alpine使用apk进行包管理,通过apk --help命令查看完整的包管理命令,可以先参考在Alpine Linux中安装bash shell一文。下面列举常用命令:
1.update:从远程镜像源中更新本地镜像源索引
update命令会从各个镜像源列表下载APKINDEX.tar.gz并存储到本地缓存,一般在/var/cache/apk/(Alpine在该目录下)、 /var/lib/apk/ 、/etc/apk/cache/下。
$ apk update
2.add:安装PACKAGES并自动解决依赖关系
add命令从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包。
$ apk add openssh openntp vim
$ apk add --no-cache mysql-client
$ apk add docker --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.x/main/ --allow-untrusted
安装指定版本软件包:
$ apk add asterisk=1.6.0.21-r0
$ apk add 'asterisk<1.6.1'
$ apk add 'asterisk>1.6.1'
3.del:卸载并删除PACKAGES
$ apk del openssh openntp vim
4.upgrade:升级当前已安装的软件包
upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或--upgrade选择指定)。
$ apk update #更新最新本地镜像源
$ apk upgrade #升级软件
$ apk add --upgrade busybox #指定升级部分软件包
5.search:搜索软件包
search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或—description参数指定通过软件包描述查询。
$ apk search #查找所以可用软件包
$ apk search -v #查找所以可用软件包及其描述内容
$ apk search -v 'acf*' #通过软件包名称查找软件包
$ apk search -v -d 'docker' #通过描述文件查找特定的软件包
6.info:列出PACKAGES或镜像源的详细信息
info命令用于显示软件包的信息。
$ apk info #列出所有已安装的软件包
$ apk info -a zlib #显示完整的软件包信息
$ apk info --who-owns /sbin/lbu #显示指定文件属于的包
镜像源配置
1.官方镜像列表:http://dl-cdn.alpinelinux.org/alpine/MIRRORS.txt
MIRRORS.txt中是当前Alpine官方提供的镜像源(Alpine安装的时候系统自动选择最佳镜像源)
2.国内镜像源
清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
阿里云镜像源:http://mirrors.aliyun.com/alpine/
3.如何配置软件源
以中科大源为例:在/etc/apk/repositories文件中加入对应源地址就行了,一行一个地址。
$ vim /etc/apk/repositories
# /media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.x/main
http://mirrors.ustc.edu.cn/alpine/v3.x/community
init系统
Alpine Linux使用的是与Gentoo一样的OpenRC这套init系统。以下命令可用于管理init系统
1.rc-update
rc-update主要用于不同运行级增加或者删除服务。
rc-update语法格式:
Usage: rc-update [options] add <service> [<runlevel>...]
or: rc-update [options] del <service> [<runlevel>...]
or: rc-update [options] [show [<runlevel>...]]
使用实例:
$ rc-update add docker boot #增加一个服务
$ rc-update del docker boot #删除一个服务
2.rc-status
rc-status 主要用于运行级的状态管理。
rc-status语法格式:
Usage: rc-status [options] <runlevel>...
or: rc-status [options] [-a | -c | -l | -r | -s | -u]
使用实例:
$ rc-status #检查默认运行级别的状态
$ rc-status -a #检查所有运行级别的状态
3.rc-service
rc-service主用于管理服务的状态
rc-service语法格式:
Usage: rc-service [options] [-i] <service> <cmd>...
or: rc-service [options] -e <service>
or: rc-service [options] -l
or: rc-service [options] -r <service>
使用实例:
$ rc-service sshd start #启动一个服务。
$ rc-service sshd stop #停止一个服务。
$ rc-service sshd restart #重启一个服务。
4.openrc
openrc主要用于管理不同的运行级。语法格式:
Usage: openrc [options] [<runlevel>]
可用的运行级
1.default
2.sysinit
3.boot
4.single
5.reboot
6.shutdown
使用实例
$ openrc single #更改为single运行级
其它指令
$ reboot #重启系统,类似于shutdown -r now。
$ halt #关机,类似于shutdown -h now。
$ poweroff #关机
Alpine发展记事(202x)
官方主页:http://alpinelinux.org/
该文章最后由 阿炯 于 2024-12-09 09:57:14 更新,目前是第 2 版。