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

根据 lfs 制作了个小巧的发行版 "200M linux", 4.9 内核, 默认开启 bbr, 可 U 盘启动也可安装也可 vmware 启动

  •  1
     
  •   jarell · 2016-12-26 19:07:20 +08:00 · 4602 次点击
    这是一个创建于 2890 天前的主题,其中的信息可能已经有所发展或是发生改变。
    根据 lfs 制作了一个小巧的发行版 200M linux, 可 U 盘启动也可安装, 欢迎试用
    下载地址 https://sf.net/projects/lfsp200/files/

    特色是小巧, live 启动模式能根据不同机器保存不同配置, 用来维护很方便的, 支持 EFI 和 BIOS 启动

    可以 qemu 方式启动,参数如下:
    sudo qemu -cpu host -enable-kvm -machine accel=kvm -vnc 0:0 -net nic,model=virtio -net bridge -drive file=200M,format=raw,if=virtio
    可以直接用 vmware 启动
    也可以通过以下 dd 写入 u 盘启动,注意不要写到硬盘里面去,不然会造成无法挽回的数据丢失
    dd if=200M of=/dev/sd<X> bs=4M oflag=direct status=progress

    有两个 grub 启动条目,默认第一个就可以的,第二个后面说

    启动后就能通过 ssh 登录了, user: live_ pass: _live_p123
    所以可以不接显示其和键盘
    本地 root 无密码登陆, 建议更改一下

    只有字符界面, 但我自己常用的开发软件都有了,打算有空的时候再弄个 wayland 桌面上去,初步目标是能跑 chrome

    启动完成后就可以拔掉 U 盘了, 如果想把一些设置保存下来就先不要拔掉 U 盘(也可等要保存的时候插上)

    建议的设置有:

    更改机器名
    echo "newhostname" > /etc/hostname

    如果要改静态 ip 更改 /etc/systemd/network/lan.network 如下
    [Match]
    Name=en*

    [Network]
    Address=192.168.1.2/24
    Gateway=192.168.1.1
    DNS=192.168.1.1
    然后执行 systemctl restart systemd-networkd

    新建帐户后删除默认 live_帐户
    userdel live_
    让 sshd 自动启动 (第一次启动会自动, 但保存设置后就不是了)
    systemctl enable sshd
    当然还有把 ssh 改成只允许密约登陆什么的

    这些设置还都是在内存里保存着的, 下次启动就会失效, 如果要针对当前的启动的机器做持久保存要执行下面的命令
    注意 U 盘拔掉的这时要插回去, 命令执行完可以再拔掉, 也就是可以在多台机器来回跑
    _liveuser live_sync
    这样就把当前设置就保存到 U 盘了, 下次启动会自动加载, 但在其它的机器启动则不会
    如果有的设置是删除了某些文件, 执行上面的命令是不会删除 U 盘上的文件的
    如果要删除 U 盘上存在但系统里已经不存在的文件执行下面的命令
    _liveuser live_sync del

    镜像比较小, 写入 U 盘的话会有很大的未分区空间, 可扩展已有分区
    在未挂载的情况下(默认系统启动完后没有挂载 U 盘) 先用 parted 的 resizepart 命令把分区扩大
    再用 resize_reiserfs 把文件系统扩大就行了
    或者干脆新建分区

    当然也能安装到硬盘, (注意压缩包包含的 vmware 也是相当 live 模式启动的)
    安装到硬盘后就不需要 _liveuser live_sync 了, 也不会起作用了
    其实也可以把 U 盘当作硬盘来用的, 这里的安装严格来说是把 live 方式启动的镜像解压出来用正常方式启动

    解压根分区的文件到目标分区
    unsquashfs root.squashfs -d /<目标分区挂载的路经>
    把内核和 initrd 复制过去

    安装 grub ,配置一个这样的启动条目就行了,目标分区 uuid 用 blkid 查看
    menuentry "lfs 4.9.0" {
    set kver=4.9.0
    set uuid=<目标分区 uuid>
    search.fs_uuid ${uuid} root
    linux /boot/vmlinuz-${kver} root=uuid/${uuid} [liveuser=用户名:密码]
    initrd /boot/initrd.img-${kver}.xz
    }
    liveuser 参数可以不用. 可在无显示器的情况下使用这个参数
    该参数会在第一次启动的时候添加一个可 sudo 的用户, 并启动 sshd, 配置动态获取 IP
    再重启后 ip 还会启动获取, 帐户也还存在, 但 sshd 就不会启动了, 除非 systemctl enable sshd
    密码可以明文也可以用 openssl passwd -1 生成

    光盘就不支持了, 就不要尝试刻盘了, 肯定启动不了的

    内核选的驱动不多,主要是针对我这有的机器通用的
    网卡驱动:
    vmxnet3 vmware
    virtio_net qemu
    e1000e Intel pci-e 千兆网卡
    iwl3945 无线网卡

    显卡驱动, kms 自动设置分辨率:
    intel 集成显卡
    ati 显卡

    如果有有硬件没能驱动可重新编译安装内核, 注意在 32 位系统上无法编译生成 64 位内核, live 模式下无法安装内核,需要正常启动模式才能进行下面的操作
    1. 从 https://www.kernel.org/ 下载内核源码,解压并进入该目录
    2. 从 https://sourceforge.net/projects/lfsp200/files/ 下载内核配置文件并重命名为 .config
    3. 执行 make menuconfig 做相应的更改
    4. 执行 make -j$(nproc --all) 进行编译
    5. 安装内核模块 sudo XZ_OPT='-T0' make modules_install
    6. 安装内核 sudo cp -v arch/x86/boot/bzImage /boot/vmlinuz-$(make -s kernelrelease)
    7. 重新生成 initrd sudo /usr/sbin/mkinitramfs --force
    8. 重启前可能需要编辑 /boot/grub/grub.cfg 增加修改启动条目,如内核名称未变则不需要

    如果想要解压里面的文件,可进行如下操作
    sudo losetup -P /dev/loop5 200M
    sudo mount /dev/loop5p3 /media
    所需要的文件在就在 /media 下面了
    完成所需后进行如下清理
    sudo umount /media
    sudo losetup -d /dev/loop5
    第 1 条附言  ·  2017-01-06 14:57:54 +08:00
    新版发布 200M linux 2017-01-06
    按照最新的 Linux From Scratch 20170103 手册制作
    修正残留 man pages 的无效符号链接的问题
    修正 nginx 不能启动问题,主要是运行用户没加上不对
    还有些除了 lfs 手册之外的软件包升级
    内核配置文件直接放入镜像里面了
    加了两个有线网卡的驱动, atl1c 和 r8169 @yankaiqian
    64 位的已经上传, 32 位的今天晚些时候上传
    第 2 条附言  ·  2017-01-20 13:39:42 +08:00
    25 条回复    2017-02-13 20:43:10 +08:00
    okhost
        1
    okhost  
       2016-12-29 23:58:01 +08:00
    感觉 lfs 需要极大的耐心,与知识面。
    已收藏,方便的话可以留个联系方式吗?
    jarell
        2
    jarell  
    OP
       2016-12-30 12:20:30 +08:00
    @okhost jarellczc<at>gmail<dot>com
    jarell
        3
    jarell  
    OP
       2017-01-06 14:58:13 +08:00
    发布新版了
    iamfredng
        4
    iamfredng  
       2017-02-09 20:27:22 +08:00
    建议放百度网盘或 github. SF 那速度实在感人
    jarell
        5
    jarell  
    OP
       2017-02-11 19:15:27 +08:00
    @iamfredng 网盘还要装客户端,不考虑了。 github 能通过 scp 方式上传么
    jarell
        6
    jarell  
    OP
       2017-02-11 19:17:00 +08:00
    @iamfredng 我这里直接 wget sf 上面的地址(去掉 url 后面的 /download )是非常快的啊
    iamfredng
        7
    iamfredng  
       2017-02-12 00:03:27 +08:00
    @jarell 网盘可以通过 web 界面上传的, github 可以通过命令提交文件。我是电信 100m 专线都很慢, SF 的速度周边不少盘余都反馈慢
    jarell
        8
    jarell  
    OP
       2017-02-12 11:06:30 +08:00
    @iamfredng 我这的网 sf 上传下载都是满速的。我最近下载百度网盘的东西都要客户端了,这个就不考虑了。 github 你试一百兆以上的文件么,上传速度如何,是通过 git 命令还是 scp 这种命令呢? 我这 clone/commit github 都很慢
    uzumaki
        9
    uzumaki  
       2017-02-12 11:32:03 +08:00 via Android
    @jarell 传个国内网盘呗又不止百度一家 城网通啥的都行
    jarell
        10
    jarell  
    OP
       2017-02-12 11:54:24 +08:00
    @uzumaki 这些网盘啊,不是删文件就是封账号要么就是要用客户端,太闹心了,不用劝了,不用国内网盘。
    kn007
        11
    kn007  
       2017-02-12 12:35:59 +08:00
    mark
    jarell
        12
    jarell  
    OP
       2017-02-12 13:48:49 +08:00
    @iamfredng 刚才又试了下,上传还是满速的,但下载我这也是龟速了。要想快只能通过代理了,或者用离线下载的方式拖回去吧。注意比较校验值。
    why1
        13
    why1  
       2017-02-12 13:55:31 +08:00 via Android
    呵呵,挂 ss 下载慢速
    jyf007
        14
    jyf007  
       2017-02-12 14:01:25 +08:00 via Android
    您这个我想用 gentoo 实现一遍。
    why1
        15
    why1  
       2017-02-12 16:21:12 +08:00 via Android
    32 不能用
    jarell
        16
    jarell  
    OP
       2017-02-12 18:31:12 +08:00
    @why1 详细说说
    jarell
        17
    jarell  
    OP
       2017-02-13 12:34:30 +08:00
    @jyf007
    那改的东西比较多了吧,还是你准备直接提取有用的文件出来呢

    @uzumaki
    @iamfredng
    今天我这里下载也是满速了,应该是昨天 sf 有些节点没有缓存上去。
    iamfredng
        18
    iamfredng  
       2017-02-13 16:56:18 +08:00
    @jarell 哈哈,兄弟建议加上 Coreutils , Inetutils, Findutils, Util-linux 这些基础命令的包,方便使用也大不了多少体积。
    iamfredng
        19
    iamfredng  
       2017-02-13 17:02:16 +08:00
    @jarell 大哥你看看加个上电运行后的初始化脚本,通过一些交互直接设置主机名、 ip 网关等基础信息的,多方便。
    搞不好就弄了个有特色的发行版了
    jarell
        20
    jarell  
    OP
       2017-02-13 17:33:37 +08:00
    @iamfredng
    这些必须要的包当然都有了啊,不然都没法启动的。
    上电运行的脚本当然也有,一般是 rc.local, 我这个还能按照不同用户来运行呢,你可以参考系统里面的这个脚本 /lib/systemd/system/_rc_user 而且我现在自己的自动安装脚本就是这么弄的。
    jarell
        21
    jarell  
    OP
       2017-02-13 17:49:28 +08:00
    @iamfredng 为什么你会说没有那几个包呢? 你是不是没启动进入系统啊,卡在 initrd 里面了?
    iamfredng
        22
    iamfredng  
       2017-02-13 20:19:50 +08:00
    @jarell 进入系统了。可是看到里面 /bin 、/usr/bin 下都没有对应的命令
    我是 VMWARE 弄的

    另外那个脚本,我意思是第一次进入系统的时候询问下需要设置的 ip ,主机名这些。直接输入就设置好。不用手动去设置
    jarell
        23
    jarell  
    OP
       2017-02-13 20:37:31 +08:00
    @iamfredng 你指的是什么命令呢? /sbin /usr/sbin 下有么?
    初始设置这些写个简单脚本就行,直接编辑对应文件也不是啥难事,用这个系统都会简单的 vim 吧
    开始想过用 ncurses 做个简单的初始设置界面的,但是觉得没啥用。尤其是对经常用 linux 的人来说不如去直接改对应文件来的直接,不用因为不同发新版去学新的东西了。因为系统有非常多的地方可以设置,搞全的话工作量非常大,弄少量又覆盖不全,会出现需要同时用配置工具去配置文件和去直接编译文件两种情况,会造成覆盖误修改等让人恼火的问题,所以现在干脆直接留给大家亲自去修改(愿意手动的手动,愿意用脚本的去用脚本),原汁原味,我认为是比较恰当的做法了。
    iamfredng
        24
    iamfredng  
       2017-02-13 20:41:19 +08:00
    @jarell 设置脚本那个确实如你所说,用这系统的人基本都对 linux 比较熟悉了。

    缺少指令应该是我这边 vmware 的问题。
    jarell
        25
    jarell  
    OP
       2017-02-13 20:43:10 +08:00
    @iamfredng 为什么会缺少指令呢? 贴一下 cat /proc/mounts 的输出
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2461 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.