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

2016-12-26 19:07:20 +08:00
 jarell
根据 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
4415 次点击
所在节点    Linux
25 条回复
okhost
2016-12-29 23:58:01 +08:00
感觉 lfs 需要极大的耐心,与知识面。
已收藏,方便的话可以留个联系方式吗?
jarell
2016-12-30 12:20:30 +08:00
@okhost jarellczc<at>gmail<dot>com
jarell
2017-01-06 14:58:13 +08:00
发布新版了
iamfredng
2017-02-09 20:27:22 +08:00
建议放百度网盘或 github. SF 那速度实在感人
jarell
2017-02-11 19:15:27 +08:00
@iamfredng 网盘还要装客户端,不考虑了。 github 能通过 scp 方式上传么
jarell
2017-02-11 19:17:00 +08:00
@iamfredng 我这里直接 wget sf 上面的地址(去掉 url 后面的 /download )是非常快的啊
iamfredng
2017-02-12 00:03:27 +08:00
@jarell 网盘可以通过 web 界面上传的, github 可以通过命令提交文件。我是电信 100m 专线都很慢, SF 的速度周边不少盘余都反馈慢
jarell
2017-02-12 11:06:30 +08:00
@iamfredng 我这的网 sf 上传下载都是满速的。我最近下载百度网盘的东西都要客户端了,这个就不考虑了。 github 你试一百兆以上的文件么,上传速度如何,是通过 git 命令还是 scp 这种命令呢? 我这 clone/commit github 都很慢
uzumaki
2017-02-12 11:32:03 +08:00
@jarell 传个国内网盘呗又不止百度一家 城网通啥的都行
jarell
2017-02-12 11:54:24 +08:00
@uzumaki 这些网盘啊,不是删文件就是封账号要么就是要用客户端,太闹心了,不用劝了,不用国内网盘。
kn007
2017-02-12 12:35:59 +08:00
mark
jarell
2017-02-12 13:48:49 +08:00
@iamfredng 刚才又试了下,上传还是满速的,但下载我这也是龟速了。要想快只能通过代理了,或者用离线下载的方式拖回去吧。注意比较校验值。
why1
2017-02-12 13:55:31 +08:00
呵呵,挂 ss 下载慢速
jyf007
2017-02-12 14:01:25 +08:00
您这个我想用 gentoo 实现一遍。
why1
2017-02-12 16:21:12 +08:00
32 不能用
jarell
2017-02-12 18:31:12 +08:00
@why1 详细说说
jarell
2017-02-13 12:34:30 +08:00
@jyf007
那改的东西比较多了吧,还是你准备直接提取有用的文件出来呢

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/330321

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX