硬盘相关知识

评论关闭

1.1 硬盘编号

IDE1 /dev/hda  /dev/hdb

IDE2 /dev/hdc /dev/hdd

由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动,
因此这些接口磁盘装置文件名都是/dev/sd[a-p]来命名的
两个SATA磁盘分别安插在主板上癿SATA1, SATA5插槽上。
1. SATA1插槽硬盘名:/dev/sda
2. SATA5插槽硬盘名:/dev/sdb
3. USB磁盘(开机完成后被系统捉到):/dev/sdc
1.2 硬盘引导区
磁盘的第一个扇区主要记录了两个重要信息,分别是:
 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes
 分割表(partition table):记录整颗硬盘分割状态,有64 bytes
分割槽的最小单位为磁柱(cylinder)
假设硬盘装置文件名为/dev/hda时,
 P1:/dev/hda1
 P2:/dev/hda2
 P3:/dev/hda3
 P4:/dev/hda4
p是与实际物理结构有关。且真实只有4个分割区域。
假设硬盘的四个分割记录区仅使用到两个,P1为主要分割,而P2则为延伸分割。
延伸分割的目的:是使用额外的扇区来记录分割信息,延伸分割本身不能格式化。
然后我们可以通过延伸分割所指向的那个区块继续作分割的记录。
假设那个区块有继续分割出五个分割槽, 这五个由延伸分割继续切出来的分割槽,就被称为逻辑分割槽(logical partition)。
分割槽在Linux系统中的装置文件名分别如下:
 P1:/dev/hda1
 P2:/dev/hda2
 L1:/dev/hda5
 L2:/dev/hda6
 L3:/dev/hda7
 L4:/dev/hda8
 L5:/dev/hda9
装置文件名没有/dev/hda3不/dev/hda4呢?因为前面四个号码都是保留给Primary或Extended使用。
所以逻辑分割槽的装置名称号码就由5号开始了!
 主要分割与延伸分割最多可以有四笔(硬盘的限制)
 延伸分割最多叧能有一个(操作系统的限制)

逻辑分割的数量依操作系统而不同:
在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63号)
SATA硬盘则有11个逻辑分割(5号到15号)。
Primary+Extended最多只能有四个,其中Extended最多只能能有一个。

1.3 开机流程与主要启动记录区(MBR)
CMOS是记录各项硬件参数且嵌入在主板上面的储存器。
BIOS则是一个写入到主板上癿一个韧体(韧体就是写入到硬件上的一个软件程序)。
这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序了!
接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的设定去取得能够开机的硬盘, 读取MBR位置
。 MBR这个仅有446 bytes的硬盘容量里面会放置最基本的开机管理程序, 此时BIOS就功成圆满,而接下来就是MBR内的开机管理程
序的工作了。
开机流程
1. BIOS:开机主动执行的韧体,会识别第一个可开机的装置;
2. MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机管理程序;
3. 开机管理程序(boot loader):一支可读取核心档案来执行的软件;
4. 核心档案:开始操作系统的功能…
(1)开机需要开机管理程序, (2)开机管理程序可以安装在MBR及Boot Sector(每个分割槽都拥有自己的启动扇区)


使用py2exe问题总结

评论关闭

1.1 RuntimeError: Unable to import decimal

解决方法:

options = {
        'py2exe': {
            'includes': 'decimal',
            },
        }
参考文章:http://www.py2exe.org/index.cgi/PyODBC
1.2 在2003环境中不能运行:
安装runtime c++ 2008解决问题。vcredist_x86.exe
1.3 py2exe 配置文件
from distutils.core import setup
import glob
import py2exe
includes = ["encodings", "encodings.*","pyodbc","decimal"]
options = {"py2exe":
{   "compressed": 1,
"optimize": 2,
"includes": includes,
"bundle_files": 3
}
}
setup(
version = "0.1.0",
description = "hello",
name = "hello",
options=options,
# zipfile=None,
console=["mdbaccess.py"]
)

使用pyodbc不能远程连接mysql

评论关闭

使用pyodbc连接本地数据库,没有问题。但是远程就不行。
最后发现时没有安装相应驱动。
import pyodbc
# using mysql odbc driver http://www.mysql.com/downloads/connector/odbc/
# DRIVER={MySQL ODBC 5.1 Driver};Server=win03;Port=3306;Database=mydb;User=root; Password=123456;Option=3;

mysql开通远程连接

评论关闭

C:\Program Files\MySQL\MySQL Workbench CE 5.2.37>mysql -u root -p
Enter password: *********
grant all PRIVILEGES on mydb.* to root@’192.168.4.24′ identified by ‘123456′;
上面的语句表示将 mydb 数据库的所有权限授权给 root 这个用户,允许root用户从192.168.4.24这个 IP 进行远程登陆,并设置root用户的密码为123456 。
下面逐一分析所有的参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
mydb.* 表示上面的权限是针对于哪个表的,mydb 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
192.168.4.24 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
123456 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。
> flush privileges;