编译Linux内核 May 18, 2016 / Unix LIKE / apacal / 2653 CLICK / 0 comment # 编译Linux内核 ## What 编译Linux内核对一些库与工具的版本要求比较多,用虚拟机根据自己要编译的版本安装不同的操作系统。(详细的库与工具要求在Documentation/Changes有详细说明)。 编译2.6版本推荐使用CentOS 5,编译系统信息如下: ~~~ ┌[apacal☮apacalCentOS]-(~) └> cat /proc/version Linux version 2.6.19-default (apacal@localhost.localdomain) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Fri Dec 11 13:19:17 CST 2015 ┌[apacal☮apacalCentOS]-(~) └> cat /etc/issue CentOS release 5 (Final) Kernel \r on an \m ~~~ ## How ### 下载源码 通过git clone源码 ~~~ git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git ~~~ 检出需要编译的版本 ~~~ git tag git checkout v2.6.19 git checkout -b v2.6.19 ~~~ ### 环境准备 安装必要的工具 ~~~ sudo apt-get install fakeroot build-essential kernel-package libncurses5 libncurses5-dev ~~~ ### 编译运行 copy系统的boot配置,然后运行``make menuconfig`` ~~~ make clean && make mrproper cp /boot/config-`uname -r` ./.config make menuconfig ~~~ 增加或修改modules后,编译安装 ~~~ make bzImage && make modules sudo make modules_install sudo make install ~~~ 可以在``sudo vim /boot/grub/menu.lst``看到编译后的启动项 ~~~ # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.19-default) root (hd0,0) kernel /vmlinuz-2.6.19-default ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.19-default.img title CentOS (2.6.18-8.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-8.el5.img ~~~ ``2.6.19-default`` 就是自己编译的版本 重启系统``sudo shutdown -r now``选择自己编译的内核 ## Reference [CustomKernel- https://wiki.centos.org/zh/HowTos/Custom_Kernel](https://wiki.centos.org/zh/HowTos/Custom_Kernel) Continue reading
subversion使用tips May 24, 2016 / Unix LIKE / apacal / 2637 CLICK / 0 comment # subversion使用tips 1. 设置忽略文件列表 ~~~ svn pe svn:ignore . ~~~ 2. 设置全局忽略文件列表 编辑``~/.subversion/config``文件,修改此文件中的``global-ignores``,例如,想让subversion忽略java class和gcc 默认的二进制文件,可以这样设置: ~~~ global-ignores = *.out *.class ~~~ 3. 查看某次提交所修改的文件列表 ~~~ svn -v -r 12345 log ~~~ 4. 有高亮查看更改的文件 ~~~ svn diff | view - ~~~ Continue reading svn
码农Tips May 25, 2016 / Unix LIKE / apacal / 2675 CLICK / 0 comment # 码农Tips ## MacOs安装Gnu tools mac os 是BSD系列默认的有些工具都是BSD的,比如tar。 1. 安装coreutils ~~~ brew install coreutils ~~~ 2. 增加``PATH``与``MANPATH``在``.zshrc``或者``.bashrc`` ~~~ export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH" ~~~ 3. 添加brew的repo ~~~ brew tap homebrew/dupes ~~~ 4. 安装下列的软件 ~~~ brew install binutils brew install diffutils brew install ed --default-names brew install findutils --default-names brew install gawk brew install gnu-indent --default-names brew install gnu-sed --default-names brew install gnu-tar --default-names brew install gnu-which --default-names brew install gnutls --default-names brew install grep --default-names brew install gzip brew install screen brew install watch brew install wdiff --with-gettext brew install wget ~~~ ## tar增量备份 ### BSD tar 1. 先进行一个完全备份 ~~~ tar -cf test.tar test // tar -cf 打包后的名字 [文件或目录列表] ~~~ 2. 使用u参数进行增量备份 ~~~ tar -uf test.tar test tar -uf [原先的tar后的文档] [原先的文件或目录] ~~~ ### GNU tar 1. 执行完整备份 ~~~ tar -g snapshot -zcf backup_full.tar.gz test ~~~ 2. 执行第一次的增量备份 ~~~ tar -g snapshot -zcf backup_incremental_1.tar.gz test ~~~ 3. 执行第二次的增量备份 ~~~ tar -g snapshot -zcf backup_incremental_2.tar.gz test ~~~ ## ssh公钥登录 SSH提供了一种公钥登录,可以省去输入密码的步骤。 所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。 1. 生成自己的公钥(有的话跳过) ~~~ ssh-keygen ~~~ 运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。 运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。 2. 将公钥传送到远程主机host上面 ~~~ ssh-copy-id user@host ~~~ 3. ext 如果还是不行,就打开远程主机的``/etc/ssh/sshd_config``这个文件,检查下面几行前面``#``注释是否取掉。 ~~~ RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ~~~ 然后,重启远程主机的ssh服务。 ~~~ // ubuntu系统 service ssh restart // debian系统 /etc/init.d/ssh restart ~~~ 如果不行看下远程主机是否是使用``PAM authentication``来auth的。 ## ssh远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。 ~~~ $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub ~~~ 单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过SSH传向远程主机。 这就是说,SSH可以在用户和远程主机之间,建立命令和数据的传输通道,因此很多事情都可以通过SSH来完成。 下面看几个例子。 1. 将``$HOME/src/``目录下面的所有文件,复制到远程主机的$HOME/src/目录 ~~~ $ cd && tar czv src | ssh user@host 'tar xz' ~~~ 2. 将远程主机``$HOME/src/``目录下面的所有文件,复制到用户的当前目录 ~~~ $ ssh user@host 'tar cz src' | tar xzv ~~~ 3. 查看远程主机是否运行进程httpd ~~~ $ ssh user@host 'ps ax | grep [h]ttpd' ~~~ 4. 根据``svn status``的结果,将修改的文件上传到服务器某个目录 ~~~ tar -zcv `svn status | awk '{print $2}'` | sshphp 'cd /data/web && tar zxv ~~~ ## f.lux [f.lux](https://justgetflux.com/)是一款随着时间变化自动调整电脑显示器屏幕色温,过滤对人眼伤害最大的蓝光,从而尽可能减少屏幕对眼睛所带来的疲劳感并帮助提高夜猫子们的睡眠质量。支持windows,linux,mac os。 ## ssh代理 1. 安装``corkscrew`` ~~~ // mac os brew install corkscrew // ubuntu apt-get install corkscrew ~~~ 2. 修改ssh配置 在``~/.ssh/config``下加入``ProxyCommand`` ~~~ Host * ProxyCommand corkscrew example-proxy.com 8080 %h %p ~/.ssh/proxyauth // example Host apacal.cn ProxyCommand corkscrew dev-proxy.oa.com 8080 %h %p ~/.ssh/proxyauth ~~~ 创建``~/.ssh/proxyauth``文件以来保存用户名与密码(最好密码不要保存在这里,空文件就好) 保存格式是 ~~~ login:password ~~~ Continue reading