linux 相关
wdq347
喜欢数学,热衷于算法研究,钟爱开源软件
展开
-
linux proc 文件读取,触发proc 读函数三次
在使用cat 命令读取proc 文件时,奇怪的发现读函数被执行了三次,这三次都是有原因的。proc 读函数代码片断(直接读取内核模块的某个变量值)static int proc_read_addr(char *page, char **start, off_t off, int count, int *eof, void原创 2012-09-13 10:13:41 · 2427 阅读 · 0 评论 -
docker之数据存储
1 简介docker镜像是一个只读的文件系统,容器是镜像的运行环境,即在镜像基础上再加一层可读写的层,因此所有容器中的数据写入时均写到容器中,会随着容器的销毁而消失。为确保容器可以存储数据,docker引入数据卷volume来处理此情况。volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。2 使用volume 存储原创 2017-12-08 16:52:09 · 1629 阅读 · 0 评论 -
docker之仓库管理
1 简介docker 仓库,即所谓registry,实现了镜像的管理、分发,同时还包括用户的认证。dockerregistry仓库是一个无状态的、高可靠的服务器应用程序,用来存储docker镜像。docker.io为docker官方的仓库,默认所有的pull均是从官方仓库拉取镜像。公司内部平台应用如果使用docker镜像,则必须搭建私有仓库,使用docker的官方镜像Registr原创 2017-12-08 16:46:50 · 1286 阅读 · 0 评论 -
docker之镜像制作
1 简介docker image,即镜像,是docker的关键元素,它是一个可读的文件系统,又是一个多层的文件系统,可以导出成一个tar包文件,也可以上传到镜像仓库供其他人下载使用。2 制作镜像2.1 基本原理docker镜像是一个多层的文件系统,制作镜像使用的Dockerfile每一行可以看作一层。所有的镜像必须基于一个最基础的镜像,目前所有镜像都是基于原创 2017-12-08 16:50:30 · 799 阅读 · 0 评论 -
docker之compose
1 简介对于某个应用可能会有多个容器,比如一个django项目,用到了mysql、django、redis、nginx这些容器,每个容器都有自己独特的配置,启动这些容器至少需要四条语句。为简化应用配置,docker开发了compose项目,这个东西实在太好了,只有一个可执行文件,可以随意迁移,但目前仅支持x86_64的Linux机器,docker-compose。原则上所有的生产型原创 2017-12-08 16:49:35 · 373 阅读 · 0 评论 -
virtualbox 内部网络桥接配置
问题现象virtualbox 内部的虚拟网络,其中有个设备是桥接(假设为设备S),即lan/wan接口是一个桥接口,但实际测试时发现此设备不能转发任何报文,即S设备lan口的机器不能上网此问题困扰了近半年时间解决方法修改设备S的lan/wan接口,确保此接口工作在混杂模式,且允许所有的报文通过,而且修改完成后设备S必须重启详细原因virtualbox 虚拟机原创 2016-02-16 10:05:37 · 3760 阅读 · 0 评论 -
linux panic 问题定位
本文希望可以一直更新,记录下我所遇见的原创 2014-09-28 15:04:24 · 18512 阅读 · 0 评论 -
gdb 调试网络程序发现connect 失败(interrupted system call)
问题现象直接执行程序一切正常,但使用gdb启动程序时,即使没有任何断点,发现tcp connect 总是失败,原因是(interrupted system call)。抓包发现主机会发送FIN或者RST断开这条连接。程序是一个多线程程序,而且connect的线程不是主线程。问题解决设置gdb 为non-stop 模式,如此可以完美解决set ta原创 2015-11-17 17:08:23 · 3143 阅读 · 0 评论 -
openwrt 相关知识记录
1. luci 安装 为便于调试,计划直接在x86 Linux 上安装luci环境,参考,http://luci.subsignal.org/trac/wiki/Documentation/DevelopmentEnvironmentHowTo,以下记录简要步骤以及若干问题。(1) 下载luci 源码git clone https://github.com/ope原创 2015-01-07 09:44:12 · 2083 阅读 · 0 评论 -
netfilter forward 接收到大包的问题
在netfilter 的forward上作了HOOK,但经常发现会收到非常大的数据包,很是奇怪。最后发现是网卡的GRO属性导致的,而且这个属性默认开启,很是怪异,我们这个设备主要是路由设备,使用GRO对性能提高没有任何好处,真不知道Linux kernel 如何默认关闭GRO,因此只能在设备启动时使用ethtool -K 关闭GRO,如此netfilter 收到的包就正常了原创 2015-07-01 09:05:32 · 648 阅读 · 0 评论 -
pppoe pppd连接不上问题
windows2003 使用raspppoe 搭建的PPPoE 服务器,用windows 自带的拨号软件直接可以连接上,但在openwrt 下使用pppd拨号,总是失败。仔细对比pppoe 的抓包发现,raspppoe服务器默认使用MPPE 加密,但openwrt 的Linux 内核默认没有支持mppe,如此导致pppd 无法协商通过,即拨号失败在解决问题过程中,尝试仅仅修原创 2015-06-25 11:45:43 · 3018 阅读 · 0 评论 -
linux panic 记录文件
1 设计1.1 技术使用kdump(kexec)引导第二个内核启动,在第二个内核中捕捉panic信息,同时将系统内核的内存镜像存储到/proc/vmcore文件中,由于此文件与内存大小一致,故不能直接使用此文件。使用kexec 的一个工具vmcore-dmesg,可以将/proc/vmcore转换为dmesg的信息,然后存储到文件中即可。1.2 步骤1.2.1原创 2015-06-02 18:17:47 · 4018 阅读 · 2 评论 -
Linux 内核SMP 竞争问题
问题现象netfilter 挂一个hook,按流来处理数据包。在慢速场景下没有问题,但一旦稍微速度快些,就会发现某条流的数据包会随机的丢失、乱序问题解决使用tcpreplay 重放包测试,记录一条流的所有包的相关信息,详细查看每个包的情况,发现速率快时丢包严重,且有很严重的乱序现象。由于都同属于同一条流,刚开始没有想到SMP的问题,后来在函数入口处加锁,如此乱序问题原创 2015-04-30 17:06:24 · 645 阅读 · 0 评论 -
ubuntu 的一些使用技巧,均全部来自互联网,记录在案,忘记时可参考
最近开始使用ubuntu,发现有很多需要原创 2014-09-15 09:38:44 · 824 阅读 · 0 评论 -
Linux 网桥模式下使用netfilter
工作中需要实现网桥模式下进行IP包过滤,即使用netfilter,发现Linux 内核已经支持,但默认没有打开,需要做如下改动:1. 确保内核编译时开启 CONFIG_BRIDGE_NETFILTER2. /proc/sys/net/bridge/bridge-nf-call-iptables 必须置为1,目前openwrt 版本默认关闭此选项导致桥接无法抓到包,需要修改/原创 2015-03-26 10:14:34 · 4810 阅读 · 0 评论 -
串口调试Linux虚拟机
串口调试Linux虚拟机背景 由于修改Linux内核,因此在调试程序时经常会导致Linux虚拟机panic,但看不到有用的panic 信息,故十分有必要看到panic 的现场信息。本文通过串口方式将信息保存下来。方式虚拟机串口1. Virtualbox设置使用Virtualbox 自带的串口工具即可,如下图示: 启用串口1,即ttyS0,使用主原创 2014-09-23 14:26:57 · 1861 阅读 · 0 评论 -
Linux 杂项,记录Linux 下的一些点滴心得,以供参考
1. netfilter 看到的skb 报文非线性问题现象netfilter 看到的skb 报文非线性,即报文全体并不存在于skb->data 内存空间内,导致我们的应用协议处理故障详细过程使用tcpreplay 打包测试,HTTP Get请求包,发现部分报文的skb 非线性,即skb->data_len大于0,详细测试结果如下:GET 请求包大小7原创 2016-01-09 10:04:30 · 748 阅读 · 0 评论