V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tony1016
V2EX  ›  Linux

如何用 Alpine 一步一步搭建一个完整的 Linux 桌面系统

  •  2
     
  •   tony1016 · 2023-06-18 11:59:55 +08:00 · 6768 次点击
    这是一个创建于 557 天前的主题,其中的信息可能已经有所发展或是发生改变。

    0.初衷

        现代的 Linux 桌面系统,其实已经非常复杂了。不光要处理简单的用户应用程序间的协作,更要处理各种用户设备。举个简单的例子,设备的声音输出,就可能有多种途径:通过电脑有线音响输出,或者通过 HDMI 显示器的自带音响输出,还有可能通过连接的蓝牙输出。
    
        我一直对于 Linux 是如何一步一步发展到如此完善感到好奇,也对诸如 Ubuntu 等操作系统动辄一张 DVD 大小的安装程序感到沮丧。**因为在我的印象中,Linux 不该是 Windows 这样,而是几百兆大小才对**。
    
        Alpine Linux ,一个最简单的 Linux 系统,安装介质不到 200M ,它是否可以定制成一个完善的桌面系统呢?之前是不行的,它使用的是 musl libc 而不是传统的 glibc ,所以很多程序都没有现成的包而需要自己从源码编译。你可以想象编译一个 WPS 的难度。输入法也是一个问题,在 Alpine 上,始终没有中文输入法。
    
        但这个情况最近改变了。首先是 Alpine 的 testing 源里有了 fcitx5 和 fcitx5-chinese-addons ,所以中文输入已经不成问题。另外 WPS 的问题,已经可以通过 flatpak 解决了。
    
        **所以这次尝试用 Alpine Linux 从零开始搭建一个完整的 Linux 桌面系统。**说是从零打造,其实也不完全是,毕竟 Linux 系统像搭积木一般了。但如果使用 Alpine Linux ,至少就不是开箱即用而是完全定制。
    

    1.初始化三步走

    https://tonylee.name/Alpine-Linux-4f1cbdb482754c65a61e7f08e9691234

    52 条回复    2023-06-20 03:10:39 +08:00
    duke807
        1
    duke807  
       2023-06-18 12:03:18 +08:00 via Android   ❤️ 3
    gentoo 不香吗?
    tony1016
        2
    tony1016  
    OP
       2023-06-18 12:22:31 +08:00
    @duke807 它和其他有什么不同?
    0o0O0o0O0o
        3
    0o0O0o0O0o  
       2023-06-18 12:26:40 +08:00 via iPhone
    文内代码块左上角的语言都显示为 Javascript
    tyzandhr
        4
    tyzandhr  
       2023-06-18 12:30:25 +08:00 via Android   ❤️ 4
    你是否想搜:lfs
    ck65
        5
    ck65  
       2023-06-18 12:34:28 +08:00   ❤️ 4
    TL;DR 「安装完所有组件,发现其实大小也要到 1.5G 了。」
    baobao1270
        6
    baobao1270  
       2023-06-18 12:39:31 +08:00
    我以为是「基于 Alpine 做自己的发行版」,实际上原来做的是「安装一个可以正常使用的桌面 Alpine 」……
    但是也不容易啊。其实说真的这些步骤和 Arch 差不多,只是坑比 Arch 多了点。
    yinmin
        7
    yinmin  
       2023-06-18 13:50:27 +08:00 via iPhone
    貌似 alpine 主要用途是做 docker 基础镜像的
    enihcam
        8
    enihcam  
       2023-06-18 14:00:16 +08:00   ❤️ 1
    @duke807 gentoo 香个屁。arch is the best.
    hronro
        9
    hronro  
       2023-06-18 14:11:59 +08:00
    Alpine 官方已经把 sudo 包移出了 core 了, 推荐用 doas 作为代替
    wenerme
        10
    wenerme  
       2023-06-18 15:06:01 +08:00
    非常推崇 Alpine ,我也搭搭建过,可以参考 https://wener.me/story/alpinelinux-setup-xfce
    Jirajine
        11
    Jirajine  
       2023-06-18 15:20:07 +08:00
    alpine 还真不适合搞桌面,同样 kiss 的发行版,真正实用的还得是 Arch ,非要 musl 的话 void 好像桌面支持更好一点。
    systemd 和 glibc 在桌面上基本逃不掉的,server 还有的选,桌面端其他的完成度都太低了。
    至于 gentoo 我感觉没必要,平白折腾也没啥明显收益。
    duke807
        12
    duke807  
       2023-06-18 15:25:47 +08:00
    @tony1016

    linux 发行版的尽头是 gentoo
    lhbc
        13
    lhbc  
       2023-06-18 15:40:25 +08:00 via Android
    整了一圈,最后发现要装的东西一样没落下
    从实用性角度来看,不知道有什么意义
    tony1016
        14
    tony1016  
    OP
       2023-06-18 15:53:37 +08:00
    @lhbc 意义就是你知道每一个部分是用那个组件实现的
    tony1016
        15
    tony1016  
    OP
       2023-06-18 15:54:29 +08:00
    @Jirajine 这次装完,真没觉得,至少 flatpak 可以弥补很多不足了
    Tink
        16
    Tink  
       2023-06-18 16:17:56 +08:00
    有这个功夫不如直接 lfs 吧
    LindsayZhou
        17
    LindsayZhou  
       2023-06-18 16:26:35 +08:00
    好诶,很少看到国内有用 alpine 的(非容器)。

    我上个月也试了一下。
    因为有 arch 的经验,要装什么东西都还算清楚。
    就是 alpine 的打包细碎太多,很多东西也不是装起来就能用。

    不过可惜我 type-c 扩展坞的驱动有点问题,加上公司那边也用的 arch ,维护两份 dotfiles 不太方便。
    我 VPS 那边也挺喜欢用 alpine ,现在手上大概有三四台的样子。
    mrzx
        18
    mrzx  
       2023-06-18 16:34:40 +08:00   ❤️ 2
    十几年前就用 lfs 制作出属于一份世界上独有的 linux/gnu 发行版本。

    这玩意最大的意义是让你了解整个 linux 操作系统的构成。
    Jirajine
        19
    Jirajine  
       2023-06-18 17:40:32 +08:00
    @tony1016 很多包 flatpak 很难替代,举个例子 flatpack 装的 IDE 里面的终端只能用容器里的 shell ,它只适合装一下隔离环境下运行的应用。
    Linux 桌面很多特性都是 RedHat/Fedora 一系开发的,没 systemd 基本用不了。没 glibc 更麻烦,像 homwbrew/nix 可能都不能装。
    kingfalse
        20
    kingfalse  
       2023-06-18 17:46:13 +08:00 via Android
    为了 Alpine 而 Alpine ?如果追求好的桌面体验,opensuse ,Ubuntu 这些不是更好更成熟?
    0superx0
        21
    0superx0  
       2023-06-18 18:06:59 +08:00   ❤️ 1
    @kingfalse 其实就折腾,等老了,就玩现成的桌面发行版了.
    tony1016
        22
    tony1016  
    OP
       2023-06-18 18:37:14 +08:00
    @kingfalse 并不是为了追求更好的体验,而是为了知道它是什么构成的
    tony1016
        23
    tony1016  
    OP
       2023-06-18 18:37:28 +08:00
    @mrzx
    panda1001
        24
    panda1001  
       2023-06-18 18:59:20 +08:00
    我是选择用 alpine 做宿主机专门来跑 docker
    tulongtou
        25
    tulongtou  
       2023-06-18 19:16:27 +08:00
    我的 vps 能安装 alpine 的也都用 alpine 了,单纯图它简单轻量,apk 包都很新,rc-service 比 systemd 轻量
    tony1016
        26
    tony1016  
    OP
       2023-06-18 19:29:35 +08:00
    @tulongtou 对,就是让人很有好感的系统
    james122333
        27
    james122333  
       2023-06-18 21:15:17 +08:00 via Android
    我前几日刚帮家人装好 也注意到没输入法 不过刚好家人只需要手写输入法 启动很快 在 u 盘都可用 但比较意外居然没 shutdown 指令 以前用 openrc 还是有 apkbuild 与 pkgbuild 其实差不多 steam 要用 flatpak 装 打过 Dota2 还可以 但 flatpak 不太喜欢 之后再研究下 glibc 问题
    flyqie
        28
    flyqie  
       2023-06-19 00:53:02 +08:00 via Android
    alpine 用来搞桌面环境。。

    适合折腾但不适合养老。

    养老还是 ubuntu 吧。。
    lijiangang886
        29
    lijiangang886  
       2023-06-19 03:42:32 +08:00
    Linux is free if and only if your time is free.
    折腾 linux 发行版没有意义,折腾 linux 桌面环境更没有,有这个精力不如去研究 linux 系统更底层的东西
    lijiangang886
        30
    lijiangang886  
       2023-06-19 03:43:51 +08:00
    当然还是感谢楼主浪费自己时间照亮别人的行为,让我看看你的文章有没有什么我可以抄来用的东西
    jinliming2
        31
    jinliming2  
       2023-06-19 04:19:39 +08:00 via iPhone   ❤️ 1
    从零开始搭建,想了解 Linux 的构成的话,还是建议用 LFS ,一切的开始。
    楼上说的 Gentoo 是我日常用的,基本上过程也是从零开始,只不过是从一个已有的文件系统开始,然后自己挑选想用的软件,所有软件都是编译安装(包管理器负责下载编译脚本,下载源码进行编译安装),少数比较大型的软件或者非开源软件,可以选择安装已编译好的 bin 包。系统安装基本就是从官网下载一个文件系统的压缩包,解压到空硬盘分区,然后 chroot 到这个硬盘分区上进行系统软件的安装,比如 shell 、文本编辑器之类的。
    ww2000e
        32
    ww2000e  
       2023-06-19 08:05:59 +08:00
    我才编了个 blfs 用。。
    LindsayZhou
        33
    LindsayZhou  
       2023-06-19 08:58:37 +08:00
    em... 早上刚修了个问题。

    三月份用 env ROOFS=btrfs setup-alpine 在 VPS 上装的系统。
    不知道为什么 /etc/mkinitfs/mkinitfs.conf 和 /etc/update-extlinux.conf 里的 btrfs module 没了。

    还好 VPS 提供商给了 rescue os ,不然修都没法修。
    LindsayZhou
        34
    LindsayZhou  
       2023-06-19 09:00:43 +08:00
    @LindsayZhou #33
    typo
    env ROOTFS=btrfs setup-alpine
    ChenSino
        35
    ChenSino  
       2023-06-19 09:00:46 +08:00
    @enihcam 难得见到我 arch 教徒
    GeorgeWai
        36
    GeorgeWai  
       2023-06-19 09:02:30 +08:00
    Alpine ,容器内专用系统,基于基础镜像去定制需要的软件,主打轻,桌面就算了吧,桌面需要的是生产力。踏实 macos ,windows11 。
    tony1016
        37
    tony1016  
    OP
       2023-06-19 09:06:47 +08:00
    @GeorgeWai 所以你觉得不够生产力,怎么却推荐了两个非 Linux?
    LindsayZhou
        38
    LindsayZhou  
       2023-06-19 09:10:41 +08:00
    我是从 drew 的一篇文章入坑的: https://drewdevault.com/2021/05/06/Praise-for-Alpine-Linux.html

    至少在写这篇文章的时候 (2021.3) ,他就已经在他的工作站,笔记本上用 alpine 的桌面环境了。
    Masoud2023
        39
    Masoud2023  
       2023-06-19 09:47:39 +08:00
    1.5g 你如果能保证全部都工作正常的话,也是蛮小的一个体积了
    liuxu
        40
    liuxu  
       2023-06-19 10:09:44 +08:00
    @enihcam 可笑,Arch is not the best, gentoo is, always.
    dog82
        41
    dog82  
       2023-06-19 10:14:37 +08:00
    alpine 就是个狗窝,你想在狗窝上搭盖?
    crackself
        42
    crackself  
       2023-06-19 10:30:00 +08:00 via iPhone
    很享一步步搭建系统的话,推荐 archlinux 、gentoo 、Linux from scratch 三步走,到 LFS 后就回不去了。如果对 Linux 系统结构比较熟悉的话直接 LFS/BLFS 开干吧
    CodeCodeStudy
        43
    CodeCodeStudy  
       2023-06-19 10:31:10 +08:00
    docker 里的 alpine 也可以这么搞吗
    tony1016
        44
    tony1016  
    OP
       2023-06-19 12:48:30 +08:00 via iPhone
    @CodeCodeStudy 用 vnc 访问应该是可以
    yzbythesea
        45
    yzbythesea  
       2023-06-19 13:19:15 +08:00
    感觉用 alpine 比什么 gentoo ,arch 酷,arch 都烂大街了。
    james122333
        46
    james122333  
       2023-06-19 15:39:17 +08:00
    楼上的言重了 其实还不错用
    只是要有一些 linux 的使用经验
    和 nvidia 显卡只能用开源驱动 用 amd 和 intel 内显的会比较好
    james122333
        47
    james122333  
       2023-06-19 15:39:45 +08:00
    是指樓上一些人
    ajaxpost
        48
    ajaxpost  
       2023-06-19 16:32:47 +08:00
    Linux Mint 挺好
    zljklang
        49
    zljklang  
       2023-06-19 16:44:13 +08:00
    水贴
    findex
        50
    findex  
       2023-06-19 22:14:56 +08:00 via iPhone
    @mrzx 我不但做了一个自己的 LFS linux/GNU 发行版系统,而且还做了一个专门用来做 linux 系统的虚拟机,大家可以在 virtualbox 或者 vmware 虚拟机里装我的宿主机环境,继续开发我的系统。

    现在一说起 linux/gnu 系统,其所有骨架都在脑中显现。archlinux 、gentoo 都是浮云,我不觉得有什么优势。FreeBSD 还是挺好玩的。我现在很喜欢 debian 的哲学。
    hronro
        51
    hronro  
       2023-06-19 22:44:58 +08:00
    @findex 厉害,有没有博客或者文章分享一下?
    james122333
        52
    james122333  
       2023-06-20 03:10:39 +08:00 via Android
    @findex

    因为现今大多 linux 的组件都差不多你会觉得没意义
    但如果你想使用规格外又很不错的东西 那些发行版就有优势 因为好改包 好建立新的包 不用没提供就没有 然后自己胡乱 configure make 又没指定 prefix 的 可以很容易自定义符合系统管理的包是种好处 流行的发行版特地把包建置搞的不亲民很多都是商业考量 但其实本质上是一样的 arch 类的本身就是对标 bsd 的打包建置
    alpine 也同理 因为它真的还挺像 arch 只是组件不同
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5649 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:19 · PVG 11:19 · LAX 19:19 · JFK 22:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.