2013年5月15日 星期三

less 彩色

ess 可以高亮显示某些东西,但不是彩色的。而vim实际上有macros支持使它象less一些被支持。设置方式很简单:
方法1:
可以在.bashrc里加一个alias:
alias vless='vim -u /usr/share/vim/vim62/macros/less.vim'
其中vim62是当前vim的版本号,直接ls到/usr/share/vim里查看一下就可以了。
然后执行. .bashrc 或重新登录就可以使用vless了,简单吧
 
 
 
方法2:
在less.vim里面还有一个less.sh,实现了相同的功能,可以这样做个link来实现相同的功能
ln -s /usr/share/vim/vim62/macros/less.sh ~/bin/vless
还有一个TIPS:
在less 的时候按v键,可以调用$EDITOR变量指定的编辑器,vless则直接调用vi的编辑模式

2013年4月10日 星期三

[轉]uboot 详细注释讲解

大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。
1、Stage1 start.S代码结构
u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:
(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。
(2)设置异常向量(Exception Vector)。
(3)设置CPU的速度、时钟频率及终端控制寄存器。
(4)初始化内存控制器。
(5)将ROM中的程序复制到RAM中。
(6)初始化堆栈。
(7)转到RAM中执行,该工作可使用指令ldr pc来完成。
2、Stage2 C语言代码部分
lib_arm/board.c中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数只要完成如下操作:
(1)调用一系列的初始化函数。
(2)初始化Flash设备。
(3)初始化系统内存分配函数。
(4)如果目标系统拥有NAND设备,则初始化NAND设备。
(5)如果目标系统有显示设备,则初始化该类设备。
(6)初始化相关网络设备,填写IP、MAC地址等。
(7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。
3、U-Boot的启动顺序(示例,其他u-boot版本类似)
cpu/arm920t/start.S



@文件包含处理



#include <config .h="">
@由顶层的mkconfig生成,其中只包含了一个文件:configs/&lt;顶层makefile中6个参数的第1个参数&gt;.h
#include <version .h="">
#include <status_led .h="">



/*
 *************************************************************************
 *
 * Jump vector table as in table 3.1 in [1]
 *
 *************************************************************************
 */

注:ARM微处理器支持字节(8位)、半字(16位)、字(32位)3种数据类型
@向量跳转表,每条占四个字节(一个字),地址范围为0x0000 0000~@0x0000 0020
@ARM体系结构规定在上电复位后的起始位置,必须有8条连续的跳

@转指令,通过硬件实现。他们就是异常向量表。ARM在上电复位后,@是从0x00000000开始启动的,其实如果bootloader存在,在执行

@下面第一条指令后,就无条件跳转到start_code,下面一部分并没@执行。设置异常向量表的作用是识别bootloader。以后系统每当有@异常出现,则CPU会根据异常号,从内存的0x00000000处开始查表@做相应的处理

/******************************************************

;当一个异常出现以后,ARM会自动执行以下几个步骤:
;1.把下一条指令的地址放到连接寄存器LR(通常是R14).---保存位置
;2.将相应的CPSR(当前程序状态寄存器)复制到SPSR(备份的程序状态寄存器)中---保存CPSR
;3.根据异常类型,强制设置CPSR的运行模式位
;4.强制PC(程序计数器)从相关异常向量地址取出下一条指令执行,从而跳转到相应的异常处理程序中
*********************************************************/





.globl _start  /*系统复位位置,整个程序入口*/
@_start是GNU汇编器的默认入口标签,.globl将_start声明为外部程序可访问的标签,.globl是GNU汇编的保留关键字,前面加点是GNU汇编的语法
_start: b       start_code   @0x00
@ARM上电后执行的第一条指令,也即复位向量,跳转到start_code

@reset用b,就是因为reset在MMU建立前后都有可能发生
@其他的异常只有在MMU建立之后才会发生
 ldr pc, _undefined_instruction /*未定义指令异常,0x04*/
   ldr pc, _software_interrupt   /*软中断异常,0x08*/
   ldr pc, _prefetch_abort    /*内存操作异常,0x0c*/
   ldr pc, _data_abort     /*数据异常,0x10*/
   ldr pc, _not_used     /*未适用,0x14*/
   ldr pc, _irq      /*慢速中断异常,0x18*/
   ldr pc, _fiq      /*快速中断异常,0x1c*/

@对于ARM数据从内存到CPU之间的移动只能通过L/S指令,如:ldr r0,0x12345678为把0x12345678内存中的数据写到r0中,还有一个就是ldr伪指令,如:ldr r0,=0x12345678为把0x12345678地址写到r0中,mov只能完成寄存器间数据的移动,而且立即数长度限制在8位



_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort:  .word data_abort
_not_used:  .word not_used
_irq:   .word irq
_fiq:   .word fiq
@.word为GNU ARM汇编特有的伪操作,为分配一段字内存单元(分配的单元为字对齐的),可以使用.word把标志符作为常量使用。如_fiq:.word fiq即把fiq存入内存变量_fiq中,也即是把fiq放到地址_fiq中。



 .balignl 16,0xdeadbeef
@.balignl是.balign的变体

@ .align伪操作用于表示对齐方式:通过添加填充字节使当前位置

@满足一定的对齐方式。.balign的作用同.align。
@ .align {alignment} {,fill} {,max}
@  其中:alignment用于指定对齐方式,可能的取值为2的次

@幂,缺省为4。fill是填充内容,缺省用0填充。max是填充字节@数最大值,如果填充字节数超过max,  就不进行对齐,例如:
@  .align 4  /* 指定对齐方式为字对齐 */

【参考好野人的窝,于关u-boot中的.balignl 16,0xdeadbeef的理解http://haoyeren.blog.sohu.com/84511571.html】







/*
 *************************************************************************
 *
 * Startup Code (called from the ARM reset exception vector)
 *
 * do important init only if we don't start from memory!
 * relocate armboot to ram
 * setup stack
 * jump to second stage
 *
 *************************************************************************

@保存变量的数据区,保存一些全局变量,用于BOOT程序从FLASH拷贝@到RAM,或者其它的使用。
@还有一些变量的长度是通过连接脚本里得到,实际上由编译器算出

@来的

_TEXT_BASE:

@因为linux开始地址是0x30000000,我这里是64M SDRAM,所以@TEXT_BASE = 0x33F80000 ???
 .word TEXT_BASE /*uboot映像在SDRAM中的重定位地址*/
@TEXT_BASE在开发板相关的目录中的config.mk文档中定义, 他定

@义了代码在运行时所在的地址, 那么_TEXT_BASE中保存了这个地

@址(这个TEXT_BASE怎么来的还不清楚)





.globl _armboot_start
_armboot_start:
 .word _start
@用_start来初始化_armboot_start。(为什么要这么定义一下还不明白)





/*
 * These are defined in the board-specific linker script.
 */
@下面这些是定义在开发板目录链接脚本中的



.globl _bss_start  
_bss_start:
 .word __bss_start
@__bss_start定义在和开发板相关的u-boot.lds中,_bss_start保存的是__bss_start标号所在的地址。



.globl _bss_end
_bss_end:
 .word _end
@同上,这样赋值是因为代码所在地址非编译时的地址,直接取得该标号对应地址。



@中断的堆栈设置



#ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START
IRQ_STACK_START:
 .word 0x0badc0de



/* IRQ stack memory (calculated at run-time) */
.globl FIQ_STACK_START
FIQ_STACK_START:
 .word 0x0badc0de
#endif




/*
 * the actual start code
 */
@复位后执行程序
@真正的初始化从这里开始了。其实在CPU一上电以后就是跳到这里执行的
reset:
 /*
  * set the cpu to SVC32 mode
  */
@更改处理器模式为管理模式
@对状态寄存器的修改要按照:读出-修改-写回的顺序来执行
@
    31 30 29 28 ---   7   6   -   4    3   2   1   0
    N  Z  C  V        I   F       M4  M3  M2 M1 M0
                                   0   0   0  0   0     User26 模式
                                   0   0   0  0   1     FIQ26 模式
                                   0   0   0  1   0     IRQ26 模式
                                   0   0   0  1   1     SVC26 模式
                                   1   0   0  0   0     User 模式
                                   1   0   0  0   1     FIQ 模式
                                   1   0   0  1   0     IRQ 模式
                                   1   0   0  1   1     SVC 模式
                                   1   0   1  1   1     ABT 模式
                                   1   1   0  1   1     UND 模式
                                   1   1   1  1   1     SYS 模式



 mrs r0,cpsr
@将cpsr的值读到r0中
 bic r0,r0,#0x1f
@清除M0~M4
 orr r0,r0,#0xd3
@禁止IRQ,FIQ中断,并将处理器置于管理模式
 msr cpsr,r0



@以下是点灯了,这里应该会牵涉到硬件设置,移植的时候应该可以不要
 bl coloured_LED_init
 bl red_LED_on



@针对AT91RM9200进行特殊处理
#if defined(CONFIG_AT91RM9200DK) || defined(CONFIG_AT91RM9200EK)
 /*
  * relocate exception table
  */
 ldr r0, =_start
 ldr r1, =0x0
 mov r2, #16
copyex:
 subs r2, r2, #1
@sub带上了s用来更改进位标志,对于sub来说,若发生借位则C标志置0,没有则为1,这跟adds指令相反!要注意。
 ldr r3, [r0], #4
 str r3, [r1], #4
 bne copyex
#endif



@针对S3C2400和S3C2410进行特殊处理
@CONFIG_S3C2400、CONFIG_S3C2410等定义在include/configs/下不同开发板的头文件中
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
 /* turn off the watchdog */



@关闭看门狗定时器的自动复位功能并屏蔽所有中断,上电后看门狗为开,中断为关
# if defined(CONFIG_S3C2400)
#  define pWTCON  0x15300000
#  define INTMSK  0x14400008 /* Interupt-Controller base addresses */
#  define CLKDIVN 0x14800014 /* clock divisor register */
#else @s3c2410的配置
#  define pWTCON  0x53000000
@pWTCON定义为看门狗控制寄存器的地址(s3c2410和s3c2440相同)
#  define INTMSK  0x4A000008 /* Interupt-Controller base addresses */
@INTMSK定义为主中断屏蔽寄存器的地址(s3c2410和s3c2440相同)
#  define INTSUBMSK  0x4A00001C
@INTSUBMSK定义为副中断屏蔽寄存器的地址(s3c2410和s3c2440相同)
#  define CLKDIVN  0x4C000014 /* clock divisor register */
@CLKDIVN定义为时钟分频控制寄存器的地址(s3c2410和s3c2440相同)
# endif
@至此寄存器地址设置完毕



 ldr     r0, =pWTCON
 mov     r1, #0x0
 str     r1, [r0]
@对于S3C2440和S3C2410的WTCON寄存器的[0]控制允许或禁止看门狗定时器的复位输出功能,设置为“0”禁止复位功能。



 /*
  * mask all IRQs by setting all bits in the INTMR - default
  */
 mov r1, #0xffffffff
 ldr r0, =INTMSK
 str r1, [r0]
# if defined(CONFIG_S3C2410)
 ldr r1, =0x3ff  @2410好像应该为7ff才对(不理解uboot为何是这个数字)
 ldr r0, =INTSUBMSK
 str r1, [r0]
# endif
@对于S3C2410的INTMSK寄存器的32位和INTSUBMSK寄存器的低11位每一位对应一个中断,相应位置“1”为不响应相应的中断。对于S3C2440的INTSUBMSK有15位可用,所以应该为0x7fff了。



 /* FCLK:HCLK:PCLK = 1:2:4 */
 /* default FCLK is 120 MHz ! */
 ldr r0, =CLKDIVN
 mov r1, #3
 str r1, [r0]
@时钟分频设置,FCLK为核心提供时钟,HCLK为AHB(ARM920T,内存@控制器,中断控制器,LCD控制器,DMA和主USB模块)提供时钟,@PCLK为APB(看门狗、IIS、I2C、PWM、MMC、ADC、UART、GPIO、@RTC、SPI)提供时钟。分频数一般选择1:4:8,所以HDIVN=2,PDIVN=1,@CLKDIVN=5,这里仅仅是配置了分频寄存器,关于MPLLCON的配置肯@定写在lowlevel_init.S中了
@归纳出CLKDIVN的值跟分频的关系:
@0x0 = 1:1:1  ,  0x1 = 1:1:2 , 0x2 = 1:2:2  ,  0x3 = 1:2:4,  0x4 = 1:4:4,  0x5 = 1:4:8, 0x6 = 1:3:3,
0x7 = 1:3:6
@S3C2440的输出时钟计算式为:Mpll=(2*m*Fin)/(p*2^s)
S3C2410的输出时钟计算式为:Mpll=(m*Fin)/(p*2^s)
m=M(the value for divider M)+8;p=P(the value for divider P)+2
M,P,S的选择根据datasheet中PLL VALUE SELECTION TABLE表格进行,

我的开发板晶振为16.9344M,所以输出频率选为:399.65M的话M=0x6e,P=3,S=1
@s3c2440增加了摄像头,其FCLK、HCLK、PCLK的分频数还受到CAMDIVN[9](默认为0),CAMDIVN[8](默认为0)的影响
#endif /* CONFIG_S3C2400 || CONFIG_S3C2410 */



 /*
  * we do sys-critical inits only at reboot,
  * not when booting from ram!
  */
@选择是否初始化CPU
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 bl cpu_init_crit
@执行CPU初始化,BL完成跳转的同时会把后面紧跟的一条指令地址保存到连接寄存器LR(R14)中。以使子程序执行完后正常返回。
#endif



@调试阶段的代码是直接在RAM中运行的,而最后需要把这些代码 @固化到Flash中,因此U-Boot需要自己从Flash转移到
@RAM中运行,这也是重定向的目的所在。
@通过adr指令得到当前代码的地址信息:如果U-boot是从RAM @开始运行,则从adr,r0,_start得到的地址信息为
@r0=_start=_TEXT_BASE=TEXT_BASE=0x33F80000; @如果U-boot从Flash开始运行,即从处理器对应的地址运行,
@则r0=0x0000,这时将会执行copy_loop标识的那段代码了。
@ _TEXT_BASE 定义在board/smdk2410/config.mk中

#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate:    /* relocate U-Boot to RAM     */
 adr r0, _start  /* r0 </status_led></version></config>

2013年3月7日 星期四

vim 多行註解

1. vim加上多行註解的步驟: (1) 將游標移到要開始註解的那一列。 (2) 按下ESC、然後按下Ctrl + V ,切換成區塊選取的模式(就是反白啦)。 (3) 將游標向下移到要加上註解的最後一列,此時你可以發現這幾列都被反白了。 (4) 按下大寫I,游標跑回步驟(2)的那一列了,這時就可以直接輸入要用的註解了,假設輸入'//'。 (5) 按下ESC,大功告成。 (6) 千萬不要忘記步驟(5)。 2. vim 取消多行註解的步驟: (1) 方法和加上多行註解一樣,先將游標移到開始註解的那一列。 (2) 按下ESC、然後按下Ctrl + V ,切換成區塊選取的模式。 (3) 將游標向下移到要加上註解的最後一列,再按左、右的方向鍵,將要delete掉的註解都反白。 (4) 按下delete,大功告成。 其實vim中,Ctrl + V的區塊模式還有很多有趣的功能可以摸索。 其他進階功能,可以參考Vim的官方網站。

2012年12月2日 星期日

Windows 2008 AD


http://f12.wretch.yimg.com/jerry0822/1/1609812844.jpg?gCOCAHhDdxOTUXIIGIu1bdcf8fbyVaWr7Z87BpX3sGI4Xlwdh_eZaKOT

Windows Server 2008安裝Active Directory的方式跟以往不太一樣,Windows Server 2008預設元件都不會安裝,都要手動先把元件安裝起來,再去建立Active Directory,下面是我安裝的過程,大家可以做做參考,有問題在留言給我。


Active Director新增角色 
1.
先打開伺服器管理員--->角色---->新增角色
http://f12.wretch.yimg.com/jerry0822/30/1511201100.jpg?dszBtlNDdxMl1NW5ubE_8q4Zqz8YRtn5POaoW_PUT4og2ni1IADfaIFmMw--
 2.開始前確認 
http://f12.wretch.yimg.com/jerry0822/30/1511201101.jpg?dSdTpQtDdxPEwPlfwlnNFzxXHPo4HClmIkIm6_ygPZxv_m4QEd_.5rR4Kw--

3.
請選擇 Active Directory網域服務 
http://f12.wretch.yimg.com/jerry0822/30/1511201102.jpg?7Y76m39DdxOA8eol.O8VjRB9aaLoExEzOmUtaly0iPXpbEFNSrCphnQceg--

4.Active Directory
網域服務簡介 
http://f12.wretch.yimg.com/jerry0822/30/1511201103.jpg?zzd9gnVDdxPD4qXrpTH4kwSmaO_B7Kqgemd6LtlnhdSz9x_a2x0bNqunDA--

5.
確認所安裝的角色
http://f12.wretch.yimg.com/jerry0822/30/1511201104.jpg?cUx2ERdDdxPawf1bexEb8lPo_Z1hP0eTHToJaMbhNM2OpigPjjHrvxNbmw--

6.
安裝角色中
 
http://f12.wretch.yimg.com/jerry0822/30/1511201105.jpg?8dysK1tDdxMlNKorCRODqLmm2rZvjtoznWFozI11hhXkonPNUYdkmwg9Dw--

7.
安裝角色成功,如果要馬上建立Active Directory請點 關閉此精靈,然後啟動Active Directory網域服務安裝精靈(dcpromo.exe) 
http://f12.wretch.yimg.com/jerry0822/30/1511201106.jpg?3J3RwsVDdxM_1szMf5M1dsHMgUsl5.WHTusGLFxt4yrt0HckmI3cewJE0w--


建立Active Directory 

1.
 建立Active Directory網域開始方法有兩種
第一種在CMD底下打
dcpromo /adv
http://f12.wretch.yimg.com/jerry0822/31/1111950210.jpg?hiHOCFZDdxM6rjlbhvRNOysrw9affZs6cb2NRnb_otmFfUYqnrSHcbiR3g--

第二種在伺服器管理員裡--->Active Directory網路服務選擇請執行Active Directory網域服務安裝精靈(dcpromo.exe)
 http://f12.wretch.yimg.com/jerry0822/31/1111950211.jpg?GhEKpkJDdxPQB91.xG2GX6Csak9eb70zU6_sspHhHPAqh_toNY2YBW6HDw--

2.
開始起始畫面,選擇進階安裝 
http://f12.wretch.yimg.com/jerry0822/31/1111950232.jpg?F3RHykFDdxPTGckOiMNrSq78AVhwPGdaSHk.tzTQr2pacKPXzfPj1qa0oA--

3.
 進階選項說明
http://f12.wretch.yimg.com/jerry0822/31/1111950212.jpg?kfxcyOJDdxNY99A.zx2_D30eRU7EhXDo0SMLVQOSQMSxU8eGTc3ZRkmyTw--
4.
作業系統相容性提醒
http://f12.wretch.yimg.com/jerry0822/31/1111950213.jpg?KySUnWVDdxOUwORgiShC5fO4kd44in91uHBbagQmptEuioWGtwa_Q_BEWw--

5.
在新樹系內建立新網域(此機器為新機,無任何相關網域)
http://f12.wretch.yimg.com/jerry0822/31/1111950214.jpg?Zx4sbnVDdxPMGURL3Wv9tqOtx.G5stb_WT8n302FVOfau5VLAHmdfGqG2w--

6.
輸入你要的網域名稱FQDN
EX
microsoft.org.tw
microsoft
  ---->網域名稱
org
        ---->單位類型 EXcomorggov
tw
         ---->地區簡稱 EX:台灣tw,中國cn,日本jp
http://f12.wretch.yimg.com/jerry0822/31/1111950234.jpg?evDGqUNDdxNAa.0pyxXYD6mp1diBzrudM8qm5Mj_i5eK4m8WOJkbouHCyg--

7.
確認分析中
http://f12.wretch.yimg.com/jerry0822/31/1111950235.jpg?GsWg0n5DdxM86fWWJc0yVTVlo88oMDsLluAvsxenHedvCoq.glRu47N.Cw--

8.
自動產生網域NetBIOS名稱,如有衝突會自動修改
http://f12.wretch.yimg.com/jerry0822/31/1111950236.jpg?Ois2ml9DdxOT_8VP8GPnqmqMkIBUEz311dNtyaD_QLQnfH2WF_ruReXxlw--

9.
選擇樹系等級,有Windows 2000Windows 2003Windows 2008
請確認網域內Active Directory主機有哪些
Windows 2000
:相容Windows 2000Windows 2003Windows 2008
Windows 2003
:只相容Windows 2003Windows 2008,不相容Windows 2000
Windows 2008
:只相容Windows 2008,不相容Windows 2000Windows 2003
(
安裝完成後皆可在修改)
http://f12.wretch.yimg.com/jerry0822/31/1111950237.jpg?brRBwGNDdxO_I754BfufaSPqevlKwFYc8rXlKhL0LT.iUpDChVnARjIV9w--


10.
選擇功能等級,有Windows 2000Windows 2003Windows 2008
請確認網域內Active Directory主機有哪些
Windows 2000
:相容Windows 2000Windows 2003Windows 2008
Windows 2003
:只相容Windows 2003Windows 2008,不相容Windows 2000
Windows 2008
:只相容Windows 2008,不相容Windows 2000Windows 2003
(
安裝完成後皆可在修改)
http://f12.wretch.yimg.com/jerry0822/31/1111950238.jpg?K5vlTKlDdxNQLX39mRpe7ptqCQsVz5lrgkvHcdXEJ3ArAs98W1OroLgZDA--


11.
勾選DNS伺服器(新機即要安裝,如果有其他可用DNS可選擇不要安裝)
http://f12.wretch.yimg.com/jerry0822/31/1111950239.jpg?sqQ3VrxDdxNBP.rhHpnNVhiJkQueK_zcy0D3u.LFQ7OqqgroqgiwHCj6Kw--


12.
設定Active Directory 網域IP
Active Directory
Windows Server 2008以前的版本必需要設定固定IP,否則不可安裝
Windows Server 2008
動態IP也是可以安裝,建議設定固定IP,以免出現不必要的麻煩
http://f12.wretch.yimg.com/jerry0822/31/1111950240.jpg?cakuzipDdxMdmsPNMb6e8HWELp0EMMxplbqiULL62RVkQKnZEe5MtQlYkg--



13.Active Directory
安裝目錄預設位置,建議存放到其他的磁碟
http://f12.wretch.yimg.com/jerry0822/31/1111950241.jpg?dZp6ImFDdxOc3S.SOEPkfrf3jifG8nhaz.9fjgTgBhDXyHgOKJknSi6DBA--


14.
設定還原密碼(假設以後要從Active Directory降為工作站)
http://f12.wretch.yimg.com/jerry0822/31/1111950242.jpg?xXKha_dDdxP9Mzm2DAQmRLU_jjm7CRAAllIumKeEjHMSdZ5qix9cwF0lEw--



15.
設定完成確認,可匯出設定以便參考
http://f12.wretch.yimg.com/jerry0822/31/1111950243.jpg?FSqPujxDdxO6jPOg3wu0hLvwJe9zj_xN_s6DQO1OTlCyIb0E0.hZPDmk3w--

16.
選擇Active Directory匯出設定存放位置
http://f12.wretch.yimg.com/jerry0822/31/1111950244.jpg?kXtxyH1DdxPpknmGG5h4jaO7N2VxEryoLXjNadhYIGbKCr1I4DNn5Pf0Rg--

17.
匯出成功
http://f12.wretch.yimg.com/jerry0822/31/1111950245.jpg?xutRL0tDdxOgJzdFKbEHyRxMKzvAHqeVE57S5qRqYSSWlYAqNVArkF0xvQ--
Active Directory
匯出內容
http://f12.wretch.yimg.com/jerry0822/31/1111950231.jpg?ZNafmURDdxNgXujNH2R4p7sEoo.5JsDySy0L9bmzQwz3m_FO_Z5sIkElAQ--

18.
安裝中
http://f12.wretch.yimg.com/jerry0822/31/1111950246.jpg?jx44ATpDdxPe9qN_L_yHU16wKcQLs1zXws2YddST8JPooWSc1TxdLzRyig--


19.
完成安裝
http://f12.wretch.yimg.com/jerry0822/31/1111950247.jpg?DkDTPURDdxNtolGOKBshBuDCKZ.WMjeJCp6vGmyDHcr6i4Y1asSmy8p_qQ--

20.
安裝完畢必須重開機才會生效
http://f12.wretch.yimg.com/jerry0822/31/1111950248.jpg?zsdDLi1DdxMFEX0wW3HvtKEX5fVB8NBECDL9vTTgHE_1VFI7_KXvhpbWkw--


21.
在伺服器管理員如下圖代表Active DirectoryDNS安裝完成
http://f12.wretch.yimg.com/jerry0822/31/1111950249.jpg?OCxoWCZDdxPwLhkeD5mWiyHv4N58FhNZuOAItWgTg.iUlpvQFaHCBztvag--
1推薦此文章

2012年9月3日 星期一

[轉]Samba

內容

[Samba] 為啟動 SMB/CIFS (Server Message Block/Common Internet File System) 網路協定使 Microsoft Windows 機器能透過此一網路協定來存取 [Samba] Server 上所分享的檔案系統資源 (ex. 檔案、印表機...等)。
對於不同作業系統之間如何進行檔案系統資源的分享,簡述如下:
  • 網路上的芳鄰: Microsoft Windows 機器間用來互相分享檔案系統資源 (Windows <--> Windows)
  • [NFS][Unix-Like] 間用來互相分享檔案系統資源的協定 (Unix-Like <--> Unix-Like)
  • [Samba][Unix-Like] 用來分享檔案系統資源給 Windows 機器存取的協定 (CentOS <-- Windows)

實作環境

  • CentOS 5.1 (Linux 2.6.18-53.1.4.el5)
  • samba-3.0.33-3.7.el5
  • Windows XP Professional

安裝及設定

本次實作將分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。

Samba Server

步驟1.安裝 samba 套件

利用 yum 指令來安裝 samba 套件
 #yum -y install samba                            //安裝 samba 套件

步驟2.修改 samba 設定檔 (smb.conf)

修改 samba 設定檔 (smb.conf) 內容如下
 #vi /etc/samba/smb.conf                          //修改 samba 設定檔
 [global]                                         //通用設定
 netbios name = Weithenn-smb                      //顯示於 Windows 網路芳鄰的電腦名稱
 workgroup = WORKGROUP                            //顯示於 Windows 網路芳鄰的工作群組名稱
 hosts allow = 127. 192.168.1.18                  //僅允許此來源 IP 位址可存取 Samba 資源 (也可設定允許 IP 網段 ex. 192.168.1.0/255.255.255.0)
 hosts deny = ALL                                 //除了上面允許的 IP 之外禁止其它 IP 存取 Samba 資源
 security = user                                  //安全等級為 user,也就是在 Samba 主機上擁有帳號者才可登入
 encrypt passwords = yes                          //是否對密碼部份進行加密
 display charset = utf8                           //Samba 上所顯示的編碼
 unix charset = utf8                              //Linux 上所顯示的編碼
 dos charset = cp950                              //Windows 用戶端的編碼 (可正確顯示中文)
 [home]                                           //分享設定,屆時顯示分享資料夾的名稱
 comment = Weithenn Samba Files Shares            //分享資料夾的註解
 path = /home                                     //分享路徑
 valid users = weithenn,@smbuser                  //允許 weithenn 使用者及 smbuser 群組可以存取此資料夾
 public = yes                                     //允許使用者登入後可看到此分享資料夾
 writable = yes                                   //允許寫入
 create mode = 664                                //建立檔案的權限 (也就是該檔案在 Samba 中所看到的權限為 664)
 directory mode = 775                             //建立資料夾的權限 (也就是該資料夾在 Samba 中所看到的權限為 775)

步驟3.建立 samba 帳號

設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 weithenn 的 samba 帳號。
 #smbpasswd -a weithenn                           //建立 samba 使用者帳號 weithenn 
 New SMB password:                                //輸入使用者帳號 weithenn 的 samba 密碼 
 Retype new SMB password:                         //再輸入一次使用者帳號 weithenn 的 samba 密碼 
 Added user weithenn.                             //新增 samba 使用者帳號 weithenn 成功
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
 #cat /etc/samba/smbpasswd
 weithenn:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:[U          ]:LCT-41CAF287:

步驟4.啟動 samba 服務

在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務
 #chkconfig smb on
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)
 #chkconfig --list |grep smb
 smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off
完成上述設定後便可以啟動 smb 服務
 #/etc/rc.d/init.d/smb start
 Starting SMB services:                                     [  OK  ]
 Starting NMB services:                                     [  OK  ]
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol
 #netstat -tnl
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN
 tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN

Samba Client

以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源

Windows Client

上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下
  • 檔案總管網址列輸入: \\weithenn-smb\home
    • /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 [home]
  • 驗證視窗欄位輸入
    • 使用者帳號: weithenn
    • 使用者密碼: 123456
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定)
 net use w: \\Samba_Server_IP\home                           //將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
 net use w: \\Samba_Server_IP\home /user:weithenn 123456     //將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)

CentOS Client

若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源
 mount.cifs //Samba_Server_IP/home /mnt/home -o                                       //將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
 mount.cifs //Samba_Server_IP/home /mnt/home -o username=weithenn,password=123456     //將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)
 umount.cifs /mnt/home

CentOS 存取 Windows 分享資源

Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢?以下先說明實作時的相關條件
  • Windows 電腦名稱: Weithenn-XP
    • 分享資料夾名稱: Shares
    • 可存取 Windows 分享資料夾的使用者帳號: weithenn (請確定該使用者帳號存在於 Windows 機器內)
    • 可存取 Windows 分享資料夾的使用者密碼: 123456
  • CentOS 掛載至本地端檔案系統: /mnt/shares
    • CentOS 帳號密碼檔: /home/weithenn/secret.txt
    • 安全性權限設定: chmod 600 secret.txt
了解後我們修改檔案系統設定檔 /etc/fstab
 #vi /etc/fstab
 LABEL=/1                /                       ext3    defaults        1 1
 LABEL=/home1            /home                   ext3    defaults        1 2
 LABEL=/tmp1             /tmp                    ext3    defaults        1 2
 LABEL=/usr1             /usr                    ext3    defaults        1 2
 LABEL=/var1             /var                    ext3    defaults        1 2
 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 sysfs                   /sys                    sysfs   defaults        0 0
 proc                    /proc                   proc    defaults        0 0
 LABEL=SWAP-sda6         swap                    swap    defaults        0 0
 //Weithenn-XP/Shares    /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/weithenn/secret.txt 0 0   //加入此行
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內
 #vi /home/weithenn/secret.txt
 username=weithenn
 password=123456
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)
 #mount -a                                                   //讀取 /etc/fstab 更新
 #df -h                                                      //檢查是否成功存取 Windows 資源
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda1             9.7G  2.3G  6.9G  25% /
 /dev/sda7             414G  211G  183G  54% /home
 /dev/sda5             4.9G  139M  4.5G   3% /tmp
 /dev/sda3             9.7G  2.3G  6.9G  26% /usr
 /dev/sda2             9.7G  255M  9.0G   3% /var
 tmpfs                 2.0G     0  2.0G   0% /dev/shm
 //Weithenn-XP/Shares  251G  236G   15G  95% /mnt/shares     //存取 Windows 資源成功




Q1.mount error 112 = Host is down?
Error Meaage:
使用 mount.cifs 指令欲存取 Samba Server 資源時卻出現如下錯誤訊息
 mount.cifs //Samba_Server_IP/home /mnt/home -o username=weithenn,password=123456
 mount error 112 = Host is down
 Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
Ans:
主因為在 Samba Server 設定檔中忘了將此台 Client IP 加入所導致
 #vi /etc/samba/smb.conf                          //修改 samba 設定檔
 hosts allow = 127. 192.168.1.18                  //僅允許此來源 IP 位址可存取 Samba 資源
修改完設定檔之後只要執行 reload 讓 smb 去重新讀取設定檔資料即可 (不用重新啟動 smb 服務)
 #/etc/rc.d/init.d/smb reload
 Reloading smb.conf file:                                   [  OK  ]

2012年4月8日 星期日

2012年3月25日 星期日

linux power management

cat /sys/devices/system/cpu/cpu0/cpufreq/stats/trans_table
CPU轉換頻率表 & P state

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_*(兩個檔案)
ACPI定義的階段式效能

cat /proc/acpi/battery/BAT1/state
電池即時狀況

 cat /proc/acpi/thermal_zone/

Thermal Management
cooling_mode 冷卻方式
state:目前狀態
temperature 目前溫度


G0 : 一般的工作狀態
G1 : Sleeping (通常是S3或S4)
G2 : Soft off 或是s5 (關機中緊少許電力供給 ex:wol)
G3: mechanical off 電力供給幾乎為0


cat /proc/acpi/sleep
看電腦支持的s state

s0: 等於G0 沒有定義 代表電腦在工作階段
S1: CPU memory工作中 ,其他不一定
S2: deeper sleep
S3: suspend to RAM
S4: hibernat 也稱為suspend to disk
S5: 關機 又分為G2 或G3

與睡眠有關的檔案目錄 /sys/power




cat /proc/acpi/processor/cpu0/power
看支援的c state
前面有星號代表正處於哪個state