LinuxC 获取、修改、设置系统软件时间

linux下的时间结构体

1、time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒;由函数time()获取;

 该类型定义在头文件 /usr/include/sys/time.h 中:

 #define _TIME_T
   typedef   long   time_t;        
 #endif 

 函数定义:time_t   time(time_t*  lpt);

 如:time_t   time = time(NULL)

2、struct timeb 结构:它有两个主要成员,一个是秒,另一个是毫秒;精确度:毫秒(10E-3秒);

     由函数ftime()获取struct timeb结构的时间;其定义如下:

     struct timeb

      {
        time_t  time;                     
        unsigned short millitm;    
        short   timezone;             
        short   dstflag;                
      };

      #include <sys/timeb.h>

      int  ftime(struct  timeb*  tp);

      调用成功返回0;调用失败返回-1

3、struct timeval 结构,它有两个成员;一个是秒,另一个表示微秒,精确度:微秒(10E-6);

      由函数gettime0fday()获取;

      struct  timeval结构定义为:

      struct  timeval

      {

          long  tv_sec;    

          long  tv_usec;  

      }

      读取struct timeval结构数据的函数说明:

      #include  <sys/time.h>
      int  gettimeofday(struct  timeval*  tv,struct  timezone*  tz);

      该函数会提取系统当前时间,并把时间分为秒和微秒两部分填充到结构struct  timeval中;同时把当地的时区信

      息填充到结构struct  timezone中;

      返回值:成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存

      取权限。

      struct  timezone结构的定义为:

      struct  timezone

      {

         int  tz_minuteswest; 
         int  tz_dsttime;         

      }

      上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下
      DST_NONE
      DST_USA
      DST_AUST
      DST_WET
      DST_MET  
      DST_EET
      DST_CAN
      DST_GB
      DST_RUM
      DST_TUR
      DST_AUSTALT  

4、struct timespec 结构:它是POSIX.4标准定义的一个时间结构,精确度:纳秒(10E-9秒);

      由函数gethrestime()gethrestime_lasttick()获取当前系统struct  timespec结构的时间;其定义如下:

      struct  timespec               

      {

          time_t    tv_sec;           

          long       tv_nsec;         

     };

     typedef   struct  timespec   timespec_t;

     该结构定义在头头文件 /usr/include/sys/time_impl.h 中;

     extern   void   gethrestime(timespec_t*);
     extern   void   gethrestime_lasttick(timespec_t*);

5、clock_t 类型:由函数clock()获取;

     #include  <time.h>

     clock_t   clock(void);

     该函数以微秒的方式返回CPU的时间;

     类型 clock_t 定义在头文件/usr/include/sys/types.h中:

     #ifndef _CLOCK_T
     #define _CLOCK_T
      typedef    long   clock_t;
     #endif 

6、tm结构

struct tm   
{   
int tm_sec; //当前秒    
int tm_min; //当前分钟    
int tm_hour; //当前小时    
int tm_mday; //当前在本月中的天,如11月1日,则为1    
int tm_mon; //当前月,范围是0~11    
int tm_year; //当前年和1900的差值,如2006年则为36    
int tm_wday; //当前在本星期中的天,范围0~6    
int tm_yday; //当前在本年中的天,范围0~365    
int tm_isdst; //夏令时   
} 

获取、设置系统时间 //实现函数功能参考本段

int getSystemTime()   /*获取操作系统的时间*/
{   
time_t timer;   
struct tm* t_tm;   
time(&timer);   
t_tm = localtime(&timer);   
printf("today is %4d%02d%02d%02d%02d%02d/n", t_tm.tm_year+1900,   
t_tm.tm_mon+1, t_tm.tm_mday, t_tm.tm_hour, t_tm.tm_min, t_tm.tm_sec);   
return 0;   
}   
  
/************************************************ 
设置操作系统时间 
参数:*dt数据格式为"2006-4-20 20:30:30" 
调用方法: 
    char *pt="2006-4-20 20:30:30"; 
    SetSystemTime(pt); 
**************************************************/  
int SetSystemTime(char *dt)  
{  
    struct rtc_time tm;  
    struct tm _tm;  
    struct timeval tv;  
    time_t timep;  
    sscanf(dt, "%d-%d-%d %d:%d:%d", &tm.tm_year,  
        &tm.tm_mon, &tm.tm_mday,&tm.tm_hour,  
        &tm.tm_min, &tm.tm_sec);  
    _tm.tm_sec = tm.tm_sec;  
    _tm.tm_min = tm.tm_min;  
    _tm.tm_hour = tm.tm_hour;  
    _tm.tm_mday = tm.tm_mday;  
    _tm.tm_mon = tm.tm_mon - 1;  
    _tm.tm_year = tm.tm_year - 1900;  
  
    timep = mktime(&_tm);  
    tv.tv_sec = timep;  
    tv.tv_usec = 0;  
    if(settimeofday (&tv, (struct timezone *) 0) < 0)  
    {  
    printf("Set system datatime error!/n");  
    return -1;  
    }  
    return 0;  
}

关键函数:settimeofday:

NAME
       gettimeofday, settimeofday - get / set time

SYNOPSIS
       #include <sys/time.h>

       int gettimeofday(struct timeval *tv, struct timezone *tz);

       int settimeofday(const struct timeval *tv, const struct timezone *tz);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       settimeofday(): _BSD_SOURCE

DESCRIPTION
       The  functions  gettimeofday()  and  settimeofday()  can  get and set the time as well as a timezone.  The tv argument is a struct timeval (as specified in
       <sys/time.h>):

           struct timeval {
               time_t      tv_sec;     /* seconds */
               suseconds_t tv_usec;    /* microseconds */
           };

       and gives the number of seconds and microseconds since the Epoch (see time(2)).  The tz argument is a struct timezone:

           struct timezone {
               int tz_minuteswest;     /* minutes west of Greenwich */
               int tz_dsttime;         /* type of DST correction */
           };

       If either tv or tz is NULL, the corresponding structure is not set or returned.  (However, compilation warnings will result if tv is NULL.)

       The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL.  (See NOTES below.)

       Under Linux, there are some peculiar "warp clock" semantics associated with the settimeofday() system call if on the very first call (after  booting)  that
       has a non-NULL tz argument, the tv argument is NULL and the tz_minuteswest field is nonzero.  (The tz_dsttime field should be zero for this case.)  In such
       a case it is assumed that the CMOS clock is on local time, and that it has to be incremented by this amount to get UTC system time.  No doubt it is  a  bad
       idea to use this feature.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介回到顶部↑ 本书同时收录了Linux领域两位领导人物的作品—相当于“Linux 文档项目”的一个印刷版本,展示了Linux 核心概念及其基本结构。对于面向所有主流Linux系统的支持与管理任务,本书都进行了恰到好处的讲解。涵盖的主题包括文件系统、目录、引导和关机、打印、网络兼容性、网络应用、网络登录、安全、用户账号、数据备份等等。此外,还针对TCP/IP网络、电子邮件、硬件问题以及网络的管理与配置,进行了专门讨论。 目录回到顶部↑ 目 录 序 前言 第一部分 Linux网络管理员指南 第1章 网络基础 3 1.1 UUCP网络 3 1.2 TCP/IP网络 5 1.2.1 TCP/IP网络入门 5 1.2.2 以太网 6 1.2.3 其他类型的硬件 7 1.2.4 网际协议 8 1.2.5 串行线路网际协议 9 1.2.6 传输控制协议 9 1.2.7 用户数据报协议 10 1.2.8 端口问题 10 1.2.9 套接字库 10 1.3 连网 11 1.4 系统维护 11 1.5 后续章节提要 13 第2章 TCP/IP网络 14 .2.1 网络接口 14 2.2 IP地址 14 2.3 地址解析 15 2.4 IP路由 16 2.4.1 IP网络 16 2.4.2 子网 16 2.4.3 网关 16 2.5 路由表 17 2.6 Internet控制消息协议 18 2.7 域名系统 19 2.7.1 主机名解析 19 2.7.2 输入DNS 20 2.7.3 利用DNS进行名字查找 21 2.7.4 域名服务器 22 2.7.5 DNS数据库 22 2.7.6 逆向查找 23 第3章 网络硬件的配置 26 3.1 内核配置 27 3.1.1 内核选项1.0及以上版本 27 3.1.2 内核选项1.1.14及以上版本 27 3.2 网络设备指南 28 3.3 以太网安装 29 3.3.1 以太网接缆 29 3.3.2 已获支持的网卡 29 3.3.3 以太网自动侦测 30 3.4 PLIP驱动程序 31 3.5 SLIP和PPP驱动程序 31 第4章 串行硬件的设置 32 4.1 Modem通信软件 32 4.2 串行设备概述 32 4.3 访问串行设备 33 4.4 串行硬件 34 第5章 TCP/IP网络配置 36 5.1 proc文件系统设置 36 5.2 二进制文件的安装 37 5.3 另一个例子 37 5.4 设置主机名 37 5.5 分配IP地址 37 5.6 编写主机和网络文件 39 5.7 IP接口配置 40 5.7.1 回送接口 40 5.7.2 以太网接口 41 5.7.3 通过网关的路由 43 5.7.4 网关的配置 43 5.7.5 PLIP接口 44 5.7.6 SLIP和PPP接口 45 5.7.7 伪接口 45 5.8 ifconfig详解 45 5.9 netstat详解 46 5.9.1 显示路由表 47 5.9.2 显示接口特性 47 5.9.3 显示链接 48 5.10 检查ARP表格 48 5.11 未来展望 50 5.12 名字服务和解析器配置 50 5.13 解析器库 50 5.13.1 host.conf文件 51 5.13.2 解析器环境变量 51 5.13.3 域名服务器查找 ——resolv.conf的配置 52 5.13.4 解析器的健壮性 53 5.14 named的运行 53 5.14.1 named.boot文件 53 5.14.2 DNS数据库文件 55 5.14.3 编写Master文件 57 5.14.4 验证域名服务器的设置 59 5.14.5 其他工具 61 第6章 串行链路网际协议 62 6.1 常规需求 62 6.2 SLIP的工作原理 62 6.3 dip的使用 63 6.4 运行于服务器模式 68 第7章 点到点协议 69 7.1 PPP打开 69 7.2 运行pppd 70 7.3 使用选项文件 71 7.4 用chat拨出 71 7.5 PPP设置的调试 73 7.6 IP配置选项 73 7.6.1 IP地址的选择 73 7.6.2 通过PPP链路的路由 74 7.7 链路控制选项 75 7.8 常规安全问题 76 7.9 PPP身份验证 76 7.9.1 CHAP和PAP 76 7.9.2 CHAP密钥文件 77 7.9.3 PAP密钥文件 78 7.10 PPP服务器的配置 79 第8章 各种网络应用 80 8.1 inetd超级服务器 80 8.2 tcpd访问控制工具 81 8.3 服务和协议文件 83 8.4 远程过程调用 84 8.5 r命令的配置 86 第9章 网络信息系统 88 9.1 NIS概述 89 9.2 NIS与NIS+之比较 90 9.3 NIS的客户端 90 9.4 NIS服务器的运行 91 9.5 用NYS设置一个NIS客户机 91 9.6 挑选合适的映射 93 9.7 使用passwd和group映射 94 9.8 NIS与影子支持 95 9.9 使用传统的NIS代码 96 第10章 网络文件系统 97 10.1 NFS的准备工作 98 10.2 NFS卷的安装 98 10.3 NFS Daemon 100 10.4 导出文件 100 10.5 自动安装器 102 第11章 泰勒式UUCP 103 11.1 关于UUCP 103 11.1.1 UUCP传输和远程作业的执行 104 11.1.2 UUCICO的内部运行 104 11.1.3 UUCICO命令行选项 105 11.2 UUCP配置文件 105 11.2.1 泰勒式UUCP简介 105 11.2.2 UUCP需要知道些什么 107 11.2.3 站点的命名 107 11.3 泰勒式配置文件 108 11.3.1 常规配置选项:config文件 108 11.3.2 如何将其他的系统 告知UUCP:sys文件 108 11.3.3 设备:端口文件 110 11.3.4 如何拨号:拨号文件 111 11.3.5 TCP上的UUCP 112 11.3.6 直接连接的使用 112 11.4 UUCP的注意事项:调节权限 112 11.4.1 命令执行 112 11.4.2 文件传输 112 11.4.3 文件转发 113 11.5 如何设置拨入 113 11.5.1 设置getty 113 11.5.2 提供UUCP账号 114 11.5.3 预防措施 115 11.5.4 呼叫序列号检查 115 11.5.5 匿名UUCP 116 11.6 UUCP低级协议 116 11.6.1 协议概述 116 11.6.2 传输协议的调节 117 11.6.3 如何选定特殊协议 117 11.7 故障排除 117 11.8 日志文件 118 第12章 电子邮件 120 12.1 何谓邮件消息 121 12.2 邮件如何发送 122 12.3 邮件地址 123 12.4 邮件路由的工作原理 124 12.4.1 因特网上的邮件路由 124 12.4.2 UUCP网络内的邮件路由 124 12.4.3 UUCP和RFC-822 125 12.5 路径别名和映射文件格式 126 12.6 elm的配置 128 12.6.1 全局elm选项 128 12.6.2 国家特有字符集 129 第13章 smail的设置和运行 130 13.1 UUCP的设置 130 13.2 在局域网环境中的设置 132 13.2.1 编写配置文件 132 13.2.2 运行smail 133 13.3 故障排除 134 13.4 邮件投递模式 135 13.5 其他配置选项 136 13.6 消息路由和投递 136 13.7 消息的路由 137 13.8 将消息投递至本地地址 139 13.8.1 本地用户 139 13.8.2 转发 140 13.8.3 别名文件 140 13.8.4 邮件列表 141 13.9 以UUCP为基础的传输 141 13.10 以SMTP为基础的传输 141 13.11 主机名的限制 142 第14章 Sendmail+IDA指南 143 14.1 配置文件综述 143 14.2 sendmail.cf文件 144 14.3 Sendmail+IDA表格指南 146 14.3.1 mailertable 146 14.3.2 uucpxtable 146 14.3.3 pathtable 147 14.3.4 domaintable 147 14.3.5 别名 147 14.4 sendmail的安装 147 14.4.1 sendmail.cf文件的建立 148 14.4.2 sendmail.cf文件的测试 148 14.4.3 对sendmail.cf和表格 进行综合测试 148 14.5 邮件的操作技巧 148 14.5.1 向中转主机转发邮件 149 14.5.2 强制邮件进入配置不当的 远程站点 149 14.5.3 强制邮件通过UUCP进行传输 149 14.5.4 防止邮件通过UUCP进行传输 149 14.5.5 按需运行sendmail队列 149 14.5.6 报告邮件特征 150 14.6 二进制附件的合成和匹配 150 14.7 获取更多的信息 150 第15章 网络新闻 151 15.1 何谓Usenet 151 15.2 Usenet如何对新闻加以控制 152 第16章 C-News 154 16.1 新闻投递 154 16.2 安装 155 16.3 sys文件 156 16.4 active文件 158 16.5 新闻组文章的批处理 159 16.6 对新闻进行过期处理 161 16.7 其他文件 163 16.8 控制消息 164 16.8.1 cancel消息 164 16.8.2 newgroup和rmgroup消息 165 16.8.3 checkgroups消息 165 16.8.4 sendsys、version和senduuname 166 16.9 NFS环境中的C-News 166 16.10 维护工具及任务 167 第17章 NNTP简介 168 17.1 NNTP服务器的安装 169 17.2 限制NNTP访问权限 169 17.3 NNTP身份验证 170 17.4 nntpd与C-News的沟通 171 第18章 新闻阅读机的配置 172 18.1 tin配置 172 18.2 trn配置 173 18.3 nn配置 174 第19章 其他问题 176 19.1 PLIP的空打印机电缆 176 19.2 示范smail配置文件 176 第二部分 Linux系统管理员指南 作者简介 本书简介 前言 第1章 Linux系统综述 189 1.1 操作系统的各个组件 189 1.2 内核的重要组件 189 1.3 Unix系统提供的主要服务 190 1.3.1 init 190 1.3.2 从终端登录 191 1.3.3 syslog 191 1.3.4 周期性执行的命令:cron和at 191 1.3.5 图形化用户接口 191 1.3.6 连网 191 1.3.7 网络登录 192 1.3.8 网络文件系统 192 1.3.9 邮件 192 1.3.10 打印 192 1.3.11 文件系统布局 193 第2章 目录树简介 194 2.1 背景知识 194 2.2 root文件系统 195 2.3 /etc文件系统 196 2.4 /dev文件系统 198 2.5 /usr文件系统 198 2.6 /var文件系统 198 2.7 /proc文件系统 199 第3章 磁盘和其他存储媒体的使用 201 3.1 两类设备 201 3.2 硬盘 202 3.3 软盘 204 3.4 CD-ROM 204 3.5 磁带 205 3.6 格式化 206 3.7 分区 207 3.7.1 主引导记录、引导扇区和分区表 207 3.7.2 扩展和逻辑分区 208 3.7.3 分区类型 209 3.7.4 对硬盘进行分区 209 3.7.5 设备文件和分区 210 3.8 文件系统 210 3.8.1 何谓文件系统 210 3.8.2 文件系统综述 211 3.8.3 如何选用文件系统 212 3.8.4 如何建立文件系统 212 3.8.5 装入和卸装 214 3.8.6 利用fsck检查文件系统的完整性 216 3.8.7 利用badblocks检查磁盘错误 217 3.8.8 抵制碎片 217 3.8.9 适用于所有文件系统的其他工具 217 3.8.10 适用于ext2文件系统的其他工具 218 3.9 无文件系统的磁盘 219 3.10 磁盘空间的分配 219 3.10.1 分区方案 219 3.10.2 空间要求 220 3.10.3 硬盘分区示例 220 3.10.4 为Linux增添更多磁盘空间 221 3.10.5 关于节省磁盘空间的几个提示 221 第4章 内存管理 222 4.1 何谓虚拟内存 222 4.2 创建交换空间 222 4.3 交换空间的使用 223 4.4 与其他操作系统共享交换空间 224 4.5 交换空间的分配 224 4.6 缓冲区 225 第5章 引导和关机 227 5.1 概论 227 5.2 深入研究引导过程 227 5.3 关机详情 229 5.4 重新启动 230 5.5 单用户模式 230 5.6 应急盘 231 第6章 init 232 6.1 init的重要作用 232 6.2 通过init启动getty:/etc/inittab文件 232 6.3 运行级别 233 6.4 /etc/inittab中的特殊配置 234 6.5 在单用户模式下引导 234 第7章 登录和注销 236 7.1 通过终端登录 236 7.2 通过网络登录 237 7.3 登录的意义 237 7.4 访问控制 238 7.5 外壳的启动 238 第8章 用户账号的管理 239 8.1 何谓账号 239 8.2 创建用户 239 8.2.1 /etc/passwd和其他的信息性文件 239 8.2.2 如何选择数字式用户和组ID 240 8.2.3 初始化环境:/etc/skel 240 8.2.4 手工创建一个用户 240 8.3 更改用户属性 241 8.4 删除用户 241 8.5 临时禁用用户 242 第9章 备份 243 9.1 备份的重要性 243 9.2 选择备份媒体 243 9.3 选择备份工具 244 9.4 简单备份 244 9.4.1 如何利用tar进行备份 245 9.4.2 如何利用tar恢复文件 246 9.5 多级备份 247 9.6 要备份什么 248 9.7 压缩备份 248 第10章 时间同步 250 10.1 时区概论 250 10.2 硬件及软件时钟 250 10.3 时间的显示与设置 251 10.4 时间有误怎么办 252 第三部分 附 录 附录A 词汇表 255 附录B Linux 文档项目复制许可证 256 附录C GNU通用公共许可证 257
Linux是一个多任务、多用户的操作系统,它以其良好的特性和资源的免费性而得到了蓬勃的发展。  本书通过大量的图示和实例,深入浅出的介绍了Linux的基本原理和应用。主要包括Linux的基本概念和操作,Linux的树型结构,Linux的文本编辑,Linux的安装和启动,用户管理,Shell编程技术,进程管理,C编译器,系统扩充,维护与监视,Linux的图形界面,网络的基本概念与设置Linux在网络资源共享和电子邮件方面的应用,以及DNS、FTP、Web和Proxy服务器等内容。  本书可作为Linux操作系统课程的教材,也可作为电脑爱好者,相关技术人员及参加Linux认证考试人士的参考书。 一、关于Linux Linux是一个正在蓬勃发展的极富生命力的操作系统。芬兰青年Linus Torvalds和其杰作的传奇故事吸引了无数的电脑爱好者尝试去使用Linux,但他们中的大多数人却被Unix类操作系统传统的枯燥的字符界面、艰涩难懂的操作命令和数量庞大的基本概念以及基础知识所吓退。Linux在这几年中迅速地发展,Turbo Linux宣布该公司已经开始盈利了,这说明了Linux正在逐渐大众化。在未来的几年中,Linux在各行各业中的应用将遍地开花,能熟练操作Linux将是每一个系统管理员所需掌握的基本技能。 曾经有一种说法:能熟练操作Linux的人,必定是电脑业界的顶尖高手。本书正是为改变这一种看法而面世的,它主要面向那些对电脑系统有初步认识的初学者,即使读者从未接受过电脑方面的系统训练,甚至连微软的Windows都没有学过,也能从本书中获益。 二、本书特点 1)在介绍过程中,着重于概念的层次性和内容的衔接,使读者更容易进行学习。 2)为了能把深奥、复杂的概念和操作表达明白,本书使用了大量的插图和实际操作例子,使之通俗易懂。例如:在网络应用部分中的很多例子,都在中山大学服务器上运行,每天都在承受巨大的访问量。 3)配置了大量习题。 三、本书结构安排 本书共分19章,遵循由简到繁、由易到难的讲解方式来组织、安排内容。 第1章:Linux基础。本章首先对Unix进行了概述,然后介绍了Linux的技术特点、Linux的版本,以及Linux对中文的支持。 第2章:基本操作。本章主要介绍了Linux的一些基本操作。如:注册、注销、远程登录、更改时间、关闭系统等。 第3章:树型结构。本章主要介绍了Linux的文件结构、目录结构,同时还介绍了链接,并用大量的实例形象生动地说明了Linux下各种文件的操作。 第4章:文本编辑。本章主要介绍了Linux下的文本编辑器,这是使用Linux的一些基本技能。学好本章,有利于以后的学习。 第5章:Linux的安装和启动。本章主要介绍了Linux的安装和启动,其中涉及到一些原理以及其他Unix类操作系统上的原理。 第6章:用户管理。本章主要介绍了Linux下增加用户、删除用户、设置用户组的各种操作,这些操作是进入Linux系统的第一步。 第7章:Shell和Shell编程。本章主要介绍了Shell的基本概念、Shell脚本以及awk的相关知识。 第8章:进程管理。本章主要介绍了在Linux中的进程管理。其中包括了进程、进程数、进程的优先级、定时执行等。 第9章:C编译器—— gcc。本章主要介绍了Linux下面的编译器—— gcc的基本用法以及Make与Makefile的一些基本知识。 第10章:系统扩充。本章主要介绍了在Linux系统的扩充,包括软件的安装和内核的升级等内容。 第11章:系统维护与监视。本章主要介绍了Linux中的文件系统维护与监视。其中包括交换空间、/proc的信息以及各种日志文件和进程记账等。 第12章:图形界面。本章主要介绍了X Window以及它的配置,并且介绍了在KDE环境下汉化的基本思想,用实例来讲解了Linux汉化的基础知识。 第13章:网络的基本概念与设置。本章主要介绍了网络的基本概念,并在讲解这个概念的同时,讲解Linux中的网络配置。在此同时讲解了Linux的基本的网络命令,这对于理解Linux的网络上面的基本运用有着很大的作用。 第14章:网络资源共享。本章主要介绍了NFS文件系统、NFS文件系统的架设、Samba的资源共享、打印机网络共享等内容。 第15章:电子邮件。本章主要介绍电子邮件系统Linux下的电子邮件系统,以及建立Linux下的邮件服务器。 第16章:DNS服务器。本章主要介绍DNS工作的原理、Linux下的域名服务器系统以及BIND的安装与配置等内容。详细叙述了主DNS服务器和辅助DNS服务器的配置以及DNS的安全。 第17章:FTP服务器。本章主要介绍了wu-ftp服务器的安装、配置和使用,Proftpd服务器的安装、配置和使用。 第18章:Web服务器。本章主要介绍了Apache的安装和配置。从Apache的最基本配置到它的高级运用,在本章中都有详细的叙述。 第19章:Proxy服务器。本章主要介绍在Linux上比较常用的两个proxy服务器软件的配置。 本书最后还附有参考答案,以供读者对照课后习题进行练习。 四、本书适用对象 本书适合用于大专院校、电脑培训班等作为Linux或UNIX操作系统课程的教材,也可作为电脑爱好者、相关技术人员或准备参加Linux认证的读者的参考书。 本书写作过程中受到广东省自然科学基金和中山大学青年启动基金的帮助,在此特表感谢! Linux发展至今,经历了无数人的努力,是千万人智慧的结晶。最新的Linux发布版,完全安装需要占用1G以上的空间,要完全掌握这样一个庞大的系统,并不是一件容易的事情,这对于作者本身也毫不例外。读者在学习本书的过程中如遇到疑难问题或觉得不妥之处,可到相关网站的论坛进行探讨,网址:http://www.cnbook.net。 尽管作者写这本书时具有良好初衷而且竭尽全力,但由于水平有限和时间仓促,疏漏之处在所难免,敬请读者批评指正和原谅。 编 者 2002年12月 第1章 Linux基础 1 1.1 Unix概述 1 1.1.1 Unix的历史 1 1.1.2 Unix的特点 3 1.1.3 Unix的现状和未来 5 1.2 Linux基础知识 5 1.2.1 Linux的历史 6 1.2.2 Linux的技术特点 6 1.2.3 Linux的版本 7 1.2.4 Linux对中文的支持 8 小结 8 习题一 8 一、思考题 8 二、选择题 9 三、上机操作 9 第2章 基本操作 10 2.1 进入Linux系统 10 2.1.1 开机与系统选择 10 2.1.2 注册 10 2.1.3 控制和终端操作 11 2.1.4 进入图形界面 11 2.1.5 用Telnet方式远程连入 12 2.2 一些基本命令 13 2.2.1 修改密码 13 2.2.2 查询、修改日期与时间 14 2.2.3 观看月历 15 2.2.4 清屏 16 2.2.5 获取注册信息 16 2.2.6 与其他用户作简单通讯 17 2.2.7 观看主机配置情况 18 2.2.8 寻找命令使用方法 18 2.3 退出Linux 19 2.3.1 注销 19 2.3.2 关闭系统 19 小结 20 习题二 21 一、思考题 21 二、选择题 21 三、上机操作 21 第3章 树型结构 23 3.1 文件 23 3.1.1 Linux的文件 23 3.1.2 文件操作相关命令 24 3.2 目录和路径 27 3.2.1 树型结构基础知识 27 3.2.2 路径 30 3.2.3 与树型结构相关的操作 32 3.2.4 通配符与多文件操作 37 3.3 链接 41 3.3.1 硬链接 41 3.3.2 符号链接 42 3.4 文件的属性 43 3.4.1 显示文件的属性 43 3.4.2 权限字与权限操作 46 3.5 设备文件 48 3.6 磁盘的操作 51 3.7 备份 60 小结 62 习题三 62 一、思考题 62 二、选择题 63 三、上机操作 64 第4章 文本编辑 65 4.1 行编辑器ed 65 4.1.1 启动ed 65 4.1.2 输入和修改 65 4.1.3 查找与替换 67 4.1.4 保存与退出 67 4.2 全屏幕编辑器vi 67 4.2.1 进入vi及vi状态 67 4.2.2 光标移动 68 4.2.3 删除与恢复 69 4.2.4 替换 69 4.2.5 保存与退出 70 4.2.6 进入插入状态 70 4.2.7 寻找指定字符或字符串 72 4.2.8 块操作 75 4.3 功能强大的Emacs 76 4.3.1 Emacs是什么 76 4.3.2 Emacs的操作 77 4.4 文本的基本操作命令 87 4.4.1 more与less 87 4.4.2 pr 88 4.4.3 tail与head 89 4.4.4 spell 90 4.4.5 diff与cmp 90 4.4.6 wc 91 4.4.7 find与grep 92 小结 94 习题四 94 一、思考题 94 二、选择题 95 三、上机操作 95 第5章 Linux的安装和启动 96 5.1 安装的基本知识 96 5.1.1 硬件要求 96 5.1.2 硬盘分区 96 5.1.3 Linux的起动与多系统并存 96 5.1.4 安装前的准备 97 5.2 安装的过程 97 5.3 Loadlin方式的引导 105 5.4 安装后Linux系统的构成 107 5.5 引导过程 109 5.5.1 lilo 109 5.5.2 内核 111 5.5.3 init与inittab 112 5.5.4 Shell 114 小结 114 习题五 115 一、思考题 115 二、选择题 115 三、上机操作 115 第6章 用户管理 116 6.1 用户账号的设置 116 6.1.1 增加用户 116 6.1.2 /et/passwd文件与/etc/shadow文件 117 6.1.3 删除用户 119 6.1.4 观看和修改用户资料 120 6.2 用户组的设置 122 6.2.1 /etc/group文件 122 6.2.2 用户组的操作 123 小结 124 习题六 124 一、思考题 124 二、选择题 124 三、上机操作 125 第7章 Shell和Shell编程 126 7.1 什么是Shell 126 7.1.1 Shell的类型 126 7.1.2 为用户指定Shell 127 7.1.3 Shell的环境 128 7.2 Shell脚本 130 7.2.1 Shell脚本的编写 130 7.2.2 控制流 132 7.2.3 here文本 135 7.2.4 几个特别的Shell脚本 135 7.3 awk 141 7.3.1 调用awk 141 7.3.2 awk脚本 142 7.3.3 模式和动作 142 7.3.4 域和记录 142 7.3.5 awk内置变量 143 7.3.6 awk的字符函数 144 7.3.7 数组 144 7.3.8 控制流和循环 145 小结 145 习题七 145 一、思考题 145 二、选择题 149 三、上机操作 149 第8章 进程管理 150 8.1 进程管理的应用 150 8.2 定时执行 155 小结 156 习题八 157 一、思考题 157 二、选择题 157 三、上机操作 157 第9章 C编译器—— gcc 158 9.1 什么是gcc 158 9.1.1 gcc简介 158 9.1.2 gcc的用法 158 9.2 make与Makefile 159 小结 160 习题九 161 一、思考题 161 二、选择题 161 三、上机操作 161 第10章 系统扩充 166 10.1 软件安装 166 10.1.1 传统安装 166 10.1.2 rpm 168 10.2 内核升级 171 10.2.1 获得内核源码 171 10.2.2 配置内核 171 10.2.3 编辑与安装新内核 182 小结 185 习题十 185 一、思考题 185 二、选择题 185 三、上机操作 186 第11章 系统维护与监视 187 11.1 文件系统维护 187 11.2 交换空间 187 11.3 系统监视 189 小结 194 习题十一 195 一、思考题 195 二、选择题 195 三、上机操作 195 第12章 图形界面 196 12.1 X Window 196 12.1.1 什么是X 196 12.1.2 X的结构 196 12.2 Linux下的X——XFrea86 197 12.2.1 配置 197 12.2.2 Xfea86图形界面的功能与操作 199 12.2.3 中文化问题 202 小结 206 习题十二 206 一、思考题 206 二、选择题 206 三、上机操作 206 第13章 网络的基本概念与设置 207 13.1 什么是网络 207 13.1.1 网络的定义 207 13.1.2 网络的分类与结构 207 13.1.3 网络的硬件与软件 208 13.1.4 网络的应用 209 13.2 Internet与TCP/IP协议 210 13.2.1 Internet的历史与现状 210 13.2.2 TCP/IP基础知识 212 13.3 Linux的基本网络配置 213 13.3.1 安装与驱动网卡 213 13.3.2 设定IP地址及TCP/IP 基本参数 213 13.3.3 检测连通性 215 13.3.4 使用MODEM拨号上网 216 13.4 TCP/IP实用程序 218 13.4.1 ping 218 13.4.2 Telnet 219 13.4.3 FTP 220 13.4.4 traceroute 223 13.4.5 ifconfig 224 小结 225 习题十三 225 一、思考题 225 二、选择题 225 三、上机操作 225 第14章 网络资源共享 226 14.1 Linux/Unix系统之间 文件共享——NFS 226 14.1.1 NFS的概念 226 14.1.2 NFS的安装和启动 226 14.1.3 架设NFS文件系统 227 14.2 Linux/Windows系统之间文件 共享——Samba 229 14.2.1 什么是Samba 229 14.2.2 安装与启动Samba 229 14.2.3 Samba的配置 230 14.2.4 在Linux上访问Windows 的共享资源 233 14.3 打印机网络共享 233 14.3.1 建立打印服务器 233 14.3.2 使用远程打印机 234 小结 234 习题十四 235 一、思考题 235 二、选择题 235 三、上机操作 235 第15章 电子邮件 236 15.1 电子邮件系统 236 15.1.1 电子邮件的历史 236 15.1.2 电子邮件的体系结构和服务 236 15.2 Linux下的电子邮件系统 237 15.2.1 Linux下的邮件服务器 237 15.2.2 Linux下的邮件用户代理 242 15.3 mail命令 242 15.4 建立Linux下的邮件服务器 247 15.4.1 sendmail的复杂性 247 15.4.2 sendmail的组成结构和原理 247 15.4.3 编译和配置sendmail 251 15.4.4 技巧和提示 253 小结 256 习题十五 256 一、思考题 256 二、选择题 256 三、上机操作 257 第16章 DNS服务器 258 16.1 DNS的工作原理 258 16.1.1 域名 258 16.1.2 因特网的域名系统 258 16.1.3 DNS的消息格式 260 16.1.4 对象内容与资源记录内容 261 16.2 Linux下的域名服务器系统 261 16.3 BIND的安装与配置 262 16.3.1 BIND的编译与安装 262 16.3.2 Linux下与域名系统相关的 几个配置文件 263 16.3.3 Caching Only域名服务器 的配置 264 16.3.4 主域名服务器的配置 269 16.3.5 从域名服务器的配置 272 16.4 设置chroot的DNS 273 小结 275 习题十六 276 一、思考题 276 二、选择题 276 三、上机操作 276 第17章 FTP服务器 277 17.1 wu-ftp 277 17.1.1 wu-ftp的安装 277 17.1.2 wu-ftp的配置 278 17.1.3 wu-ftpd的启动和测试 285 17.1.4 实用命令 286 17.2 Proftpd 286 17.2.1 Proftpd的安装 286 17.2.2 Proftpd的配置 286 17.2.3 一个实例 289 17.2.4 proftpd的启动和测试 292 小结 292 习题十七 292 一、思考题 292 二、选择题 292 三、上机操作 292 第18章 Web服务器 293 18.1 Apache的安装 293 18.1.1 编辑设置 293 18.1.2 编译和安装 294 18.2 Apache的配置 294 18.2.1 全局设置 295 18.2.2 主服务器设置 297 18.3 虚拟Web服务器 308 18.3.1 虚拟主机的类型与运行方式 308 18.3.2 基于IP的虚拟主机 308 18.3.3 基于域名的虚拟主机 310 小结 312 习题十八 312 一、思考题 312 二、选择题 312 三、上机操作 312 第19章 Proxy服务器 313 19.1 Proxy的概念 313 19.1.1 什么是Proxy 313 19.1.2 Proxy的应用 313 19.2 利用Apache建立Proxy 313 19.2.1 配置前的准备工作 314 19.2.2 建立Proxy服务器 314 19.2.3 建立Cache服务器 315 19.2.4 常用的mod_proxy模块的指令 315 19.3 Squid 316 19.3.1 安装Squid 316 19.3.2 配置Squid 317 19.3.3 更多的配置参数 319 19.3.4 启动和关闭Squid 327 19.3.5 日志文件 327 小结 328 习题十九 328 一、思考题 328 二、选择题 328 三、上机操作 329 参考答案 330
Linux系统移植 目 录 第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1 主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3 工具介绍...............................................................................................................................8 2 软件环境.......................................................................................................................................8 2.1 主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux 操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux 下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp 服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot 部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader 的编写(ADS).................................................................................14 1 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................16 2.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的 C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动 AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的 gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc头文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU 交叉工具链的下载...........................................................................................................28 2.1 ARM 官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU 交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib 的使用..................................................................30 3.2.3 arm­linux­objdump 的使用.........................................................................................30 3.2.4 arm­linux­readelf 的使用............................................................................................31 3.2.6 arm­linux­copydump 的使用......................................................................................32 4 ARM GNU 常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot 的移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot 介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot 体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1 介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置 CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以 CPU的频率....................................................................................................37 2.2.7 设置 CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装 U­BOOT 使的栈空间........................................................................................38 2.2.10 BSS 段清 0................................................................................................................38 2.2.11 搬移 Nand Flash 代码...............................................................................................39 2.2.12 进入 C代码部分.......................................................................................................39 2.3 阶段2 的C语言代码部分 .............................................................................................39 2.3.1 调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主 UBOOT 命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot的移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改 Makefile..............................................................................................................42 3.2.2 在 board 子目录中建立 crane2410.............................................................................42 3.2.3 在 include/configs/中建立配置头文件......................................................................42 3.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改 lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT 的 Nand Flash 移植......................................................................................45 3.2.8 重新编译u­boot..........................................................................................................45 3.2.9 把 u­boot烧入flash....................................................................................................45 4  U­BOOT 命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6 内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux 内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash 分区...................................................................................................................54 1.3.1 指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止 Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载 devfs................................................................................................56 1.4.2 配置内核产生.config 文件.........................................................................................57 1.4.3 编译内核.....................................................................................................................58 1.4.4 下载 zImage到开发板................................................................................................58 2 创建 uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage 的方法...........................................................................................61 2.2.1 获取 mkimage工具.....................................................................................................61 2.2.2 修改内核的 Makefile文件.........................................................................................61 3 追加实验记录.............................................................................................................................62 3.1 移植 linux­2.6.15.7..............................................................................................................62 3.2 移植 linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1 构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在 my_rootfs 中建立Linux 目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植 Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植 TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin 的 Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab 文件...................................................................................................................67 4.5 创建inetd.conf 配置文件...................................................................................................67 5 移植 inetd....................................................................................................................................67 5.1 inetd 的选择及获取............................................................................................................67 5.1.1 获取 inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改 configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝 inetd 到根文件系统的usr/sbin 目录中.............................................................68 6 移植 thttpd Web 服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝 thttpd 二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改 thttpd 配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS 包...............................................................................................................70 7.1.1 下载 cramfs 工具........................................................................................................70 7.1.2 制作 cramfs 包............................................................................................................70 7.1.3 写 cramfs 包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash 驱动的编写与移植........................................................................................71 1 Nand flash 工作原理..................................................................................................................71 1.1 Nand flash 芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash 主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash 控制器特性..............................................................................................72 1.2.2 Nand Flash 控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在 ADS下flash 烧写程序.........................................................................................................74 2.1 ADS 下 flash 烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取 Nand flash ID......................................................................................................75 2.3.4 Nand flash 写入...........................................................................................................76 2.3.5 Nand flash 读取...........................................................................................................77 2.3.6 Nand flash 标记坏块...................................................................................................78 2.3.7 Nand Flash 检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在 U­BOOT 对Nand Flash 的支持............................................................................................82 3.1 U­BOOT对从 Nand Flash 启动的支持.............................................................................82 3.1.1 从 Nand Flash 启动U­BOOT 的基本原理................................................................82 3.1.2 支持 Nand Flash 启动代码说明.................................................................................82 3.2 U­BOOT对 Nand Flash 命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在 Linux 对Nand Flash 的支持.................................................................................................87 4.1 Linux 下Nand Flash 调用关系..........................................................................................87 4.1.1 Nand Flash 设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash 设备注册时数据结构包含关系..............................................................87 4.2 Linux 下Nand Flash 驱动主要数据结构说明..................................................................88 4.2.1 s3c2410 专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册 driver_register....................................................................................................94 4.3.2 探测设备 probe...........................................................................................................94 4.3.3 初始化 Nand Flash 控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash 芯片初始化..............................................................................................94 4.3.6  读 Nand  Flash............................................................................................................95 4.3.7  写 Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在 ADS下cs8900a的实现........................................................................................................95 2.1 在 cs8900a下实现的ping 工具.........................................................................................95 3 在 u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot 下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot 下cs8900a的移植说明...........................................................................................96 4 在 linux 下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux 下cs8900a的驱动说明............................................................................................96 4.2 Linux 下 cs8900a的移植说明...........................................................................................96 4.2.1 为 cs8900a建立编译菜单..........................................................................................96 4.2.2 修改 S3C2410相关信息............................................................................................97 序 该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢 ARM 和 Linux 的朋友, 如有错误 之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为
### 回答1: hide and seek 隐写是一种在信息技术领域中的隐写术,它通过隐藏消息在其他数据中以防止被发现。 在Linux C编程中,我们可以使用该技术实现隐藏消息的功能。 首先,我们需要选定一个载体文件,可以是图片、音频或者视频文件。接下来,我们需要将希望隐藏的消息编码到这个载体文件中。 在Linux C编程中,可以使用文件操作函数来读取和操作文件。我们可以使用标准的C库函数(如fread和fwrite)来读取和写入文件。 在隐藏消息的过程中,我们需要遵循以下步骤: 1. 打开载体文件和消息文件。 2. 读取载体文件的每一个字节,同时读取消息文件的每一个字节。 3. 将消息字节的位逐一插入到载体字节的低位中,使得载体字节的内容并不明显发生改变。 4. 写入修改后的载体字节到一个新的文件中,即隐藏了消息的文件。 5. 关闭载体文件和消息文件。 顺利完成上述步骤后,可以生成一个新的文件,其中隐藏了消息的载体文件被创建出来了。 在接收方想要提取隐藏的消息时,需要使用相同的方法来读取隐藏信息文件,同时将每一个字节的低位提取出来得到隐藏的消息。 ### 回答2: 在Linux的C编程中隐藏和寻找( hide and seek)可以有多种含义。 首先,隐藏可能指的是在代码中隐藏某些敏感信息或秘密参数,以防止其他用户或攻击者获取。这可以通过使用密码学技术,如加密和解密函数,确保只有授权用户才能访问这些隐藏信息。另外,隐藏也可以指在代码中隐藏某些功能或逻辑,以使其更难以被发现和利用。这可以在软件开发中用作一种安全措施,以减轻潜在的漏洞利用和攻击。 而寻找可以指的是Linux环境中查找隐藏的文件或目录。在Linux中,隐藏的文件或目录通常以句点 "." 开头。通过使用命令行工具如ls或find等,可以寻找指定目录下的所有隐藏文件和目录,以便对其进行进一步的操作或分析。这在系统管理和安全审计中非常有用,因为有时隐藏文件和目录可能包含一些重要的配置或日志信息。 总结起来,在Linux的C编程中,隐藏和寻找可以是指隐藏一些敏感信息或代码逻辑,以及在系统中寻找隐藏的文件和目录。这些都是为了确保代码和系统的安全性和可靠性,以防止潜在的风险和攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值