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的更多相关文章

  1. 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 ...

  2. 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: ...

  3. 制作nginx的rpm包出现问题

    在学习打包rpm,找到了个不错的参考站点  https://src.fedoraproject.org/cgit/rpms/ 过程: git clone -b el6 git://pkgs.fedor ...

  4. gbs build使用说明

    注:本文从:https://source.tizen.org/documentation/articles/gbs-build 翻译而来. 1 前言 通过使用gbs build指令,开发者可以在本地编 ...

  5. ceph 生成rpm包

    概述 从ceph的源码build出rpm包: #git clone --recursive https://github.com/ceph/ceph.git #./instal-dep.sh 以上两点 ...

  6. 制定RPM包和加入YUM源

    ##################################################### ##如有转载,请务必保留本文链接及版权信息 ##欢迎广大运维同仁一起交流linux/unix ...

  7. 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 ...

  8. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6

    Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...

  9. RHEL6.4编译安装企业级LAMMP平台

    一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程    1.安装arp与httpd    2.安装mysql    3.安装php(php-fpm)    4.安装Xcache   ...

随机推荐

  1. 动态规划——独立任务最优调度(Independent Task Scheduling)

    题目链接 题目描述 用2 台处理机A 和B 处理n 个作业.设第i 个作业交给机器A 处理时需要时间i a ,若由机器B 来处理,则需要时间i b .由于各作业的特点和机器的性能关系,很可能对于某些i ...

  2. php的优缺点(转)

    1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(Fr ...

  3. Project Euler 41 Pandigital prime( 米勒测试 + 生成全排列 )

    题意:如果一个n位数恰好使用了1至n每个数字各一次,我们就称其为全数字的.例如,2143就是一个4位全数字数,同时它恰好也是一个素数. 最大的全数字的素数是多少? 思路: 最大全排列素数可以从 n = ...

  4. 一次 Laravel 性能分析全程笔记

    大家都知道 laravel 项目写起来是挺爽,但是在生产环境性能不高,我们来抽丝剥茧分析我自己项目的运行时间消耗: Bootstrap 耗时 步骤 耗时 Illuminate\Foundation\B ...

  5. CSS3 创建简单的网页动画 – 实现弹跳球动

    基础准备对于这个实现,我们需要一个简单的 div ,并且样式类名为 ball : HTML 代码: <div class="ball"></div> 我们将 ...

  6. APS.NET webform中的isPostBack

    IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者th ...

  7. 计算机网络系统--Microsoft Lync 与 腾讯通RTX 对比(转载)

    原文网址: http://it.vsharing.com/226.html ------------------------------- 上海大学统一通信平台现在尚未实施,一直在测试微软的Lync. ...

  8. 【配置属性】—Entity Framework实例详解

    Entity Framework Code First的默认行为是使用一系列约定将POCO类映射到表.然而,有时候,不能也不想遵循这些约定,那就需要重写它们.重写默认约定有两种方式:Data Anno ...

  9. 打造一个全命令行的Android构建系统

    IDE都是给小白程序员的,大牛级别的程序员一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定” 这话说的虽然有些绝对,但是也不无道理,做开发这行要想效率高,自动化还真是缺少不了命令 ...

  10. jquery源码ajax分析

    http://www.cnblogs.com/aaronjs/p/3683925.html