简介
unix操作系统,是美国at&t公司于1971年在pdp-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(kenneth lane thompson)、丹尼斯·里奇(dennis macalistair ritchie)于1969年在at&t的贝尔实验室开发。
unix的商标权由国际开放标准组织(the open group)所拥有。
unix的诞生
1965年时,贝尔实验室(bell labs)加入一项由通用电气(general electric)和麻省理工学院(mit)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的multics操作系统。直到1969年,因multics计划的工作进度太慢,该计划被停了下来。当时,ken thompson(后被称为unix之父)已经有一个称为”星际旅行”的程序在ge-635的机器上跑,但是反应非常慢unix linux,正巧被他发现了一部被闲置的pdp-7(digital的主机),ken thompson和dernis ritchie就将”星际旅行”的程序移植到pdp-7上。而这部pdp-7(如图1-1所示)就此在整个计算机历史上留下了芳名。
multics其实是”multiplexed information and computing service”的缩写,在1970年时,那部pdp-7却只能支持两个使用者,当时,brian kernighan就开玩笑地称他们的系统其实是:”uniplexed information and computing service”,缩写为”unics”,后来,大家取其谐音,就称其为”unix”了。1970年可称为”unix元年”。
流行
1971年,ken thompson写了充分长篇的申请报告,申请到了一台pdp-11/24的机器。于是unix第一版出来了。在一台pdp-11/24的机器上完成。这台电脑只有24kb的物理内存和500k磁盘空间。unix占用了12kb的内存linux关机命令,剩下的一半内存可以支持两用户进行space travel的游戏。而著名的fork()系统调用也就是在这时出现的。
到了1973年的时候,ken thompson 与dennis ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用fortran,可是失败了。后来他们用一个叫bcpl(basic combined programming language)的语言开发,他们整合了bcpl形成b语言,后来dennis ritchie觉得b语言还是不能满足要求,于是就改良了b语言,这就是今天的大名鼎鼎的c语言。于是,ken thompson 与dennis ritchie成功地用c语言重写了unix的第三版内核。至此,unix这个操作系统修改、移植相当便利,为unix日后的普及打下了坚实的基础。而unix和c完美地结合成为一个统一体,c与unix很快成为世界的主导。
unix的第一篇文章 “the unix time sharing system”由ken thompson和dennis ritchie于1974年7月的 the communications of the acm发表。这是unix与外界的首次接触。结果引起了学术界的广泛兴趣并对其源码索取,所以,unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过unix源码对unix进行了各种各样的改进和扩展。于是,unix开始广泛流行。
unix和linux有什么区别
其实unix指向不同的,你说的那种unix是商标,法律上不同,但是unix的内核和linux也不同。比如,bsd中freebsd,openbsd,netbsd都是unix,也是开放源代码软件,却根本无法属于linux类,他们的unix是指内核是unix(技术方面),但是在叫法上和linux一样叫unix-like的系统(法律上),但unix和linux内核确实不同的。
unix是现在做关键业务的,根本不可能给你新人练手的,你得有机会可以去做啊, unix+oracle可是真的很赚钱的linux现在如日中天,便宜塞,服务器一万块可以搞很不错的unix linux,操作系统免费的,现在集群基本都是linux+mysql。
ROOTVG做镜像问题
以下命令全部在AIX5.4上运行通过
# lspv
hdisk0 000a1ddc7f36a2f0 rootvg active
hdisk1 none None
#chdev -l hdisk1 -a pv=clear
#chdev -l hdisk1 -a pv=yes
hdisk1 changed
# lspv
hdisk0 000a1ddc7f36a2f0 rootvg active
hdisk1 000a1ddcd9e3cc9e None
#extendvg rootvg hdisk1 //如果hdisk1内有数据在做extend的时侯hdisk1里面的数据就没了
#extendvg -f rootvg hdisk1 //强制把hdisk1加入到rootvg中
#lspv
hdisk0 000a1ddc7f36a2f0 rootvg active
hdisk1 000a1ddcd9e3cc9e rootvg active
#mirrorvg rootvg hdisk1
#mirrorvg rootvg
0516-1124 mirrorvg: Quorum requirement turned off, reboot system for this
to take effect for rootvg.

0516-1126 mirrorvg: rootvg successfully mirrored, user should perform
bosboot of system to initialize boot records. Then, user must modify
bootlist to include: hdisk0 hdisk1.
//查看mirror是否完成了
//如何查看硬盘是否做过mirror?
#lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 2 4 2 open/syncd N/A
hd8 jfslog 1 2 2 open/syncd N/A
hd4 jfs 1 2 2 open/syncd /
hd2 jfs 33 66 2 open/syncd /usr
hd9var jfs 1 2 2 open/syncd /var
hd3 jfs 1 2 2 open/syncd /tmp
hd1 jfs 1 2 2 open/syncd /home
Hd10opt jfs 4 8 2 open/syncd /opt
说明: LPx2=PP 表示一份镜像,LP=PP表示没做镜像,LPx3=PP表示有二份镜像。
LPx2=PP,是指一份LP的数据,对应两份PP的数据,物理上是有2份拷贝的
# lsvg rootvg
VOLUME GROUP: rootvg VG IDENTIFIER: 000a1ddc00004cf36bcd3
VG STATE: active PP SIZE: 32 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 1084 (34688 megabytes)
MAX LVs: 256 FREE PPs: 994 (31808 megabytes)
LVs: 9 USED PPs: 90 (2880 megabytes)
OPEN LVs: 8 QUORUM: 1
TOTAL PVs: 2 VG DESCRIPTORS: 3
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 2 AUTO ON: yes
MAX PPs per VG: 32512 0
MAX PPs per PV: 1016 MAX PVs: 32
LTG size (Dynamic): 256 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
说明:
QUORUM: 1 表示没有,
QUORUM: 2 表示有。

# bootlist -m normal -o
hdisk0
# bosboot -ad /dev/hdisk1
# bootlist -m normal hdisk1 hdisk0
# bootlist -m normal -o
hdisk1
hdisk0
# shutdown -Fr
说明:AIX:rootvg镜像。使两个硬盘均可启动。好处:主启动硬盘坏时,可以用另一硬盘启动机器.
备注:
chdev -l hdisk1 -a pv=yes是安全的,如果它运行不成功,那创建VG肯定失败,因为mkvg就是调用的它
后记:
# unmirrorvg rootvg hdisk1 //把rootvg 的mirror去掉
# chpv -c hdisk1 //去掉hdisk1的引导信息
# reducevg rootvg hdisk1 //从rootvg中删除hdisk1
#rmdev -dl hdisk1 //删除硬件设备(加-R表示强制删除)
# bootlist -m normal hdisk0
备注:
1、如果向unmirrorvg rootvg不指定盘是很危险的,一般不指定盘不要用此命令
具体操作步骤如下 :
a) 查看一下当前可用的硬盘:
# lspv
hdisk0 0002d74f0e69d97a rootvg
hdisk1 0002d74fea8ad09d none
hdisk2 000214dadca3a694 dbbakvg
hdisk3 0002d74f1e67ac3b dbbakvg
在此例中,hdisk0是系统安装后默认使用的硬盘,而hdisk1最后的一项属性显示为“none”,说明此硬盘未被任何VG使用,可以用它来做rootvg的
镜像。
b) 检查 hdisk1 是否可作为由 AIX 支持的引导设备:
# bootinfo -B hdisk1
如果此命令返回值 1,则选择的磁盘可以由 AIX 引导。任何其它值表示 hdisk1 不是 rootvg 制作镜像的候选。
c) 扩展rootvg以包含hdisk1:
# extendvg rootvg hdisk1
如果hisk1之前被其他VG用过,可以用 -f 参数#extendvg -f rootvg hdisk1
d) 取消VG中的物理卷限额管理(在VG中只要有任一PV有效,此VG就可用):
# chvg -Qn rootvg
运行之后,再用lsvg rootvg查看,QUORUM项的值将是1
e) 对rootvg进行镜像操作
# mirrorvg –c 2 rootvg
此项工作所需要的时间与rootvg当前所用的空间大小有关,实际操作中,95 GB的大小,用了2个小时。
f) 在rootvg的两块盘上创建引导信息
# bosboot –ad hdisk0
# bosboot –ad hdisk1
g) 设备系统启动设备的顺序
# bootlist–m normal hdisk0 hdisk1 cd0
到此,rootvg的镜像工作就完成了。
更换硬盘问题
步骤1:先unmirror,然后把hdisk2从datavg中退出,再用rmdev把hdisk2删掉;
步骤2:关机,取出hdisk2,把新的73G硬盘放入,开机;
步骤3:把新的73G硬盘加入datavg,再migratepv -l hdisk1 hdisk2 把hdisk1的内容复制到新硬盘上;
步骤4:然后用同样的办法把hdisk1替换掉。
AIX下镜像的制作与取消
前提:文中hdiskn代表新加入的磁盘
大致步骤是:添加新硬盘、扫描设备、查看设备是否正常、添加pvid、加入卷组、做mirror、给新硬盘添加引导信息、重新设置引导顺序。
1.lsp查看物理卷。这是没有发现新硬件,我们就开始扫描设备
cfgmgr -v
2.发现新硬件后,这是我们要看下物理卷的属性。
lsdev -Cc disk
这时我们会发现新的物理卷没有pvid
3.添加pvid。
chdev -l hdiskn -a pv=yes
hdiskn里面的N表示一个变量,它代表新磁盘的标号
我们也可以使用chdev -l hdisk1 -a pv=clear来删除pvid
4.加入卷组
extendvg rootvg hdiskn //如果hdiskn内有数据在做extend的时侯,hdiskn里面的东西就没了

这部也是两个磁盘做mirror的前提,因为做镜像的所有磁盘必须在同一个卷组里面。
5.创建mirror
mirrorvg -c 2 rootvg
做mirror只有两种情况,就2个或3个盘做镜像。如果是两个的话我们也可以直接这样做:
mirrorvg rootvg 因为默认是两个也没有必要指定源和目的磁盘。但如果是3块磁盘做镜像就必须指定源和目的磁盘。
mirrorvg -c 3 rootvg hdisk0 hdisk1
6.验证mirror是否创建成功
lsvg -l rootvg
查看里面的pps和pvs的对应关系.1:1表示没有成功、1:2表示成功做双磁盘镜像、1:3表示成功做3磁盘镜像。
也可以用lsvg rootvg来查看,主要时看里面的QUORUM
QUORUM: 1 表示没有,
QUORUM: 2 表示有。
7.给新磁盘做新的引导信息
查看当前的引导顺序
bootlist -m normal -o
给hdiskn添加引导信息
bosboot -ad /dev/hdiskn
重新设置引导顺序,让hdiskn为最优先。看能不启动系统
bootlist -m normal hdiskn hdisk0 cdrom
8.重新启动下系统
shutdown -Fr
撤销mirror
1.把rootvg 的mirror去掉
unmirrorvg rootvg hdiskn
2.去掉hdiskn的引导信息
chpv -c hdisk1
3.重新设置下启动顺序
bootlist -m normal hdisk0
1,U盘安装
这个命令会清除原有数据linux培训,所以要先备份U盘数据
dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=64k
2,安装freebsd
将BIOS设置成U盘启动引导。将U盘插入,启动就可以看到freebsd的安装界面。具体安装步骤可参考官方wiki
3,Grub2引导多系统
3.1 编译安装grub2

cd /usr/ports/sysutils/grub2
make install
3.2 将grub2地引导安装到硬盘地第一个扇区
gpart show ad0
ad0需要按照你自己地实际地硬盘作修改。
因为之前安装系统地时候,boot分区地名字叫freebsd-boot,grub2能识别的是bios-boot,所以要直接修改:
gpart modify -i 1 -t !2-6E6F-744E-656564454649 ad0
grub-install –modules=part_gpt /dev/ad0
3.3 配置grub2
grub-mkconfig
grub-mkconfig -o /boot/grub/grub.cfg
或者自己添加menuentry到/boot/grub/grub.cfg
menuentry “FreeBSD /boot/loader” –class freebsd –class bsd –class os {
insmod ufs2
set root='(hd0,2)’
search –no-floppy –fs-uuid –set 4cb05ace512b3d97
kfreebsd /boot/loader
PS:解决U盘文件变成只读的问题
为FreeBSD制作U盘启动盘前发现了在Ubuntu系统下U盘文件变成只读的问题,在拷贝文件的时候发现文件不能复制,sudo chmod也不行。
原来u盘在ubuntu下是自动挂载的,udev会监听。但有时候u盘挂载后,只挂载为只读。
其中一种原因是因为u盘的文件系统已损坏,系统为了防止文件系统进一步损坏,因而挂载为只读。
可以执行
tail -f /var/log/syslog,然后插入u盘,则会看到系统检测信息。
如果你看到 FAT: Filesystem error (dev sdb1)这种信息,说明你的U盘损坏。
先umount掉这个U盘
umount /media/** (**是你的U盘名,可以在media目录下查看)
再实行
sudo dosfsck -v -a /dev/sdb1(sdb1要改成你自己的U盘设备号,可以用sudo fdisk -l查看)
dosfsck是检查修复ms-dos系统,也就是FAT系统的命令, -a 表示自动修复 -v 表示打印出信息
