====== Linux ====== * [[http://vbird.dic.ksu.edu.tw/|鸟哥的linux私房菜]] * [[http://www.debian.org/doc/manuals/debian-reference/]] * [[maintain]] * [[ubuntu]] * [[kylin]] * [[linux input subsystem]] * [[linux-program]] * [[shell]] * [[.:gsettings]] * [[network]] * [[https://paper.seebug.org/779/|驱动开发入门]]这个技术博客其他文章也很不错=) * [[wp>Direct_Rendering_Manager|DRM 子系统]]: Direct Rendering Manager(DRM)是linux内核子系统,负责与显卡交互 * [[https://blog.csdn.net/weixin_41028621/article/details/110202300|libdrm]] * [[https://unix.stackexchange.com/questions/33596/no-framebuffer-device-how-to-enable-it| 关于显示 framebuffer]] ===== Fun ===== * [[cmatrix]] * [[http://misc.flogisoft.com/bash/tip_colors_and_formatting|Terminal colors and formating]],适用于 ANSI/VT100 命令行窗口 * [[https://en.wikipedia.org/wiki/ANSI_escape_code|ANSI escape code]] ===== Kernel ===== * [[https://szlin.me/2016/05/12/linux-kernel-%E5%B0%8D%E6%96%BC%E7%B3%BB%E7%B5%B1%E7%99%BC%E7%94%9Fkernel-panic-%E8%87%AA%E5%8B%95%E9%87%8D%E5%95%9F%E4%B9%8B%E5%8E%9F%E7%90%86/|Linux Kernel 對於系統發生kernel panic 自動重啟之原理]] * 在系統中直接對''/proc/sys/kernel/panic''進行設定. 預設為0, 也就是不會自動重啟系統 * 或編輯 /etc/sysctl.conf, 在裡面設定 ''kernel.panic = 5'' 之後開機即自動設定完成 * [[https://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/index.html|使用 Crash 工具分析 Linux dump 文件]] * ''/proc''下的信息:[[http://man7.org/linux/man-pages/man5/proc.5.html]] * linux 怎么添加i2c设备的方法:https://www.kernel.org/doc/Documentation/i2c/instantiating-devices ===== Desktop ===== * [[X11]] * 桌面种类: * KDE:[[https://kde.org/]] * GNOME: [[http://gnome.org/]] * DEEPIN: [[https://www.deepin.org/zh/dde/]], 国产 * Cinnamon: [[https://github.com/linuxmint/cinnamon]] * MATE: [[https://zh.wikipedia.org/wiki/MATE|zh wiki]], [[https://mate-desktop.org/zh_cn/|mate-desktop.org]] * Budgie: [[https://zh.wikipedia.org/wiki/Budgie_(%E6%A1%8C%E9%9D%A2%E7%8E%AF%E5%A2%83)|zh wiki]] * Xfce: [[https://www.xfce.org/|xfce.org]] [[https://wiki.archlinux.org/title/xfce|archlinux wiki]]轻量 * 获取桌面环境 * 桌面环境中可用''echo $XDG_CURRENT_DESKTOP''或''echo $DESKTOP_SESSION'' 查看 * 获取详细版本可安装 ''screenfetch'' sudo apt-get install screenfetch screenfetch # 得在桌面上开的 terminal 才有桌面信息, ssh 没有。 * ssh 可用如下指令获取 pgrep -l "gnome|kde|mate|cinnamon|lxde|xfce|jwm" # 或 ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm" # 或 ls /usr/bin/*session* * 一个图形信息软件 ''sudo apt install hardinfo'' * 桌面图标设置 [[https://wiki.deepin.org/wiki/Desktop_Entry_%E6%96%87%E4%BB%B6|Desktop Entry]] ===== Package manager ===== * debian 系用dpkg/APT,//.deb// ''dpkg'', ''apt-get'', ''aptitude'' * [[https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html|Basics of the Debian package management system]] * redhat 系用RPM, //.rpm// , ''yum'' * dpkg 添加32位包信息: # 添加32位包索引 $ sudo dpkg --add-architecture i386 $ sudo apt-get update * [[http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/|简单deb包制作]] * [[https://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html|Debian 新维护者手册]] * FHS: [[wp>Filesystem Hierarchy Standard]] ===== Service ===== * init.d 脚本编写参考 ''/etc/init.d/skeleton'' 使用start-stop-daemon启动nodejs保存输出的方法: start-stop-daemon --start --quiet \ --pidfile $PIDFILE -b -m --startas \ /bin/bash -- -c "exec ${NODE_PATH} ${NODE_SCRIPT} >> ${LOG_PATH} 2>&1" * [[Systemd]] * [[Upstart]] * [[supervisor]] ===== Commands ===== * nohup * watch ==== ldconfig ==== * ''/etc/ld.so.conf'' 动态链接搜索路径设置, 改完后需要 ''sudo ldconfig'' * ''ldconfig -p'' 列举动态链接库列表 ===== Tools ===== * Socat, simulate a pair of serial ports: ''socat -d -d PTY PTY'' * [[tmux]] ===== Hardware ===== *使用 bash 串口通信 # 设置波特率 ## 查看当前信息 $ stty -F ttyO1 ## 设置波特率 $ stty -F ttyO1 38400 # 监听 $ od -t x1 ttyO1 # 写 $ echo hello > ttyO1 # 或者用 screen 读写 $ screen tty01 38400 ===== Tips ===== ==== 文件查找 ==== * https://www.madebygps.com/an-intro-to-finding-things-in-linux/ * **which** : 查看命令关联之文件(或link) * **locate** : 该命令需要索引数据库作为支撑,在 Ubuntu 中数据库文件位于 ''/var/cache/locate/locatedb''。一般来说,这个数据库文件每天通过 cron 自动更新。可执行 ''sudo updatedb'' 来手动更新。 假如想要查找一个名为 linux.html 的文件,可以执行:''locate linux.html''。locate 选项 ''-r''即可使用正则表达式。具体 man locate 查看说明. * **find** : 一般使用方法:''find 位置 -name 文件名称''例如'' find / -name linux.html''。find 也可以根据文件大小''-size n ''、''-atime n ''来搜索文件。 此外,find支持使用正则表达式,只需指定 ''-regex'' . 具体可以 man find 查看说明. ==== 二进制文件 ==== * 查看:''od -x '', 具体''man od''; * 小的二进制文件可用 vim 编辑:''vim -b ''打开后,输入命令 '':%!xxd''; * 大内容二进制文件修改部分: ''printf "\x41\x41" | dd of=big_binary.dat bs=1 count=2 conv=notrunc seek=888888'' ;