简介

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.

unix linux_unix与linux的区别_unix操作系统历史

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 表示有。

unix操作系统历史_unix linux_unix与linux的区别

# 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里面的东西就没了

unix linux_unix与linux的区别_unix操作系统历史

这部也是两个磁盘做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

unix操作系统历史_unix与linux的区别_unix linux

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 表示打印出信息

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复