根据 lfs 制作了个小巧的发行版 "200M linux", 4.9 内核, 默认开启 bbr, 可 U 盘启动也可安装也可 vmware 启动 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jarell
V2EX    Linux

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

  •  1
     
  •   jarell 2016-12-26 19:07:20 +08:00 5028 次点击
    这是一个创建于 3219 天前的主题,其中的信息可能已经有所发展或是发生改变。
    根据 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     Solana     948 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:21 PVG 02:21 LAX 11:21 JFK 14:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86