Build rpm example:zram
rpmbuild
#ll zram-1.0.0
total 32
-rw-r--r-- 1 root root  948 Aug 21 16:44 Makefile
-rw-r--r-- 1 root root  221 Aug 21 16:44 mkzram.service
-rw-r--r-- 1 root root 2633 Aug 21 16:44 README.md
-rw-r--r-- 1 root root  395 Aug 23 11:29 zram
-rw-r--r-- 1 root root 1780 Aug 21 16:44 zram.spec
-rwxr-xr-x 1 root root  988 Aug 22 11:17 zramstart
-rwxr-xr-x 1 root root  931 Aug 22 12:32 zramstat
-rwxr-xr-x 1 root root  162 Aug 21 16:44 zramstop
#ls
zram-1.0.0
#tar -czf zram-1.0.0.tar.gz zram-1.0.0
#cp zram-1.0.0.tar.gz /root/rpmbuild/SOURCES/
#cp zram-1.0.0/zram.spec /root/rpmbuild/SPECS/zram.spec
#rpmbuild -ba  /root/rpmbuild/SPECS/zram.spec
文件准备
/usr/lib/systemd/system/mkzram.service
[Unit]
Description=Enable compressed swap in memory using zram
After=multi-user.target
[Service]
RemainAfterExit=yes
ExecStart=/usr/sbin/zramstart
ExecStop=/usr/sbin/zramstop
Type=oneshot
[Install]
WantedBy=swap.target
#cat /usr/sbin/zramstart
#!/bin/sh
#$(nproc) get cpu core number
num_cpus=$(nproc)
[ "$num_cpus" != 0 ] || num_cpus=1
#memory percentage,If have mem:100G cpu:24, default value per disksize=33G/24
MEM_FACTOR_PERCENT=33
num_device=$num_cpus
if [[ -f /etc/sysconfig/zram ]];then
	source /etc/sysconfig/zram
	if [[ -n $MEM_FACTOR_PERCENT ]];then
		mem_percentage=$MEM_FACTOR_PERCENT # memory percentage
	fi
	if [[ -n $DEVICE_NUM ]];then
		num_device=$DEVICE_NUM  #device number
	fi
fi
memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ')
mem_per_device=$(($memtotal/${num_device}*${mem_percentage}/100*1024))
modprobe -q zram num_devices=${num_device}
last_num=$(($num_device - 1))
for i in $(seq 0 $last_num); do
	#enable lz4 if that supported
	if [[ -e "/sys/block/zram$i/comp_algorithm" ]];then
		grep -q lz4 /sys/block/zram$i/comp_algorithm && echo lz4 > /sys/block/zram$i/comp_algorithm
	fi
	echo $mem_per_device > /sys/block/zram$i/disksize
	mkswap /dev/zram$i
	swapon -p 100 /dev/zram$i
done
#cat /usr/sbin/zramstat
#!/bin/sh
ls /sys/block/zram* > /dev/null 2>&1 || exit 0
for i in /sys/block/zram*; do
	each_zram=`echo ${i##*/}`
	compr=$(< $i/compr_data_size)
	orig=$(< $i/orig_data_size)
	ratio=0
	if [ $compr -gt 0 ]; then
		ratio=$(echo "scale=2; $orig/$compr" | bc -q)
		#ratio=$(echo "scale=2; $compr/$orig*100" | bc -q)
	fi
	orig_human_MB=`scale=2;echo "$orig/1024/1024" | bc`
	compr_human_MB=`scale=2;echo "$compr/1024/1024" | bc`
	swap_size=`cat /proc/swaps | grep -w "${each_zram}"	| awk '{print $3}'`
	swap_used=`cat /proc/swaps | grep -w "${each_zram}"	| awk '{print $4}'`
	swap_ratio=$(printf "%.2f" `echo "scale=2;${swap_used}/${swap_size}*100"|bc`)
	#echo -e "/dev/${i/*\/}:\t${ratio}% (${orig} bytes (${orig_human_MB} MB) -> ${compr} bytes (${compr_human_MB} MB))"
	echo -e "/dev/${i/*\/}:\tswap_used:${swap_ratio}% compress_ratio:${ratio}:1 (${orig} bytes (${orig_human_MB} MB) -> ${compr} bytes (${compr_human_MB} MB))"
done
#cat /usr/sbin/zramstop
#!/bin/sh
for i in $(grep '^/dev/zram' /proc/swaps | awk '{ print $1 }'); do
	swapoff "$i"
done
if grep -q "^zram " /proc/modules; then
	sleep 1
	rmmod zram
fi
#cat /etc/sysconfig/zram
# The factor is how much (from 0 to 100, percentage)
# of system RAM to allocate to ZRAM block devices
# Too big, and your system will start killing off processes
# If total_mem=100G, MEM_FACTOR_PERCENT=33, /dev/zram0+/dev/zram1+... = 33G ,default value is 33%
MEM_FACTOR_PERCENT=33
#Define /dev/zramxx number,if you do not define , default DEVICE_NUM value equal cpu core number
#DEVICE_NUM=1
spec文件准备
#cat zram.spec
Summary: Enable compressed swap in memory
Name: zram
Version: 1.0.0
Release: 2%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: systemd-units
Requires(post): systemd-sysv
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
Requires: filesystem >= 2.0.1, initscripts, bc > 1.0
# No debug info for bare scripts, right?
%define debug_package %{nil}
# http://fedoraproject.org/wiki/Changes/UnversionedDocdirs
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
%global _docdir_fmt %{name}
%description
zram compresses swap partitions into RAM for performance.
You need Linux kernel version 2.6.37.1 or better to use zram.
%prep
%setup -q
%build
%install
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
ln -s $RPM_BUILD_ROOT/usr/lib $RPM_BUILD_ROOT/lib
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
%makeinstall DESTDIR=$RPM_BUILD_ROOT
%post
%systemd_post mkzram.service
%preun
%systemd_preun mkzram.service
%postun
%systemd_postun_with_restart mkzram.service
%files
%doc README.md
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%{_unitdir}/mkzram.service
%{_sbindir}/zramstart
%{_sbindir}/zramstop
%{_sbindir}/zramstat
%exclude /lib
%changelog
* Tue Nov 25 2014 Juan Orti <jorti@fedoraproject.org> - 1.0.0-1
- Spec file cleanup
* Mon Nov 25 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-2
- http://fedoraproject.org/wiki/Changes/UnversionedDocdirs
- Added kmod-staging dependency
- Test on Fedora 19
* Mon Sep 02 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-1
- Add Darren Steven's build fix for fedora 18
* Tue Mar 19 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-0
- Initial package
												
											Build rpm example:zram的更多相关文章
- Build RPM package from source code
		
# yum install rpm-build# wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz# vim rsync.specNam ...
 - Hadoop build error java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter
		
When running the command: + mvn site site:stage -DskipTests -DskipTest -DskipITs you get an error: ...
 - 制作nginx的rpm包出现问题
		
在学习打包rpm,找到了个不错的参考站点 https://src.fedoraproject.org/cgit/rpms/ 过程: git clone -b el6 git://pkgs.fedor ...
 - gbs build使用说明
		
注:本文从:https://source.tizen.org/documentation/articles/gbs-build 翻译而来. 1 前言 通过使用gbs build指令,开发者可以在本地编 ...
 - ceph 生成rpm包
		
概述 从ceph的源码build出rpm包: #git clone --recursive https://github.com/ceph/ceph.git #./instal-dep.sh 以上两点 ...
 - 制定RPM包和加入YUM源
		
##################################################### ##如有转载,请务必保留本文链接及版权信息 ##欢迎广大运维同仁一起交流linux/unix ...
 - CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25
		
所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...
 - CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6
		
Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...
 - RHEL6.4编译安装企业级LAMMP平台
		
一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程 1.安装arp与httpd 2.安装mysql 3.安装php(php-fpm) 4.安装Xcache ...
 
随机推荐
- python3发送邮件
			
import smtplib from email.mime.text import MIMEText from email.utils import formataddr import psutil ...
 - Windows环境下制作Ubuntu的U盘启动工具
			
Windows用户想要尝试一下Ubuntu或其他Linux系统?最简单的方法就是使用VMware Workstation,只是虚拟机会真实占用内存,如果你的电脑内存8G及以上可以试试.内存偏小,或者觉 ...
 - C#常用 API函数大全
			
常用Windows API1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConne ...
 - CentOS 7下搭建高可用集群
			
一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# ...
 - MPlayer 开始支持RTSP/RTP流媒体文件
			
hostzhu点评:MPlayer对流媒体的支持,让大家能更进一步地利用linux来看网络直播,对Linux下多媒体应用的推动作用可以说不可度量. RTSP/RTP streaming support ...
 - 手机上怎么去掉a 标签中的img点击时的阴影?
			
添加: <style type="text/css"> a { -webkit-tap-highlight-color: transparent; -webkit-to ...
 - RE:ゼロから始める文化課生活
			
觉得有必要在NOI之前开一篇学习内容记录. 至于为什么要取这个标题呢?也许并没有什么特殊的借口吧. 5.23 在LOJ上搬了三道原题给大家考了考,然后大家都在考试就我一个人在划水. SSerxhs 和 ...
 - IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...
			
今天,在IIS上部署网站后,出现了下面错误: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 <sy ...
 - 获取DATA的数据
			
num=DataTable("参数名",dtGlobalSheet) 'systemutil.Run "C:\Program Files (x86)\HP\QuickTe ...
 - Shell简单介绍
			
Shell是一种具备特殊功能的程序.它是介于使用者和linux 操作系统之核心程序(kernel)间的一个接口.为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的 ...