在这篇日志安装Oracle 10g XE on Debian/Ubuntu中,在 apt 安装 oracle-xe-client 时,有可能会出现如下的错误,提示 Swap 分区没有达到要求的大小,安装无法继续。
引用
This system does not meet the minimum requirements for swap space. Based on the amount of physical memory available on the system, Oracle Client 10g Express Edition requires 1024 MB of swap space. This system has 951 MB of swap space. Configure more swap space on the system and retry the installation.
下面我们就来增加系统的 Swap 大小。
1.首先用命令free查看系统内 Swap 分区大小。
free -m
引用
total used free shared buffers cached
Mem: 1002 964 38 0 21 410
-/+ buffers/cache: 532 470
Swap: 951 32 929
可以看到 Swap 只有951M,不符合 Oracle-xe-client 的安装要求。
2.创建一个 Swap 文件。
mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=100000
出现下列提示,上面命令中的 count 即代表swap文件大小。
引用
记录了 100000+0 的读入
记录了 100000+0 的写出
102400000 字节 (102 MB) 已复制,0.74704 秒,137 MB/秒
把生成的文件转换成 Swap 文件
sudo mkswap swapfile
引用
Setting up swapspace version 1, size = 102395 kB
no label, UUID=09fde987-5567-498a-a60b-477e302a988b
3.激活 Swap 文件。
sudo swapon swapfile
再次查看 free -m 的结果。
引用
total used free shared buffers cached
Mem: 1002 967 34 0 22 410
-/+ buffers/cache: 534 467
Swap: 1053 32 1021
添加成功。
扩展:
如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo swapoff swapfile
如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。
引用
swapfilepath swap swap defaults 0 0
在Linux下的Bochs没有bochsdbg.exe(调试模式),bochs.exe这些东西。当需要调试的时候,需要在编译的时候指定可调试–enable-debugger –enable-disasm 选项,即可使用bochs调试了,即,在configure时指定上述两个参数。
下面是某个blogger的例子: ./configure –with-all-libs –prefix=/usr/local/bochs-2.3.5 –enable-show-ips –enable-x86-debugger –enable-cdrom –enable-debugger –enable-disasm
具体的调试命令还正准备学习。呵呵。
利用BIOS的0×13号中断,我们可以从磁盘拷贝数据到内存。
BIOS自检的时候,就把磁盘的信息(所有硬件信息)都获取了。所以之后我们就可以通过BIOS中断来获取这些数据。但是要如何取得这些数据呢?
在调用中断int之前,我们要设置一些寄存器,这些寄存器就可以看作是参数,当然执行int调用以后,也要从这些寄存器获得参数。
这里顺便说一下,IBM PC机 启动后,bios会自己把磁盘的引导区即 0柱面 0磁道 1扇区 ,512字节(含引导程序和分区信息)加载到内存的0×07c0的位置。
load_setup:
mov dx,#0×0000 ! drive 0, head 0
mov cx,#0×0002 ! sector 2, track 0
mov bx,#0×0200 ! address = 512, in INITSEG
mov ax,#0×0200+SETUPLEN ! service 2, nr of sectors
int 0×13 ! read it
jnc ok_load_setup ! ok – continue
mov dx,#0×0000
mov ax,#0×0000 ! reset the diskette
int 0×13
j load_setup
上面的一段代码摘自 linux 0.11 内核的源码。我们可以看到
各个寄存器所保存的参数:
dl 驱动器号(7代表硬盘) dh磁头号 cl 扇区号(0-5,6-7是柱面号高2位) ch 磁道号 bx 缓存(内存地址) ah 服务号(表示读磁盘) 。如果出错 ,CF置位。
注意一点,数据拷贝到内存的 es:bx的地方。所以注意设置es
若集合C的元素本身都是结合X的子集,则称C为集合X上的一个集族。
设有一个集合A,称为指标集。使得对于指标集A中的每一个元素£,有X上的一个子集B£与之对应,这样就得到X上的一个集族。
B£ 即为 C
可以这样想,那么就是
X={张三,李斯,王二,赵六,小五,大头} —-集合X
好人={张三,李斯,赵六} —集合X的子集
坏人={王二,大头,小五} —-结合X的子集
C={好人,坏人} —-集族
C1={好人}
C2={坏人}
A={张三,李斯,赵六} —-指标集
集族是一个集合的分类集合。而指标集是指确定分类的具体集合元素。
在指标集A确定的集族应该是C1,因为A里的元素都是属于子集好人。