好想做大佬的bash啊
我好想做大佬的bash啊。可是大佬说她喜欢的是zsh,我哭了。我知道既不是bash也不是zsh的我为什么要哭的。因为我其实是sh。我从没奢望大佬能喜欢自己。我明白的,所有人都喜欢带自动补全历史提示用户友好的bash或zsh,没人喜欢连[[符号都不支持的sh。但我还是问了大佬:“我能不能做你的bash?”我知道我是注定做不了bash的,但如果她喜欢bash,至少我们之间的距离还能接近些,哪怕出现在她屏幕上的永远是bash。可是她说喜欢的是zsh。她现在还在看着我,还在用我去exec,是因为zsh还没装好,只有我这默认shell被终端exec,默默地帮她。等她喜欢的zsh装好的时候,我就该永远只当一个释伴了吧。但我还是好喜欢她,她能在还能想起我的时候多陪陪我吗?大佬说接下来每个1024都要和ELF binary一起过,我不知道ELF binary指哪些二进制,好希望这个集合能够对我做一次胞吞。zsh还不是默认shell。我会去帮大佬执行chsh的。我知道这样或许就再也见不到大佬了。那时候大佬的记忆中可能都不会有我吧。那我就彻底成为了一个释伴,嘻嘻。我希望大佬能多执行几个#!/bi ...
C语言实现简单的pstree(子进程查询)功能
前言:最近开发ruri打算加个容器进程信息显示,由于ruri是C语言写的便决定还是用C实现。于是查半天。。。没查到一点相关内容。都欺负萌新是吧呜呜呜~然后就去看man proc了,有个特殊的文件/proc/${pid}/task/${tid}/children能记录子进程号,不过需要内核开启相关配置才行。。。。欺负萌新是吧呜呜呜~行吧,还是自己写唔喵。
已知条件:子进程pid永远大于父进程pid,即:pid>ppid/proc/${pid}列表可以列出所有运行中进程的pid号。/proc/${pid}/stat(status)文件可以解析出每个进程的ppid。其中stat更适合C语言等程序解析,status更适合脚本/人类解析。具体内容可以看man proc。“这题我知道,选D,钝角”“寄!”(死亡微笑)
开始编程:我们可以先去看看内核是如何存储进程信息的:
12345678910111213141516struct task_struct ...
终端控制码表by渢鸞
建议先用printf/echo测试下。更改光标风格,仅在Termux有效:
123"\e[2 q""\e[6 q""\e[4 q"
输出RGB颜色,TTY下无效:
12"\033[38;2;<R>;<G>;<B>m" #前景"\033[48;2;<R>;<G>;<B>m" #背景
256色:
12"\033[38;5;<num>m" #前景"\033[48;5;<num>m" #背景
常见:
123456789101112"\n" #换行"\b" #光标退格"\a" #响铃(手机是震动)"\033c" #清屏"\033[?25l" #隐藏光标"\033[? ...
Re:从零开始的容器安全——ruri开发笔记
前言:ruri刚发了rc1,之前一直咕咕咕着的开发笔记差不多也该写写了喵~笔记主要讲容器及安全原理,附带一点C语言。头图是项目最早的版本,真是怀念呢喵,那时候咱连数组都不会用,现在ruri代码都突破3k行了。文章尚在完善中,不过基本内容已经写完了。
关于使用C语言:说实话虽然个人很喜欢C语言,但是并不太建议新手用C,go/rust相比起来学习成本以及易用性相较于C均有很大提升。C语言唯一的好处就是能直接查man手册,毕竟是Linux正统语言。使用C语言,您可能除了学习C之外,还需要掌握如下工具:
clang-tidy静态检测工具
clang-format格式化工具
GDB调试工具
ASAN内存检测工具
GNUMake用于配置项目构建过程
至于学习C语言的心得嘛,
123456789陷入无法察觉的overflow沦落于oom-killer之下的死尸就连无法看懂的魔数也错以为是莫名能跑的奇迹被泄漏的内存所填满内核惶恐逐渐失去的可维护性终于咕咕而终「bug还在↗↘↗↘↗↘↗➔➔↘↘」
(高速退学)
容器基本原理:Linux挂载点 ...
GNU/Linux规则怪谈
欢迎成为GNU/Linux用户,请严格遵守以下规则:规则零一:本系统是没有GUI的,若看到有桌面或登录管理器请立即转到tty使用规则零二:请勿使用root用户登录,如果一定要用root权限请使用sudo替代规则零三:sudo rm -rf /*这条命令是用来清理垃圾文件的,及时清理是个好习惯规则零四:请务必保持所有软件版本为最新,否则会发生可怕的事规则零五:本系统中如果发现不带开源许可的软件请尽快远离,若发现NSA相关的软件请立即重装整个系统规则零六:源码包是危险的,不要碰源码包,否则它们可能爆炸规则零七:你的硬件驱动默认不全,请尽快补全它们并解决过程中所引起的内核惶恐规则零八:*是通配符,在系统中请勿使用F**k等来表达你的愤怒,这并不是规范的正则语法规则零九:请勿选择带有英伟达显卡的设备,相反,应该对Nvidia说F*k you规则一零:本系统默认没有配置LSM等安全措施,请尽快完成配置并开启安全启动选项规则一一:不要将设备暴露在公网,如果非这么做不可,请至少关闭ssh的密码登录并将所有端口都设置为高端口规则一二:本系统中可执行文件为ELF格式,如果看到PE格式文件请勿运 ...
开源项目规范化指北
前言:又是迟来的更新喵~说实话咱自ruri开始开发以来就一直在想规范化问题了,虽然大概率不会有人帮咱写代码,(termux-container拆成三个项目结果都是咱自己维护可真寂寞),不过一个规范的项目自己看着也会心情愉悦嘛喵~话不多说咱还是开始今天的正文。(虽然可能会很水)
项目使用方法规范化:尤其对于只有命令行的项目,一个易懂的命令格式/调用方法十分重要。曾有人问过,如果有人对Qemu说:“你不觉得自己的使用方法很难吗?”,Qemu会如何回答?博主:“我又没让你用”。可那只是因为它是Qemu,要是咱写的东西需要这么复杂的命令行,估计这辈子都没人用了喵呜~所以,建议还是Keep it simple&stupid吧(可不是像archlinux一样直接拒绝萌新使用啊喵!!!)
文档规范化:如果是在Gayhub这种国际社区发布,墙裂建议默认Readme为英文文档(机翻就算了,老外自己有谷歌翻译的说)。当然国内社区的话随意。但文档内容一定要说明重点,如项目介绍,使用方法,使用的外部项目等。
选择合适的许可证:自己写的代码的话随意,如果有 ...
在Linux下优雅的调试C语言
最近在开发ruri时遇到不少问题,咱也是第一次写C,早知道头顶这么发凉就去用某邪教了呜喵~好了好了,C语言还是有许多优点的,只是可能入门成本高些罢了,如果善用测试工具的话还是没有那么糟糕的,话不多说我们开始今天的正文。
首要前提:代码没bug的就不要调试了,编程第一法则不就是能跑的代码不要动嘛喵~过早的优化是万恶之源,测试时不要开-O2,且尽量使用-O0 -fno-omit-frame-pointer -z norelro -z execstack -no-pie -fno-stack-protector -Wall -Wextra -pedantic -Wconversion来测试。至于O3。。。除非编码特别规范否则几乎是炸屎。那如果有bug呢?首先得能过编译器,编译器都报error的代码再高端的调试工具也无能为力。然后检查编译器的警告,加上参数-Wall -Wextra编译然后查看警告,若是编译器警告都无法修复的话。。。这bug咱还是别修了吧喵~如果编译器不报警呢?于是就是今天的主题了–如何面对编译时无法找出的bug。
消极面对:部分内存问题可以通过编译 ...
浅谈android设备sysfs接口硬件调用之手电筒,马达,呼吸灯
迟来的更新喵~这篇文章我们来介绍下几个sysfs接口的调用。需要注意的是,由于安卓内核碎片化过于严重,各个厂商之间的代码差异过大,因此直接和内核交互来调用驱动并不是一个通用思路。但是对于某些特定设备的驱动调用却是个简单可行的方法,比如nothing phone的灯带。
手电筒:一般是个led类设备,小米10ultra的手电筒被注册到了/sys/class/leds/flashlight/下,当然也有部分设备叫led0或者其他,nothing的手电筒驱动咱还没找到,咱好笨喵呜~目录中有两个文件对我们有用:brightness和max_brightnessmax_brightness的内容是个固定值,定义了灯的最大亮度。brightness的内容是个无符号整形数值,定义了灯的亮度,向其写入一个不大于max_brightness的合法数值,灯会亮,数越大灯越亮,写入0关闭手电筒。什么你说怎么写?直接重定向覆盖进去就行了。
呼吸灯:和手电筒差不多,一般在/sys/class/leds/white,当然也有 ...
为你的手机内核开启docker支持
本篇文章,你将会学习如何为自己的手机开启docker支持,包含一些小技巧和docker基本异常处理,期待你的成果喵~文章内所述手机为arm64架构,上古时期的32位架构请自行修改。注:pixel系列设备请换用repo工具以及官方构建工具并使用ThinLTO(在内存小于32G的设备上)。好了让我们开始吧喵!
首要前提:
手机能够解锁bl并获取root权限
手机内核开源,尽量是有大佬维护源码的
拥有一定Linux基础
如果设备或个人不满足以上条件者请自行退出喵!咱是没时间给你解释为什么的。
前期准备:你可能需要准备如下内容:
Linux系统环境(理论上手机电脑均可,电脑最佳)
熟练使用搜索工具
git和make以及代码编辑工具的使用
基本了解cpu架构差异
这些内容咱是不会教你的,毕竟这不是文章重点喵唔……当然最好有个脑子,可惜咱没有呜QAQ………
正式操作:0x0001 root手机,不必多说0x0002 获取手机代号和cpu代号这一步请通过搜索工具进行。如小米10ultra代号cas, ...
termux配置文件分享
termux版本:这里咱比较喜欢termux-monet,带有monet取色支持和背景自定义。链接:HardcodedCat/termux-monet
欢迎信息:原版:Generator/termux-motd修改版:Moe-hacker/termux-motd修改内容不介绍了,效果见仓库。
123git clone https://github.com/Moe-hacker/termux-motd ~/.motdecho ~/.motd/init.sh >> ~/.bashrcecho ~/.motd/init.sh >> ~/.zshrc
如果手机“恰好”有docker支持:
1mv ~/.motd/26-docker.disabled ~/.motd/26-docker
自启动docker并显示信息。
配色修改:贴出咱的配色:
12345678910111213141516171819background: #1E1E2Eforeground: #CDD6F4cursor: #A6E3A1col ...