Jump to Navigation

Linux

Linux/Unix操作系统

自己编译archlinux内核

在测试lxc(linux container)的过程中,发现arch 自带linux内核3.12缺少一个模块user_namespace功能。
在lxc-checkcontainer时显示为miss。

在搜索了下关于archlinux对这个模块的打包问题,原来是由于可能存在一个安全问题而没有带到官方的包里。

可以自己在arch linux打包的基础上添加这个功能就可以,因此,考虑使用官方的PKGBUILD文件。

下载最新的archlinux包文件,

git clone git://projects.archlinux.org/svntogit/packages.git

cd packages/linux/trunk/
vim config # 或者config.x86_64
修改一行配置,把# CONFIG_USER_NS is not set替换为CONFIG_USER_NS=y

然后执行正常的编译,
makepkg --skipchecksums

编译出来的包为,linux-3.12.1-1-i686.pkg.tar.xz
pacman -U linux-3.12.1-1-i686.pkg.tar.xz

Category:

libaria2功能介绍

libaria2是linux aria2命令行下载工具的封闭api,
这样在使用aria2的时候不需要修改其代码了。

在之前编写karia2(aria2的GUI界面前端)的时候,
需要在控制代码中包含大量的aria2源代码头文件,
维护起来非常复杂,虽然这有个好处是能了解aria2源代码的组件结构。
编写早期的karia2的过程中,基本上实现了libaria2的功能,
并且比现在的libaria2功能还要多。因为当时直接include进来aria2的源代码,
可以获取到所有程序运行状态信息。

现在karia2作为aria2的前端,以多种不同方式支持aria2的运行管理。
包括直接使用aria2源代码的方式,使用libaria2的方式,
使用aria2 RPC的方式。
所有这些方式,使用相同的管理架构进行下载的管理,并与用户界面交互信息。

Category:

本人使用gentoo linux系统的阶段结束了

本人从2005年开始选择并使用gentoo linux,
主要用作个人电脑桌面系统使用。
当时选择这个系统的原因在于,这种完全定制化系统的理念吸引着我,
并且系统能不断跟进最新的软件包,并且是滚动式的升级,没有什么发布版本的概念。
当时还是使用的台式机,使用的过程伴随着系统的不断升级与配置调整。
后来2009年换了笔记本电脑,也是第一时间安装上了gentoo linux。
直到现在,笔记本电脑上依旧是那时安装的gentoo linux作为首先的linux系统。

随着电脑的老化,已经不太容易支持长时间的软件编译,个人能花在这上面的时间也变少了,
逐步把我的linux桌面切换到arch linux发行版本上。
这个过程从2010年开始,gentoo作为首选系统,再附带安装一个arch linux系统。
有时间的时候用用gentoo,在没有时间的时候,就用arch linux。

Category:

linux 下一代文件系统btrfs简介

Btrfs被称为下一代文件系统。相对于ext2/ext3/ext4这系列特性已经非常稳定的文件系统来说,
btrfs具有很多先进的文件系统设计特性。
最近内核的每个新版本发布,都有btrfs的影子,开发活跃,令人很期待。
btrfs具体有哪些特性让人如此期待?它内部是如何实现的?
适用什么样的场景?怎么使用btrfs命令管理btrfs文件系统?
本文以当前最新的3.11内核的btrfs版本研究btrfs文件系统的功能特性。
1、btrfs发展史
B-tree 文件系统,通常念成Butter FS,Better FS或者 B-tree FS。
采用GPL协议。
由Oracle于2007年发起并进行的COW(写入时复制)文件系统。
btrfs的目标是取代ext2/ext3文件系统,改善现有功能限制并提供更多优秀特性。
2、btrfs特性简介
软件raid实现
类似lvm的卷管理
透明压缩zlib,lzo,(snappy,lz4)
可读/写快照
高磁盘空间利用率的小文件打包
高磁盘空间利用率的索引目录
动态inode分配

Category:

当前项目中传统简单的fastdfs存储架构总结

目前我们的图片存储系统,大概每个月使用1T的存储空间。
再加上图片处理后的图片,可能还会扩大2,3倍的存储容量。
之前使用NAS存储,已经无法满足这样的存储需求。
在上半年考虑使用分布式文件系统,经过调研,选用了开源的fastdfs。
由于初次使用,并没有使用太复杂的架构模式,而使用比较传统的使用模式。
先说下硬件情况,
现有同机房的4台fastdfs存储服务器,每台服务器使用6块2T的sata硬件做成raid5,大概可用存储容量为10多G。

在设计时,考虑足够的容灾要求,把4台服务器做成两组group1,group2。
这样,这个集群的容量为20G,远比使用NAS来的简单许多。
另外,由于在测试使用fastdht组件时遇到了问题,目前没有使用自带的文件去重功能。准备在研究出来原因之前,使用代码级别的去重,在使用异步去重计算的辅助情况下,去重效果理论上与fastdfs自带的排重功能一致。

目前项目上线2个月,已经存储了2T的图片文件。
目前的架构:
M1/group1/tracker1 ===== M2/group1/tracker2
M3/group2 ===== M4/group2

Category:

简易定制化代码部署

工作一直以开发为主,最近维护测试机,
在多台测试机的时候,需要把提交的代码以不同的方式部署到不同测试节点,
在这样一个不算复杂的需求推动下,总结并实现这么一种简易部署方式。

web工程师开发流程如下,
提交代码到svn,svn钩子把代码checkout到本机,
做为本机web测试环境的nginx服务代码。

在架构简单的情况下,一台测试机足够用的情况下运行良好。
不过,随着架构调整,组件变多,一台测试机无法安装所有的服务,
如除了nginx,php外,还需要安装gearman,redis等服务。
这时需要保证最新的代码也能同时部署到安装gearman测试机上。

另外,对于当前的web开发,还有一些特殊的需求,如做js/css客户端优化功能,
而对js/css需要使用squid做前端访问缓存,又出现一种服务流程,并部署在其他测试机上。
经过上面的需求分析,实现这么个简单的测试部署方式,
svn提交+svn钩子+http通知+shell/php处理事件通知。

Category:

使用burg启动安装在ntfs分区磁盘镜像的linux

burg是基于grub2的安装在windows上的bootloader,
相比grub4dos,支持的功能更丰富,配置文件与grub2非常相似。

在上一篇中安装的linux使用的是ubuntu wubi中的grub2启动的,
相当于还是使用了ubuntu的启动,如果在卸载了ubuntu wubi则安装的linux也无法启动了。

在尝试使用独立的bootloader启动磁盘镜像上的linux时,测试了grub4dos,但是由于与grub2的配置文件区别太大,
迁移到这上面需要完全重写启动配置项。
后来经过搜索,找到了burg,在尝试几次后,就正常启动了磁盘镜像上的linux系统。

burg的安装:
下载安装到C:\burg\
把目录中buldr.mbr,buldr两个文件拷贝到C:\

C:\burg\burg.cfg文件:
[root@myarchlap ~]# more /mnt/sda3/Burg/burg.cfg

Category:

在HTC andriod手机上安装nginx+php-fpm+mysql服务

android是一个相对开放的系统,与linux系统非常类似,但也不完全一样。
虽然能做很多事情,但是还需要做许多研究学习。
本次就在手机上安装anmp(android,nginx,php-fpm,mysql)服务对android系统做一次算是应用分析吧。
分析的重点内容为:
linux与android
刷机与root权限,在linux上与android上的不同,了解这个是做hack系统的比较重要的一步
android应用的读写权限
内存卡与sd卡
存储卡的分区方式与分区格式,vfat vs. ext4
外接USB卡的应用
用adb在linux下连接并操作android手机
如何在android命令行执行后台原生程序
android-ndk交叉编译C/C++服务程序环境
交叉编译anmp服务程序
使用已经编译好的arm发行版
chroot环境下启动服务的特征
chroot环境linux系统的安装与应用
android命令行模式的电话短信服务的可行性研究
android服务分析
android硬件驱动研究

编写systemd的服务unit

systemd在桌面系统上越来越流行了,它用来取代之后的sysvinit启动脚本,提高桌面的启动速度。
最近用archlinux的时候,已经删除了sysvinit包,像常用的rc.local已经就不支持了,
以前许多的指启动功能需要移植到systemd的service上来。

本次测试只实现了rc.local的功能,使用了systemd一小部分子集,
并没有用到systemd的所有功能,如果需要更深入的学习systemd unit service的编写,请查阅systemd说明文档。
http://www.freedesktop.org/software/systemd/man/systemd.service.html

systemd unit 脚本是一种类ini格式的文件,按描述信息、执行、安装等分为多个section,
每个section多条name=value行,现就就最基本的section和name做下描述:
section: Unit, Service, Install

Category:

我的最小化linux桌面

有一台配置一般的机器,安装的是arch linux,平时用它启动虚拟机windows系统。
所以,为了节省主机的资源,定制了脚本启动X,以最小化主机X资源占用。
我的启动脚本只启动了几个必须启动的进程,是在lxde桌面的基本上简化来的,
占用资源非常小了,再该机器上再启动虚拟机后运行良好,
cat start_mini_x.sh
#!/bin/sh

X &
sleep 2

Category:

页面

订阅 RSS - Linux


Main menu 2

by Dr. Radut