无忧启动论坛

标题: 阿猫,unix或linux的磁盘uuid是如何获得的? [打印本页]

作者: secowu    时间: 2010-4-19 21:16
标题: 阿猫,unix或linux的磁盘uuid是如何获得的?
你能否写个小程序,以取得磁盘的UUID?
另外你那个bootice是否可以在ubuntu下运行?
如果能够实现,希望一并加入显示uuid的功能。
谢谢
作者: secowu    时间: 2010-4-19 21:18
# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default                0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout                10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
#color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title                Windows 95/98/NT/2000
# root                (hd0,0)
# makeactive
# chainloader        +1
#
# title                Linux
# root                (hd0,1)
# kernel        /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=3a0f9076-5212-4c31-b550-902e2cb10e3a ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=3a0f9076-5212-4c31-b550-902e2cb10e3a

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=0x317 resume=/dev/hda5
# defoptions=vga=0x317

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false

## ## End Default Options ##

splashimage=3a0f9076-5212-4c31-b550-902e2cb10e3a(hd0,10)/boot/grub/splash.xpm.gz

title                Ubuntu 8.10, kernel 2.6.30.9
uuid                3a0f9076-5212-4c31-b550-902e2cb10e3a
kernel                (hd0,10)/boot/vmlinuz-2.6.30.9 root=UUID=3a0f9076-5212-4c31-b550-902e2cb10e3a ro quiet splash
initrd                (hd0,10)/boot/initrd.img-2.6.30.9
quiet

title                Ubuntu 8.10, kernel 2.6.30.9 (recovery mode)
uuid                3a0f9076-5212-4c31-b550-902e2cb10e3a
kernel                (hd0,10)/boot/vmlinuz-2.6.30.9 root=UUID=3a0f9076-5212-4c31-b550-902e2cb10e3a ro  single
initrd                (hd0,10)/boot/initrd.img-2.6.30.9

title                Ubuntu 8.10, memtest86+
uuid                3a0f9076-5212-4c31-b550-902e2cb10e3a
kernel                (hd0,10)/boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title                Other operating systems:
root


# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title                Windows NT/2000/XP (loader)
root                (hd0,0)
savedefault
makeactive
chainloader        +1
作者: secowu    时间: 2010-4-19 21:22
曾经测试过,重新安装UBUNTU,分区不变化,但UUID发生了变化。
不知何故,或者是偶然现象?
ubuntu挂载windows分区、uuid知识、修改卷标名称
   
UUID,全称Universally Unique Identifier
它是一个128位,16字节的值,并确保在时间和空间上唯一。它把硬件地址、时间以及随机数结合在一下起来确保其唯一性的。一般情况下,生成算法用计算机网卡的地址和一个60位的timestamp生成,时间是以100ns为时间间隔。例如,一台300PL 6862的计算机,主板集成的网卡的MAC地址为00-04-AC-2E-B7-DC,而UUID的最后六个字节也会是0004AC2EB7DC。
Ubuntu现在默认使用UUID值表示硬盘分区,在/etc/fstab中我们很容易看到:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/hda1
UUID=6286feb3-3037-4893-b0f1-8c9edba3c447 / ext3 defaults,errors=remount-ro 0 1
# /dev/hda5
UUID=45bdb727-57db-46c2-8b33-e2dc813c0e18 /media/mydoc ext3 defaults 0 2
# /dev/hda7
UUID=1bfc17a2-b39c-451b-8ce8-2b3bc13bf6e8 none swap sw 0 0
/dev/hdd /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/ /media/floppy0 auto rw,user,noauto 0 0
在GRUB启动项中也有这样的表示,
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=6286feb3-3037-4893-b0f1-8c9edba3c447 ro
quiet splash locale=zh_CN
与以前使用hda*相比,使用UUID的好处是只要分区大小没有调整,它的UUID值就是固定的,也就是说,即使把其他分区全删掉,也不影响这一分区的挂载。
那么,如果分区改变了怎么办?有时侯需要调整分区大小,这样它的UUID值也就发生了变化,此时需要在/etc/fstab中将该分区的UUID值修改为当前值,否则无法自动挂载。
查询分区UUID值可以使用下面的命令:
ls -al /dev/disk/by-uuid
结果是如下的形式:
总用量 0
drwxr-xr-x 2 root root 100 2007-04-06 20:09 .
drwxr-xr-x 5 root root 100 2007-04-06 20:09 ..
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 1bfc17a2-b39c-451b-8ce8-2b3bc13bf6e8 -> ../../sda6
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 6286feb3-3037-4893-b0f1-8c9edba3c447 -> ../../sda1
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 8c6640b5-9c65-44d7-8f09-771b8c589922 -> ../../sda5
这是我的硬盘分区的UUID,可见,sda5调整大小后,UUID发生了变化,将fstab中对应的部分该掉,OK。
新驱动程序的挂载选项:
你需要开辟一块空间来挂载NTFS卷,然后就可以进行挂载操作了。
mkdir /mnt/windows
NLS(本地语言支持)决定字符是如何被显示的。你可以选择像Unicode一样可以表示所有字符的utf8,或者你自己的代码页,比如iso8859-1(西欧)、iso8859-2(中欧)、gb2312(简体中文)、iso8859-8(希伯来文)。nls=gb2312
参数umask同时改变文件和路径两者的权限,fmask以同样的方式作用于文件而dmask作用于路径,这些选项也可以被组合使用。
Linux 默认对于大小写字母是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对于NTFS卷具有和Windows相同的表现,那么就应将case_sensitive选项设置为false。将选项设置为true将使驱动具有和Linux类似的表现(默认设置)。 case_sensitive=false
已挂载的NTFS卷上所有文件默认都是root所有的。如果提供uid参数就可以设置文件的所有者。这些参数可以是/etc/passwd中的任何用户名,或者任何表示用户id的数字。
mount /dev/hda1 /mnt/windows -t ntfs -o umask=0222 -o uid=1000 -o case_sensitive=false -o nls=gb2312umask是对权限的过滤器,因此它的工作方式和chmod恰好相反。全部权限等价与777(rwxrwxrwx),umask值 0222(-w–w–w-)则代表权限555(r-xr-xr-x)。考虑到安全的原因,默认的umask被设置为0077。比如常用的0027= 750, 0077=700
操作完成以后,你可以使用以下任何一个命令卸载分区:
umount /mnt/windows
或者 : umount /dev/hda1
编辑ext2/ext3/FAT32/NTFS磁盘分区卷标
据不同的磁盘分区类型,分别有3个程序可供选用.
Mtools 适用于 FAT32 格式分区.
ntfsprogs 适用于 NTFS 格式分区.
e2label适用于 ext2 和 ext3 型格式分区.
以上程序的具体使用说明分别如下:
使用mtools编辑FAT32磁盘分区卷标
我想更改由系统自动挂载的USB设备中的FAT32分区卷标.我有两个外接硬盘驱动器(一个日常家用,一个公司工作用),其中一个是iPod.这两个驱动器都被系统以”sda1”或”sda2”等名称挂载于”/media”目录下,在电脑里我很难通过这些名字辨认出哪个文件夹是对应哪个驱动器.后来,我发现更改这些驱动器上的FAT32分区卷标不是件容易事.所以我觉得有必要将我是如何修改这些FAT32分区卷标的过程写下来.方便那些遇到同样问题的人.讲解之前首先明白:系统会将外接的驱动器自动挂载到”/media/”目录下,以”sda1”类似的卷标名命名分区,为了容易区别各分区,我们需要修改默认的卷标
按如下步骤一步一步操作即可更改FAT分区卷标:
操作指导
1) 安装mtools 软件包
sudo apt-get install mtools
2) 系统自动装载插入的USB设备后,可以用如下命令查看新设备相关信息:
mount
and Note down where it says “sda1″ or similar
显示信息中”sda1”或与之相似的字段即是系统分配给设备的名字。
3) 复制”/etc”目录下mtools.conf文件为新文件"~/.mtoolsrc"
cp /etc/mtools.conf ~/.mtoolsrc
4) 编辑刚复制的”~/.mtoolsrc”文件,在最后一行加入如下命令行:
drive i: file="/dev/sda2"
上面命令行中字段”sda2”应根据实际情况更改为你在第二步操作中所看到的新设备名称。
5) 更改命令提示符路径到”i:”盘:
mcd i:
6) 查看”i:”当前的卷标
sudo mlabel -s i:
7) 更改”i:”盘原始卷标为你喜欢的新卷标名:
sudo mlabel i:my-ipod
你可以将上述命令行操作中的”my-ipod”字段替换为你喜欢的名字,用以代表插入的USB设备。
8) 检查更改是否成功
sudo mlabel -s i:
经过以上操作,电脑显示如下信息: Volume label is MY-IPODYou’re
恭喜!卷标修改已经成功.下次插入USB设备后,你可以在目录” /media/MY-IPOD”下找到你USB设备上的文件。
使用ntfsprogs 修改NTFS分区卷标
操作指导
1) 安装ntfsprogs软件包
sudo apt-get install ntfsprogs
2) NTFS分区驱动器插入后被自动装载,可以用如下命令查看此新设备相关信息:
mount
显示信息中”sda1”或与之相似的字段即是系统分配给新设备的名字。
3) 更改原始卷标为你喜欢的新卷标名:
sudo ntfslabel /dev/sda1 newlabel
replace newlabel with what you would like to name the usb drive / Harddisk
用你喜欢的卷标名替换此命令中的单词”newlabel” 。
和FAT分区不同,更改NTFS分区卷标后你必须卸下此设备(卸载步骤:系统->管理->磁盘管理->硬盘分区下面的”禁用”按钮)
3) 检查更改是否成功
重启电脑后查看相应NTFS分区卷标是否改变.如果你更改的是USB设备卷标,你需要重新插入设备。
使用e2label更改 ext2 或ext3 分区卷标
操作指南
1) 设备被自动加载后,可以用如下命令查看此新设备相关信息:
mount
显示信息中”sda1”或与之相似的字段即是系统分配给新设备的名字。
2) 更改原始卷标为你喜欢的新卷标名:
sudo e2label /dev/sda1 newlabel
用你喜欢的卷标名替换此命令中的单词”newlabel”
更改分区卷标后你必须卸下此设备(卸载步骤:系统->管理->磁盘管理->硬盘分区下面的”禁用”按钮)。
3) 检查更改是否成功:
重启电脑后查看相应分区卷标是否改变.如果你更改的是USB设备卷标,你需要重新插入设备。

作者: 坏小子    时间: 2010-4-19 21:35
不知道bootice在wine下能不能运行?
作者: 坏小子    时间: 2010-4-19 21:36
在百度上搜索下: 

 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
  UUID由以下几部分的组合:
  (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
  (2)时钟序列
  (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
  UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3