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

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

  •  2
     
  •   tony1016 · 336 天前 · 6082 次点击
    这是一个创建于 336 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    适合折腾但不适合养老。

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

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

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

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

    现在一说起 linux/gnu 系统,其所有骨架都在脑中显现。archlinux 、gentoo 都是浮云,我不觉得有什么优势。FreeBSD 还是挺好玩的。我现在很喜欢 debian 的哲学。
    hronro
        51
    hronro  
       334 天前
    @findex 厉害,有没有博客或者文章分享一下?
    james122333
        52
    james122333  
       334 天前 via Android
    @findex

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