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 ======================== |
|
来自: shaobin0604@1... > 《Android》