分享

下接 android linux 基础知识总结[下]8

 shaobin0604@163.com 2011-09-06
1.2.13 打标签
svn 的标签是通过copy命令完成,但是操作的路径必须是服务器的路径,打标签实际上类似于创建一个到特定版本的链接,如:
svn cp svn://192.168.2.148/smartphone/td0901/t ... e-jianping \
svn://192.168.2.148/smartphone/td0901/t ... cake-1.0.6 
如果 svn://192.168.2.148/smartphone/td0901/t ... e-jianping 的当前版本为 5 ,\
那么 svn://192.168.2.148/smartphone/td0901/t ... cake-1.0.6 实际 \
上就是 svn://192.168.2.148/smartphone/td0901/t ... e-jianping 版本5的一个标签。
1.2.14 清除缓存的认证信息,重新输入用户名和密码
一个具有权限控制的 svn 版本库在第一次 checkout 工作拷贝的时候会要求输入用户名和密码:
认证领域: 176512f1-51ee-4947-8c07-88c90ab77ac5
“$USER”的密码:
认证领域: d3216b51-7915-4881-bf30-02e0672c61cd
用户名: xxxxx
“xxxxx”的密码:
这些信息被缓存在 ~/.subversion/auth/svn.simple/ 如果需要更换另一个用户登录,必须先清除缓存的认证信息:
rm ~/.subversion/auth/svn.simple/* -rf
1.3 为规避风险,建议遵守以下规范
1.3.1 提交前审查修改情况, 用命令svn status浏览所做的修改,svn diff检查修改的详细信息
1.3.2 提交时,必须填写注释,注释内容清晰描述本次提交内容,变动信息。
1.3.3 做较大修改时,和项目组其他同事的工作相关时,必须通知对方。
1.3.4 纳入版本控制的项目必须定期提交,至少一周提交一次,避免意外事故导致代码丢失。
1.3.5 每次提交后,必须确认工程可正常运行,即SVN里保存的是可以正确运行的代码,否则恢复至稳定版本。
1.3.6 编译过程动态产生的东西不要提交到服务器
1.3.7 每次提交前先更新,这样能在提交前发现是否和别人的冲突
filelist=`find ./ -name "*.conf"`;svn add $filelist; svn commit $filelist
filelist=`find ./ -name "*.conf"`;svn delete $filelist --force --keep-local
=================================================
================================================
8. LFS 相关
7.1 lfs 相关资源
7.2 LFS问题解答
=========
LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,
告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的linux,不单单是
个性的桌面。
LFS 有什么优势呢?现在看来,它可以提供最快和最小的 Linux。但是最大的优势就是,安装LFS是菜鸟变成高手的捷径。
第一次安装,需要按照LFS文档安装,如果在此期间所有文档内容你都认真的阅读,保证你受益匪浅;然后发现很多地方可以
不按照别人的老路操作,这个时候用自己的方式参考第一次安装的经验,再一次建立linux,完成的时候,你会发现你在 LinuxSir.Org 
上已经再也不是菜鸟了。
7.1 lfs 相关资源
官方网站:
http://www./
lfs中文网站
http://lfs./main/
Linux From Scratch版本 6.2
http://lamp./Linux/LFS-6.2/index.html
Linux From Scratch 版本 6.4
http://www./lfsbook-6.4/index.html
Linux 发行版 LFS 讨论区
http://www./bbs/forumdisplay.php?f=58
7.2 LFS问题解答
构建LFS的过程中遇到一些问题,总体来说还算顺利,但是还有一些不明白的地方,这里总结一下:
1./etc/fstab是否在开机就执行,是被谁调用执行的。
2.为什么系统启动之后就要自动挂載/proc 和/sys,这两个目录有什么作用;devpts和tmpfs有什么作用。
参考章节:文件系统概述
3.关于文件系统:按照我的理解,文件系统是内核提供支持的,可以看作是一种协议,提供一种数据组织方式,每个设备必须有自己的文件系统。
不同文件系统的存储设备的数据组织形式不同。mke2fs -jv /dev/默认在上面创建EXT3的文件系统吗?既然这样的话为什么
我们还需要把以ext3挂载到一个目录呢?如果不是 的话,又是创建什么文件系统呢?为什么第六章中挂载了虚拟内核文件系统之后才能
进入chroot环境呢?
参考章节:文件系统概述
4.虚拟文件系统.作用.什么?
虚拟内核文件系统(Virtual Kernel File Systems),是指那些是由内核产生但并不存在于硬盘上(存在于内存中)的文件系统,他们
被用来与内核进行通信。
5.符号链接 和硬链接的区别是什么?什么是符号链接?什么是硬链接?为什么liinux上都使用符号链接,而不是硬链接?linux上很多地方
使用了链接,是为了组织清晰系统的结构和节省空间吗?
硬连接和软连接的区别, 硬连接和复制的区别?
硬连接记录的是目标的 inode;软连接记录的是目标的 path。
hard link 由于 inode 的缘故,只能在本分区中做 link;soft link 可以做跨分区的 link。硬连接因为记录的是 inode,所以不怕改名,
比如ln aaa bbb, mv aaa ccc, 这时 bbb 仍然可以访问;soft-link 就不行:source 的名字改变后,所有链接到这里的 soft-link 
全部变为 broken。事实上,即使所有指向该 inode 的 hard-link 的文件名都变了,每一个仍然都可以访问。我想这是它最大的优点吧。
硬连接和复制的区别:
几个硬连接=几个名字的同一个房子,这些名字可以相同或不同但地址(i-node)是一样的, 所以硬连接被删除只是把相应名字抹去,只有最
后一个名字被抹去你才会找不到房子;而复制是建造一个一模一样的房子,当然地址(i-node)就不同的了。
6.工作平台中由Glibc提供的动态连接器与Binutils里面的标准连接器有什么区别?
参考章节: 链接器和加载器
7.$LFS/tools 目录的所有者是仅存在于宿主环境中的 lfs 用户。如果保留 $LFS/tools 目录,那么该目录内文件的所有者的 user ID 就
没有对应的账号 ?为什么没有帐户,难道不是LFS?
查看 /etc/password /etc/group 两个文件 分别记录 用户和组的信息
如果用户名和用户ID 组名和组ID 的对应关系分别存在上面两个文件中,那么ls -ls 的时候就可以查看到用户信息,而不再是ID等数字信息
8.系统的环境变量保存在哪个文件?
保存在tty中
9。配置参数脚本时[alias1] [alias2 ...]什么时候用到?
别名的意思
alias ls='ls --color=auto'
/etc/skel/.bashrc:81: #alias dir='dir --color=auto'
/etc/skel/.bashrc:82: #alias vdir='vdir --color=auto'
/etc/skel/.bashrc:84: #alias grep='grep --color=auto'
/etc/skel/.bashrc:85: #alias fgrep='fgrep --color=auto'
/etc/skel/.bashrc:86: #alias egrep='egrep --color=auto'
/etc/skel/.bashrc:89:# some more ls aliases
/etc/skel/.bashrc:90:#alias ll='ls -l'
/etc/skel/.bashrc:91:#alias la='ls -A'
/etc/skel/.bashrc:92:#alias l='ls -CF'
alias mohuifu='ls -l'
========================
9. linux 内核的初步理解
4. 编译内核
此处内核编译主要针对驱动组之外的同事
1> 设置工具链
内核的 linux-2.6.28-a1/Makefile 中设定了:
CROSS_COMPILE ?= arm-linux-
所以设置PATH环境变量,保证能找到正确的工具链
假设工具链位于: /usr/local/marvell-arm-linux-4.1.1/ 设置为:
export PATH:=/usr/local/marvell-arm-linux-4.1.1/bin/:$PATH
2> 更改编译选项(网络启动或者本机启动)
内核顶层目录执行:
make menuconfig
General setup ---> 

Initial RAM filesystem and RAM disk (initramfs/initrd) support
() Initramfs source file(s) (NEW) 
如果需要支持网络启动反选 [] Initial RAM filesystem and RAM disk (initramfs/initrd) support
如果需要支持本地启动选中 
Initial RAM filesystem and RAM disk (initramfs/initrd) support
设置 () Initramfs source file(s) (NEW) 为 root
拷贝 cupcake 编译结果 out/target/product/littleton/root/ 到内核顶层目录
3> 编译
内核顶层目录执行 make zImage
编译好的内核:
arch/arm/boot/zImage
initramfs与initrd
1. initrd是一个单独的文件;initramfs和Linux内核链接在一起(/usr目录下的程序负责生成initramfs文档)。
2. initrd是一个压缩的文件系统映像(可以是ext2等,需要内核的驱动);initramfs是类似tar的cpio压缩文档。
内核中的cpio解压缩代码很小,而且init数据在boot后可以丢弃。
3. initrd运行的程序(initd,不是init)进行部分setup后返回内核;initramfs执行的init程序不返回内核
(如果/init需要向内核传递控制权,可以再次安装在/目录下一个新的root设备并且启动一个新的init程序)。
编译脚本及系统变量
initramfs与initrd的区别
1. initrd是一个单独的文件;initramfs和Linux内核链接在一起(/usr目录下的程序负责生成initramfs文档)。
2. initrd是一个压缩的文件系统映像(可以是ext2等,需要内核的驱动);initramfs是类似tar的cpio压缩文档。
内核中的cpio解压缩代码很小,而且init数据在boot后可以丢弃。
3. initrd运行的程序(initd,不是init)进行部分setup后返回内核;initramfs执行的init程序不返回内核
(如果/init需要向内核传递控制权,可以再次安装在/目录下一个新的root设备并且启动一个新的init程序)。
4. 切换到另一个root设备时,initrd执行pivot_root后,卸载ramdisk;initramfs是rootfs,既不能 
pivot_root,也不能卸载。initramfs会删掉rootfs的所有内容(find -xdev / -exec rm '{}' ';'),
再次安装root到rootfs(cd /newmount; mount --move . /; chroot .),把stdin/sdout/stderr挂在
新的/dev/console上,重新执行init。由于这是一个相当困难的实现过程(包括在使用一个命令之前把它删除),所以
klibc工具包引入一个帮助程序/utils/run_init.c来执行上述过程。其他大部分工具包(包括busybox) 把这个命令
称为"switch_root"。
======================= end ========================

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多