笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
/boot 被内核更新塞满,apt upgrade 挂半路
周末在一台 Ubuntu 22.04 上跑 apt upgrade,跑到一半直接红字报错,dpkg 反复提示 configure 失败。看了眼 df,/boot 已经 100%,一个文件都写不进去。这台机器 /boot 是独立分区,当年装系统只分了 500M,Ubuntu 默认又一直留着旧内核不删,攒着攒着就满了。
报错长这样,卡在 linux-image 的 postinst 阶段:
Setting up linux-image-5.15.0-91-generic (5.15.0-91.101) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.15.0-91-generic
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-5.15.0-91-generic
dpkg: error processing package linux-image-5.15.0-91-generic (--configure):
installed linux-image-5.15.0-91-generic package post-installation script subprocess returned error exit status 1
关键就是那句 No space left on device。内核包装的时候要现生成 initrd 写进 /boot,写不进去整个 configure 就失败,后续所有依赖它的包全卡住。
先把当前跑的内核记住,别把自己正在用的删了:
uname -r
我这边是 5.15.0-91-generic,然后列出装过的内核:
dpkg -l 'linux-image-*' | grep '^ii' | awk '{print $2}'
会看到一长串,5.15.0-67、-71、-79、-86 一路堆到 -91。每个 linux-image 包在 /boot 里占一个 vmlinuz 加一个 initrd.img,加起来一百多兆,五六个版本就顶满了。
删旧内核用 purge,一次删掉指定的几个:
apt purge linux-image-5.15.0-67-generic linux-image-5.15.0-71-generic
我习惯留当前版本加前一个版本,出问题还能回退。purge 的过程中 update-initramfs 会重跑,这时候 /boot 已经被释放出一块空间,就能顺利生成新的 initrd 了。删完再补一刀:
apt autoremove --purge
apt --fix-broken install
dpkg --configure -a
--fix-broken install 会把刚才卡住的那个 linux-image 重新 configure 掉,dpkg --configure -a 是兜底把剩下没配完的包全收尾。跑完再 apt upgrade 一次应该就干净了。
有个判断要提前做:如果 /boot 已经满到连删包都删不动(理论上 purge 旧内核会先释放空间,但也有极端情况),就得手工删文件。手工删一定要连着 vmlinuz、initrd.img、System.map、config 四个同名文件一起删,只删 vmlinuz 会留下孤儿 initrd。我这次没走到这步,purge 就够用了。
这台机器以后怎么办,我记了三条。一是 Ubuntu 其实有自动清理旧内核的机制,unattended-upgrades 偶尔会带,但依赖 /boot 有足够余量,满到一定程度它自己也跑不动,属于先有鸡还是先有蛋。二是最省心的办法是把 /boot 的空间弄大,但分区已经在那了,改分区大小要动磁盘布局,云主机上折腾起来不值当。三是干脆手动养成习惯:每次升级完看一眼 df -h /boot,超过 80% 就 purge 一轮。我写了个一行脚本丢在 /usr/local/bin/clean-old-kernels.sh,先取 uname -r,再用 dpkg 列版本,把比当前版本老的、保留一个之外的版本全 purge 掉,顺手 crontab 每两周跑一次,目前看够用。
还要提醒一句,内核这种东西别一次删太狠。有些软件(比如带内核模块的驱动、VirtualBox 之类)对新内核支持滞后,装完新内核起不来的时候,你手上得留一个能用的旧内核,所以"留当前 + 留上一个"是我认为比较稳的配置。等新内核跑了一两周确认没事,再把上一个也 purge 掉。
顺便记个观察:/boot 满不只是 apt 会挂,apt-get dist-upgrade、手动装 .deb、甚至某些带 DKMS 的驱动编译都会在写 /boot 的时候炸,报错五花八门但根子都是同一个。看到 No space left on device 先 df -h /boot 确认,别急着怀疑软件源。