分类 技术 下的文章

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用服务器。

如果你有几个不同的电脑需要同步和自动化备份,RPi可以做到。如果你想通过家中的任意屏幕来访问你的音乐和视频,RPi也能实现。也许你有一个或两个打印机,你想要简单与大家共享,树莓派在硬件和时间上用最小投资就能满足你的这些需求。

树莓派的好处

低成本:35美元(约合242元RMB),B型的RPi接近一台完整的电脑,512M内存,100Mb以太网,SD卡插槽,2个USB接口,音频输出和HDMI或RCA视频输出。我知道HDMI电缆就比树莓派贵。

能源效率:硬件成本只是服务器费用的一部分,因为你需要考虑能源成本去不断运行设备。家用服务器所需要的服务不会占用太多CPU,大部分时间它都处于空闲状态,等待发挥功效。RPi's超低功率组件非常适合这个工作负载,这有助于降低你的电费消耗。我的一个B型的RPi加上外部硬盘消耗总共只有8瓦,然而用老式速龙代替的机器在闲置时消耗54瓦。假设10美分每千瓦一小时,这使得一个RPi每年的电费在7美元。一个基于速龙的机器是47美元。在不到一年的时间里,RPI基本上能够收回成本。

低噪音:因为RPi没有风扇和移动部件,在你最终配置中的唯一能生成噪音或明显热量的组件就是硬盘。如果你担心噪音,像Silent PC Review发烧友网站经常在他们的评论中涉及到噪声基准。我的体会是现代驱动器足够安静,要比其他的设备安静的多(如媒体中心,游戏机或其他电脑)。如果你家里没有为布线提供更多的灵活性选择,RPi的小尺寸、少量发热和低噪音也许让你走过它旁边都很难发现。

图1,一个简洁高效的家用服务器

新机会:一个不怎么实际的好处是-简单快乐的尝试新事物!对我来说,这是我第一次真正工作在基于Debian的发行版,很可能也是许多Linux爱好者们第一次有机会尝试一个基于ARM的体系结构。

布置硬件

对于一个家庭服务器来说,你将需要一个中等容量的SD闪存卡作为本地存储。它可以使用一个USB引导,但那会占用两个宝贵的USB插槽之一。闪存卡不需要很大容量,但是速度越快越好。我选择了一个名牌SD卡,8GB容量和CLASS 10的速度等级。对于备份和存储多媒体文件,一个有USB连接插槽的硬盘驱动器是必须的。我选择一个1.5TB的硬盘和一个Calvary EN-CAHDD-D 2-bay USB 2.0硬盘连接基座。这个连接基座有个功能,在RAID-0模式中连接两个硬盘,总有一天会有用的。最后,RPi不带电源线,但可以用大多数智能手机充电器所用的5v微型USB。看看RPi是否挑剔电源,我为电源已换了三个不同的微型USB手机充电器。我在这周内尝试了每一个,在任何一个上都没有问题。

安装操作系统

安装RPi操作系统包括了许多方面的大量细节,但这里有一些家用特定服务器的安装提示,大致按需要的顺序讲述。

1)直接通过http://www.raspberrypi.org/downloads获取Raspbian "Wheezy"安装镜像,并复制到SD卡,用网站上已列出的步骤。

2)第一次引导RPi时,连接一个键盘、鼠标和显示器。在引导RPi之前别忘打开显示器,可以检测到正确的HDMI或混合输出端口。

3)RPi有一个很好的"raspi-config"屏幕,在第一次启动时你会看到。对于家庭服务器来说,以下选择将会有用:

  • expand\_rootfs:调整默认2GB OS镜像的大小,来填满闪存卡剩余的内存。
  • change\_pass:修改默认密码"raspberry",但是,越安全的密码越好。
  • 设置你的地点和时区。
  • memory\_split:给GPIU服务分配最少的内存(16M)尽可能为其他服务留下更多内存。
  • SSH:别忘开启SSH服务。
  • boot\_behaviour:关闭“启动至桌面(boot to desktop)”(再次为你的其他服务节省内存)。

完成后,你将在出现 pi@raspberrypi 提示符下。安装脚本可以在任何时间通过 sudo raspi-config 重新运行。

还有一些其他配置,然后操作系统就可以用了。

1)一个静态IP让一切变得更容易,切换eth0的网络设置:

   >> sudo nano -w /etc/network/interfaces  

更改eth0的那行 iface eth0 inet dhcp ,如下所示(根据你的家庭网络设置修改):

======/etc/network/interfaces======
...
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
...
======/etc/network/interfaces======

2)创建本地用户并加入到users组和sudo组:

>> sudo adduser YOURUSERIDHERE
>> sudo usermod -a -G users YOURUSERIDHERE
>> sudo usermod -a -G sudo YOURUSERIDHERE

3)更新系统确保所有的库是最新最好的:

>> sudo apt-get update; sudo apt-get upgrade

4)好了,准备重新启动吧!先关闭PI:

>> sudo /sbin/shutdown -h now

一旦关闭(注意RPi电路板上的绿色LED状态指示灯,可以知道什么时候完成关闭了),拔下显示器,键盘,鼠标和电源线。插入USB端口上的硬盘,然后插回电源重启RPi。

5)一旦RPi开启(这些绿色LED指示灯用来描述状态),你可以从远程网络上从任何其他机器ssh到RPi并完成所有的配置(更改以下命令里的IP为你的静态IP):

>> ssh [email protected]

祝贺你,有了一个可以工作的树莓派!

外设

第一件事是要连接外设。用dmesg来寻找你的存储设备,会发现——几乎可以肯定是/dev/sda。我喜欢使用自动挂载去挂载移动存储设备,这样更灵活,因为在启动时这些设备也许没有或者没准备好:

>> sudo apt-get install autofs
>> sudo nano -w /etc/auto.master 
======/etc/auto.master======
...
/misc /etc/auto.misc
...
======/etc/auto.master======

>> sudo nano -w /etc/auto.misc

注意,我的外部存储设备是ext4格式,如果需要话可以在下面更改:

======/etc/auto.misc======
...
storage -fstype=ext4:/dev/sda1
...
======/etc/auto.misc======
>> sudo /etc/init.d/autofs restart 
>> ls -lat /misc/storage 

可选的,创建一个符号链接的短路径:

>> ln -s /misc/storage /storage

备份仓库

在任何家庭服务器功能列表里面最重要的是提供坚如磐石的备份。对于RPi来说,这很简单而优美,在Linux中有丰富的网络共享选项:Samba/CIFS用于Windows机器,NFS用于基于UNIX的设备,并且甚至SFTP可以用于更多新的备份客户端,如deja-dup。由于RPi只有100MB以太网接口和USB上的存储设备,它没有非常快的传送速度。不过在另一方面,好的备份客户端是在后台自动运行的,所以你不会注意略微缓慢的传输速度。

我的家庭网络包括一台Windows 7电脑。对于它,我通过Samba在RPi's外部USB存储设备上导出一个备份目录。因为备份程序在Windows7基础版上不支持网络设备作为备份目标,我使用SyncBack Free去设置使其自动化,每日备份。

配置Samba是容易的。

1)安装samba和common-bin库(具有smbpasswd效用)

>> sudo apt-get install samba samba-common-bin

2)使用 smbpasswd 让你的本地ID能访问:

>> sudo smbpasswd -a YOURUSERIDHERE

3)编辑samba配置文件:

>> sudo nano -w /etc/samba/smb.conf

4)更改 workgroup = WORKGROUP 行以匹配你的Windows工作组名称。

5)注释掉或删除[homes]和[printers]共享。(打印机共享稍后将通过直接CUPS访问来完成。)

6)为Windows备份路径增加一个条目。这是我的示例,放置在该文件的底部:

======/etc/samba/smb.conf======
...
[win7pc] 
comment=Backup for windows PC
path=/storage/win7pc 
writeable=Yes 
create mask=0777 
directory mask=0777 
browsable=Yes 
public=Yes 
valid users=YOURUSERIDHERE
...
======/etc/samba/smb.conf======

7)重启Samba使你的编辑生效:

>> sudo /etc/init.d/samba restart

8)从Windows机器文件资源管理器通过映射一个网络设备测试连通。

对Linux设备来说,设置和使用deja-dup非常简单。它被默认安装在我的Fedora 18和Ubuntu 12.10上。包的名称是“deja-dup”,程序名简单的称为“Backup(备份)”。虽然RPi很容易支持NFS导出,我发现使用deja-dup的SSH选项更容易,更方便,在RPi上它不需要额外服务的支持。指定一个deja-dup加密密码是一个好主意,除非你不在意一旦丢失了存储器,别人就可以拿走全部数据:

>> sudo mkdir /storage/linuxlaptop
>> sudo chown -R YOURUSERIDHERE:YOURUSERIDHERE /storage/linuxlaptop

从linux客户端启动备份程序,选择“SSH”作为备份位置,输入RPi的IP地址和你创建的存储位置。首次备份会很慢,但是以后的运行将只发送增量变化,速度更快。

图2,Deja-dup客户端设置

多媒体服务器:DLNA

现在每个人的文件都已安全备份。让我们继续看些有趣的!一个DLNA服务器可以让你集中存储你的电影、音乐和图片。通过这个中心库,家中每一个屏幕的DLNA客户端都可以轻松重放此内容。

至少,这是一个宣称。事实是这样的,DNLA规格并不太确定一些重要的事情,如支持哪些格式或编码。每个客户端通常对于支持什么格式和服务器功能都有略微不同的想法。很多高功率的服务器也许能转码本地内容到移动设备支持的格式,但是在RPi上是不可能的,在即时转码上经常扰乱其他功能,如暂停,快进和倒带。一般情况下,高功率设备如PS3、Xbox和WD TV设备支持大多数格式,而无需任何转码。低端设备如智能TVs或Blu-ray播放器只支持更有限的编码列表。

对于RPi来说,最好的办法是支持你的主要的DLNA设备的标准编码,然后测试你的其他DLNA客户端。如果没有完美播放,在下一节的提示也许有帮助。在我的情况下,我的PlayStation 3充当DLNA客户端,PS3能够流畅播放经Handbrake制作后的.m4v文件。

对于RPi的DLNA服务器来说,Minidlna是个很好的选择。它已经在Raspbian发行版中,易于设置和使用最小服务资源运行:

>> sudo apt-get install minidlna
>> sudo nano  -w /etc/minidlna.conf

这是我/etc/minidlna.conf文件的相关部分:

...
# I found keeping video + audio in different paths helpful
media_dir=V,/storage/dlna/video 
media_dir=A,/storage/dlna/music 
...
presentation_url=http://192.168.1.10:8200/
... 
friendly_name=MyRPi
...
# Since I add new media infrequently, turning off 
# inotify keeps minidlna for polling for 
# content changes. It's simple enough to run 
# sudo /etc/init.d/minidlna force-reload
# when new content is added.
inotify=no

一旦完成编辑,重启minidlna以加载新配置:

>> sudo /etc/init.d/minidlna force-reload

Minidlna能够为你的设备支持的电影提供电影海报缩略图(像PS3)。这让我能够更方便地在几十个电影文件中滚屏查找我想要的那个电影。我发现每个电影一个目录是最兼容的文件布局,只包含影片文件和缩略图,图像命名为“Cover.jpg”。使用像"MovieName.m4v"和"MovieName.jpg"的格式在PS3上工作的很好,但它不太适合VLC(除非你能让VLC uPNP插件首先查找服务器的话)。

通过PS3,你可以通过转到在XMB栏上的"Video"测试连通性。当视频列表向下翻页时,你以前设置的"friendly\_name"应该是可见的,测试确保Minidlna是通过浏览器转到http://192.168.1.10:8200/。

非DLNA设备的多媒体

当你让DNLA与你的一些设备一起工作时,你可能会发现有些设备并不适合它,所以多媒体计划B是个好主意。Nginx网站服务器有一个MP4插件尝试在旧式的HTTP连接上改善流媒体传输,但是浏览器回放的性能差别很大,在一部电影里快进也一直不工作。看起来多媒体共享或非 DLNA 设备的最低共同特性是使用传统Samba共享的访客只读访问。

这是/etc/samba/smb.conf的部分示例:

[dlna] 
path=/storage/dlna 
read only=yes 
browsable=yes 
public=yes 

定义了共享设置后重启Samba( sudo /etc/init.d/samba restart ),你可以开始测试你的客户端。

我用一个混合的编码m4v视频文件测试了以下客户端:

  • Android 4.0.4手机:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Android 4.1.2平板电脑:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Linux设备:自动挂载://192.168.1.10/dlna,然后使用VLC或MPlayer。
  • Windows:挂载//192.168.1.10:/dlna,然后使用VLC。

所有设备都能几乎立即开始播放和快进没有延迟的情况。

打印服务器

RPi运行CUPS相当不错,所以它容易共享一个较旧的没有本地网络接口的打印机。

安装你的打印机所需的CUPS和任何软件包。我需要hplip-cups,因为我有一个HP喷墨打印机:

>>  sudo apt-get install cups hplip-cups

更新“Listen”行和增加 Allow @LOCAL 到位置指令,如下所示(你可以使用其他机器在你的LAN上去管理CUPS):

======/etc/cups/cupsd.conf======
#Listen localhost:631  #Comment this out
Listen 192.168.1.10:631 #Add this line
...
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to the admin pages... 
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to configuration files... 
  
  AuthType Default 
  Require user @SYSTEM 
  Order allow,deny 
  Allow @LOCAL 
 
======/etc/cups/cupsd.conf======

添加你的本地ID到lpadmin组就能管理CUPS:

>> sudo usermod -a -G lpadmin  YOURUSERIDHERE

重启CUPS:

>> sudo /etc/init.d/cups restart

然后转到http://192.168.1.10:631/并点击 "Adding Printers and Classes"去设置你的打印机。我的打印机是自动发现的USB设备,所以,我只需点击“share”就可以。同样访问https://192.168.1.10:631/admin,确保检查“Share printers connected to this system(共享连接至这个系统的打印机)”。

完成后,你可以用通常的方式设置你的客户端。当我输入主机名,我的Linux客户端就能够自动发现打印机,并选择正确的驱动程序。在我的Windows7的机器上,一旦我选择“Network Printer(网络打印机)”,我必须点击“The printer that I want isn't listed(我想要的打印机未列出)”,选择“Select a shared printer by name(通过名称选择共享的打印机)”,然后从CUPS网络接口输入URL:http://192.168.1.10:631/printers/HP\_J4500。

结论

用最少的额外的硬件和配置,树莓派是高效、简洁的家用服务器。它能够花最小的硬件费用来为你的家庭环境带来由Linux提供的广泛企业服务。


via: http://www.linuxjournal.com/content/raspberry-pi-perfect-home-server

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:Vito 校对:Caroline

Ubuntu 13.10已经发布,不过它的内核可不是最新的。当然坚持Ubuntu 13.10当前内核不是一件坏事。事实上。不特别建议升级超出你的Linux发行版的官方仓库测试过的特定版本。

但另一方面,如果你不害怕一再折腾Ubuntu,那么你可以试试升级到最新Ubuntu支持的Linux内核。你会发觉最新的内核总是有改善的、修补了漏洞和添加特性的.

所以,如果你的电脑有些运行不正常,那么更新Linux内核可能就能修复。但记住,当你升级时你也有可能导致系统崩溃。

如果你不再惧怕,和我一起永往直前吧,让我们开始升级Ubuntu Linux 内核到 3.11.6!!

首先,在你开始升级之前,请先备份你的数据,以防升级时出错无法恢复。小心行得万年船!!!

更多关于这个内核版本信息,阅读更改日志

当你一切准备就绪,运行下列命令来升级你的机器并删除包括比当前更旧的内核在内的旧软件包。

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove

然后,进到/tmp目录。

cd /tmp

接着,复制粘贴下列命令,按回车下载32位的Linux内核

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb

对于64位Linux内核版本,则复制粘贴下行。

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_amd64.deb

下载适合你的版本,运行下列命令,开始安装:

sudo dpkg -i *.deb

最后,运行下列命令升级Grub。

sudo update-grub2

就这样!重启你的电脑,完成升级!!

玩的开心!


via: http://www.liberiangeek.net/2013/10/upgrade-linux-kernel-3-11-6-ubuntu/

译者:Luoxcat 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

OK,我们还继续配置内核。还有更多功能等待着去配置。

下一个问题(Enable ELF core dumps (ELF\_CORE))询问的是内核是否可以生成内核转储文件。这会使内核变大4KB。所以我选择了"no"。

注意:内核转储文件(内存或者系统的转储)是程序崩溃前已记录的状态。内核转储是用来调试问题的。这个转储文件的格式是ELF(Executable and Linkable Format )。

下面可以启用PC扬声器(Enable PC-Speaker support (PCSPKR\_PLATFORM))。大多数计算机用户拥有并使用扬声器,所以这个启用它。

虽然下面的特性会增加内核的大小(Enable full-sized data structures for core (BASE\_FULL))(启用完全大小的内核数据结构),但性能也随之增加。所以我选择"yes"。

为了使内核可以运行基于glibc的程序,必须启用FUTEX(Enable futex support (FUTEX))。这个特性启用了快速用户空间互斥锁(Fast Userspace muTEXes)。

注意:glibc(GNU C Library)是由GNU实现的标准C库。

注意:FUTEX (fast userspace mutex)是用来防止两个线程访问同一个不能被多个线程使用的共享资源。

下一个问题(Enable eventpoll support (EPOLL))可以通过回答"no"来禁用epoll系统调用。然而,为了含有epoll系统调用,我选择了"yes"。epoll是一种I/O事件通知系统。

为了收到来自文件描述符的信号,我们启用signalfd系统调用(Enable signalfd() system call (SIGNALFD)。

如果启用这个特性(Enable timerfd() system call (TIMERFD)),它允许程序使用定时器事件获取文件描述符。

我们现在的配置必须启用eventfd系统调用(Enable eventfd() system call (EVENTFD))。它默认启用访问共享内存文件系统(Use full shmem filesystem (SHMEM)。共享内存文件系统是一种虚拟内存文件系统。

下一个问题是"Enable AIO support (AIO)"。这个特性启用了线程化程序使用的POSIX异步I/O。

注意:异步I/O用来处理输入/输出,它允许线程在传输完成前就完成处理。

如果你正在给一个嵌入式系统配置一个内核,那么问题“Embedded system (EMBEDDED)”可以选择"yes"。否则就像我一样选择"no"。

注意:嵌入式系统是运行在一个更大的电子系统的实时计算机。

现在,我们可以配置内核性能事件和计时器了。配置工具没有给开发者选择,直接启用了事件和计数器(Kernel performance events and counters (PERF\_EVENTS))(内核性能事件和计数器)。这是一个重要特性。

接下来,我们可以禁用另外一个调试特性(ebug: use vmalloc to back perf mmap() buffers (DEBUG\_PERF\_USE\_VMALLOC))。

如果启用了VM事件计数器,那么事件计数就会显示在/proc/vmstat(Enable VM event counters for /proc/vmstat (VM\_EVENT\_COUNTERS))。如果禁用了事件计数就不会显示,/proc/vmstat只会显示内存页计数。

为了更好地支持PCI芯片,(Enable PCI quirk workarounds (PCI\_QUIRKS))回答yes。这会启用对PCI芯片的怪异行为和bug的临时解决方案。

下面一个调试特性可以像我一样禁用掉(Enable SLUB debugging support (SLUB\_DEBUG))。这个特性会耗费很多空间并且会禁用用于调试内核的SLB sysfs。如果这个特性被禁用,那么/sys/slab就不会存在并且系统上也不再支持缓冲验证。

堆随机化是一个让利用堆漏洞更加困难的特性(Disable heap randomization (COMPAT\_BRK))。然而我们不应该去启用它,因为任何基于libc5的软件都无法工作在这个系统上!只有我们有特别的理由这么做或者如果你不会使用基于libc5的软件时才去启用它。我禁用了这个特性。当编译一个通用的内核时,开发这会希望禁用这个特性。

接下来必须选择一个SLAB分配器。SLAB分配器是一个没有碎片且有效率地将内核对象放置在内存中的内存管理系统。默认选择是"2"。

Choose SLAB allocator

  1. SLAB (SLAB)
  1. SLUB (Unqueued Allocator) (SLUB)
  1. SLOB (Simple Allocator) (SLOB)

choice[1-3?]: 2

为了支持扩展性能支持,(Profiling support (PROFILING))回答"yes"。

下一个问题让开发者选择是否启用OProfile系统。它可以禁用、启用或者添加为一个模块在需要时载入。我选择禁用这个特性。

Kprobes允许用户捕捉几乎任意的内核地址去启动一个回调函数。这是一个可以像我一样禁用的调试工具(Kprobes (KPROBES))。

这个优化特性可以启用(Optimize very unlikely/likely branches (JUMP\_LABEL))(优化非常近似/不近似的分支)。这使分支预判更加简单并可以减小开销。

配置工具启用了一个实验性特性"透明用户空间探针"(Transparent user-space probes (EXPERIMENTAL) (UPROBES))。不过不要担心,系统可以很好工作,并不是所有的实验性特性是不稳定或者坏的。

接下来,我们会被询问基于gcov的内核分析(Enable gcov-based kernel profiling (GCOV\_KERNEL))。这可以被禁用。

为了允许内核加载模块,需要启用可加载模块支持(Enable loadable module support (MODULES))。

内核一般只能加载有版本号的模块。如果想允许内核加载没有版本号的模块,就启用这个特性(Forced module loading (MODULE\_FORCE\_LOAD))(强制模块载入)。这么做是一个很糟糕的注意,所以我已经禁用了它,除非你有特定的需求需要这个特性。

如果启用了这个特性(Module unloading (MODULE\_UNLOAD)),Linux内核也能卸载模块,最好启用。如果内核判断你要卸载的模块不应该被卸载,那么用户则无法卸载模块。启用强制卸载也行,但是不建议(Forced module unloading (MODULE\_FORCE\_UNLOAD)。

为了使用不是为你的内核开发的或者并不适用你的版本号的模块,可以启用版本支持(Module versioning support (MODVERSIONS))。最好不要混用不同版本号的模块,所以我禁用了这个特性。

模块在它们的modinfo(模块信息)里有一个字段名为"srcverion"。这个字段允许开发者知道使用什么源码版本来编译模块。启用这个选项可以在编译模块的时候加入这个字段。这个并不必要,所以我禁用了它(Source checksum for all modules (MODULE\_SRCVERSION\_ALL))。如果启用了先前的选项,开发者可以将校验和加入到模块中(Source checksum for all modules (MODULE\_SRCVERSION\_ALL))。

为了启用模块签名验证(Module signature verification (MODULE\_SIG)),这个选项回答"yes"。因为这个并不必要,我选择了"no",否则内核在加载模块前会检查并验证签名。

为了启用块级支持(Enable the block layer (BLOCK)),像我一样选择"yes"。禁用这个将会使块设备无法使用并且无法启用某些文件系统。

下面,SG支持已经默认启用(Block layer SG support v4 (BLK\_DEV\_BSG))(块级SG支持V4版),并且辅助库也启用了(Block layer SG support v4 helper lib (BLK\_DEV\_BSGLIB))。

下面回答的问题是关于对块设备的数据完整性支持(Block layer data integrity support (BLK\_DEV\_INTEGRITY))。这个特性允许拥有更好的数据完整性来提供设备数据保护特性。许多设备不支持这个特性,所以我禁用了它。

如果启用了块级bio带宽限制(Block layer bio throttling support (BLK\_DEV\_THROTTLING))那就可以限制设备的IO速率。

为了启用外部分区方案的支持,这个问题就回答"yes"(Advanced partition selection (PARTITION\_ADVANCED))。我禁用了这个特性。

为了启用CSCAN(译注:循环扫描)和FIFO过期请求,那就启用最后期限IO调度器(Deadline I/O scheduler (IOSCHED\_DEADLINE))。

CFQ IO调度器在处理器之间平均地分配带宽。因此启用这个特性feature (CFQ I/O scheduler (IOSCHED\_CFQ))是个好主意。

下面,开发者可以启用或禁用CFQ组支持(CFQ Group Scheduling support (CFQ\_GROUP\_IOSCHED))。接下来,开发者可以选择默认的IO调度器,最好选择DEFAULT\_DEADLINE。

对于小于32位寻址的设备,下面的特性会分配16MB的寻址空间(DMA memory allocation support (ZONE\_DMA))。如果你不使用这些设备,那么这个是可以禁用的,所以我禁用了它。

对于有多个CPU的系统,最好启用SMP(Symmetric multi-processing support (SMP))。对于只有单个处理器的设备,内核会在禁用这个特性后执行得更快。我启用了这个特性。

对于支持x2apic的CPU,启用x2apic支持support (Support x2apic (X86\_X2APIC))。如果你的系统缺乏这个特性就像我一样禁用它。

接下来我们可以启用对那些缺乏合适的ACPI支持的旧式SMP系统的MPS表(Enable MPS table (X86\_MPPARSE))。一些拥有ACPI、DSDT、MADT支持的更新的系统不需要这个特性。我禁用了它。

下面的问题允许我们启用扩展x86平台的支持(Support for extended (non-PC) x86 platforms (X86\_EXTENDED\_PLATFORM))。只有在你需要一个通用内核或者内核运行在某个特定的需要扩展支持的处理器上时才启用它。我禁用了这个特性。

为了支持Intel低功耗子系统,就启用这个特性(Intel Low Power Subsystem Support (X86\_INTEL\_LPSS))。

单一深度WCHAN输出(Single-depth WCHAN output (SCHED\_OMIT\_FRAME\_POINTER))是用来计算电量(/proc//wchan),然而这会导致更多的功耗。

下面,我们启用虚拟客户系统支持(Paravirtualized guest support (PARAVIRT\_GUEST))。这允许一个Guest操作系统与主操作系统一起运行。我会禁用这个特性。

Memtest是一个在系统启动时检测内存的软件。Memtest可以配置为每次或者有时开机运行。Memtest并不必要,所以我禁用了它。

这里我们可以选择一个内核应该支持的处理器家族。我选择了5 – Generic-x86-64。这是一个64位的系统,x86是32系统。

下面我们能选择也支持x86(32位)处理器 (Supported processor vendors (PROCESSOR\_SELECT))。

为了发现机器异常,我们可以启用DMI扫描(Enable DMI scanning (DMI)),这可以检测异常。

要启用DMA访问系统上32位内存的3GB以上的内存,下一个问题(GART IOMMU support (GART\_IOMMU))我们回答"yes"。


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-3.4369/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本文为你提供了一个简单的小技巧,告诉你如何用你自己图片来替换登陆窗口的背景。Ubuntu的登陆窗口挺不错的,可能比大多数发行版的都要好,但是如果你想要使用一张你自己的图片,比如一张可以让你回忆起某个特定的地方或事情的图片,你就可以按照下面的步骤来更换上它。

有许多方法可以做到这一点,这篇博文介绍的只是其中一种。下面介绍的方法可以使用dconf-editor和lightdm用户身份来完成这样的效果。简单来说就是,切换到root用户,给予lightdm用户访问x-server的权限。然后使用lightdm用户身份,运行dconf-editor,然后做出修改。

在设置完自定义图片并且重启后,每次启动电脑时你就应该能看到你设置的图片。若设置的图片是一张你非常喜欢的并且能给你带给你很多回忆的图片,那么你每次启动电脑登陆到Ubuntu时一定非常开心。

这个手册假设你已经在你的电脑上安装了dconf-editor。若没有,你可以运行以下命令来安装dconf-editor

sudo apt-get install dconf-editor 

下一步,选择你要作为登陆背景的图片。然后,记下图片的位置以及图片的名字,运行以下命令切换到root用户。

sudo –i 

下一步,运行以下命令给予lightdm用户访问X-server的权限。Lightdm是一个管理登陆窗口背景的服务程序,因此假如你要更换登陆窗口的背景图片,你就要修改lightdm用户。

xhost +SI:localuser:lightdm 

下一步,运行以下命令切换到lightdm用户

su lightdm -s /bin/bash 

然后,运行以下命令开启dconf-editor

dconf-editor 

当工具打开后,浏览到 com->canonical->unity-greeter。然后改变背景值为自定义的图盘。你可能需要勾掉draw-grid。

重启电脑,尽情享受~


via: http://www.liberiangeek.net/2013/09/daily-ubuntu-tipschange-logon-screen-background/

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:Linux-pdz 校对:Caroline

有些时候你可能想要记录一个终端会话,也许是为了保存一个复杂的命令行操作为将来使用的参考,或者是为了知识分享。你可能也希望记录的文件尺寸尽可能的小一点,并且希望当播放记录文件时可以做一个快速回放。在这个文章中我们将讨论两个命令行工具( ttyrecttyplay )来让你记录、保存和播放终端会话。

ttyrec & ttyplay

看名字就知道ttyrec命令是用来记录终端会话的,ttyplay是用来播放ttyrec记录的会话的。

这里是这些工具的man截图:

> ttyrec

> ttyplay

测试环境

  • 系统 – Ubuntu 13.04
  • Shell – Bash 4.2.45
  • 应用 – ttyrec 1.0.8-5 & ttyplay 1.0.8-5

简明教程

下面告诉你怎么用这些命令来记录和播放一个终端会话。

步骤-1

开始记录一个终端会话,只需要运行下面的命令:

$ ttyrec [文件名] 

参数 [文件名] (上面显示的命令)是一个选项,可以指定你想要的任何名字。这个记录文件将会用这个名字保存下来。如果你没有指定一个文件名,ttyrec就会用 ttyrecord 作为缺省文件名。

步骤-2

当你想要记录的时候你就可以运行这个命令,就开始记录会话了。ttyrec命令甚至可以记录命令行类似vi,nano,emacs,lynx等这些命令行工具的会话。

步骤-3

到你想要结束终端会话的时候,只需要运行 exit 命令,这个会话记录就会结束。记录文件将会保存在当前文件夹下。

你可以运行下面的命令播放这个文件:

$ ttyplay [文件名] 

参数 [文件名] 就是记录文件名,就是上面通过 ttyrec 命令给定参数的那个名字。如果没有指定文件名,那么缺省文件名就是 ttyrecord

当你运行ttyplay,回放会话记录就会开始。这里给出一些当你回放会话的时候你可以用的快捷键。

  • ‘+’或‘f’键可以加速到两倍正常播放速度。
  • ‘-’或‘s’键可以减慢到一般正常播放速度。
  • ‘0’可以暂停。
  • ‘1’可以回到正常播放速度。

这有一些其它ttyrec和ttyplay命令支持的选项:

> ttyrec

ttyplay

还有另一个小工具 ttytime 可以用来显示用ttyrec工具会话记录的时间。很容易使用并且只需要记录文件名作为命令行参数。

举一个例子:

$ ttytime record_file
 29 record_file 

这样你就可以看到ttytime命令显示会话记录文件record\_file的时间。

这有一个ttyrec和ttyplay命令的很有用的视频:

下载/安装/配置

这有一些关于这些工具的重要的链接:

你可以使用任何命令行下载管理器比如apt-get或者yum来下载ttyrec,ttyplay和ttytime。Ubuntu用户也可以通过Ubuntu软件中心下载安装这些工具。

优点

  • 轻量级并且易用
  • 可以记录多种流行的命令行工具比如vi,nano,lynx等
  • 没有学习曲线。

缺点

  • 不能在IRIX6.4下工作(译注:这还算事吗?)
  • 依赖终端尺寸
  • 大多数Linux发行版没有预装。

结论

如果你正在找一些Linux轻量级命令行工具用来记录播放终端会话,那么ttyrec和ttyplay是理想的工具。我真的喜欢使用它们带来的轻松。试一下这些工具,你不会失望的。

你使用过ttyrec,ttyplay或者其它的终端记录/播放 工具?分享你的经历给我们吧。


via: http://mylinuxbook.com/ttyrec-ttyplay-record-and-play-terminal-sessions-in-linux/

译者:flsf 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通过/proc或者常规命令比如top或ps得到它。

语法或用法

#pmap PID 

或者

#pmap [options] PID 

在输出中它显示全部的地址,kbytes,mode还有mapping。

选项

  • -x extended显示扩展格式
  • -d device显示设备格式
  • -q quiet不显示header/footer行
  • -V 显示版本信息

单一进程内存状态

[root@info ~]# pmap 1013


1013: /usr/sbin/sshd
00110000 1480K r-x- /usr/lib/libcrypto.so.1.0.0
00282000 80K rw-- /usr/lib/libcrypto.so.1.0.0
00296000 12K rw-- [ anon ]
00299000 36K r-x- /lib/libkrb5support.so.0.1
002a2000 4K rw-- /lib/libkrb5support.so.0.1
002a3000 16K r-x- /lib/libplc4.so
002a7000 4K rw-- /lib/libplc4.so
002ab000 88K r-x- /lib/libaudit.so.1.0.0
002c1000 4K r-- /lib/libaudit.so.1.0.0
002c2000 4K rw-- /lib/libaudit.so.1.0.0
002c3000 216K r-x- /lib/libgssapi_krb5.so.2.2
002f9000 4K rw-- /lib/libgssapi_krb5.so.2.2
002fa000 808K r-x- /lib/libkrb5.so.3.3
003c4000 24K rw-- /lib/libkrb5.so.3.3
003ca000 152K r-x- /lib/libk5crypto.so.3.1
003f0000 4K rw-- /lib/libk5crypto.so.3.1
003f1000 92K r-x- /usr/lib/libnssutil3.so
00738000 4K r--- /lib/libresolv-2.12.so
00739000 4K rw-- /lib/libresolv-2.12.so
0073a000 8K rw-- [ anon ]
00825000 120K r-x- /lib/ld-2.12.so
00843000 4K r--- /lib/ld-2.12.so
00844000 4K rw-- /lib/ld-2.12.so
0090d000 32K r-x- /lib/libwrap.so.0.7.6
00915000 4K rw-- /lib/libwrap.so.0.7.6
00948000 484K r-x- /usr/sbin/sshd
009c1000 8K rw-- /usr/sbin/sshd
009c3000 20K rw-- [ anon ]
009e0000 92K r-x- /lib/libpthread-2.12.so
009f7000 4K r--- /lib/libpthread-2.12.so

total 8232K

多进程内存状态

我们可以检查多进程内存通过插入多个PID。加入多个PID中间使用空格分隔。

pmap 1013 1217 1118 

扩展进程内存

[root@info ~]# pmap -x 1013
1013: /usr/sbin/sshd
Address Kbytes RSS Dirty Mode Mapping
00110000 1480 92 0 r-x- libcrypto.so.1.0.0
00282000 80 80 80 rw-- libcrypto.so.1.0.0
00296000 12 8 4 rw-- [ anon ]
00299000 36 0 0 r-x- libkrb5support.so.0.1
002a2000 4 4 4 rw-- libkrb5support.so.0.1
002a3000 16 0 0 r-x- libplc4.so
002a7000 4 4 4 rw-- libplc4.so
002ab000 88 4 0 r-x- libaudit.so.1.0.0
002c1000 4 4 4 r--- libaudit.so.1.0.0
002c2000 4 4 4 rw-- libaudit.so.1.0.0
002c3000 216 4 0 r-x- libgssapi_krb5.so.2.2
002f9000 4 4 4 rw-- libgssapi_krb5.so.2.2
002fa000 808 4 0 r-x- libkrb5.so.3.3
003c4000 24 24 24 rw-- libkrb5.so.3.3
003ca000 152 4 0 r-x- libk5crypto.so.3.1
003f0000 4 4 4 rw-- libk5crypto.so.3.1
003f1000 92 0 0 r-x- libnssutil3.so
00408000 12 12 12 rw-- libnssutil3.so
0040b000 12 0 0 r-x- libplds4.so
0040e000 4 4 4 rw-- libplds4.so

--- --- --- --- ---
total kB 8232 - - -

这里的Address,Kbyte,Dirty,RSS,mode还有mapping的说明如下

扩展和设备格式区域

  • Address: 内存开始地址
  • Kbytes: 占用内存的字节数(KB)
  • RSS: 保留内存的字节数(KB)
  • Dirty: 脏页的字节数(包括共享和私有的)(KB)
  • Mode: 内存的权限:read、write、execute、shared、private (写时复制)
  • Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
  • Offset: 文件偏移
  • Device: 设备名 (major:minor)

via: http://linoxide.com/linux-command/pmap-command/

译者:flsf 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出