fstab-sync实践
时间:2006-11-03 来源:适兕
代码是最好的(有时是唯一的)文档!这是一位高手的话,也是靠经验积累到的,其博客地址http://pczou.bokee.com/index.html,看了还是很有感受的,尽管我本身是没有什么经验的。http://pczou.bokee.com/5518694.html
恰好今天自己的工作笔记本出了点小状况,就顺着这位大侠的思路走走。走好走坏全靠自己的悟性了!就fstab-sync引出的一系列话题。
由于最初规划自己的分区的时候,将大约5GB空间剩余到了3个主分区和1个扩展分区之外,而我的第一个主分区是给boot分区的,当我想利用这5G空间的时候,却发现了死活不能将之mkfs.ext3或reiserfs,在此要谢谢我的同事,是他帮助我发现了问题之所在。并作了parted和fdisk的具体分析。
那么我考虑到如此,决定放弃100兆,选用5吉,之所以考虑此是我的机器较新,没有对引导分区必须放到磁盘的前1024字节的BIOS限制,是的,我将这删掉,然后,将磁盘的最后的那部分作为ha1主分区,看起来很是别扭,但是可用!
那么我接下来作的就是将原来的boot下的文件,放到另外的分区,并且可以让GRUB找到!具体很简单的。。。在此不详述。。。。。。
我只说我改过来之后,重新引导现有的系统出现的问题。除了根分区之外其他的分区都没有正常加载,比如/usr,没有这个去,我们几乎什么也不能做。。。系统此时默认已经进入single模式,mount -a
fstab-sync --verbose详细操作请自己参看man...5
下面是我照着本文引子部分所提到的操作,这只是给了自己一个方向。确实熟悉系统函数和模块还是需要一定的知识积累的。比如所提到的HAL,这是freedesktop.org的项目。C,应该从内核看起。。。。。
当然,如果是一个脚本的调用,可能就简单多了。
[root@lee sbin]# locate fstab-sync
/usr/share/man/man8/fstab-sync.8.gz
/usr/sbin/fstab-sync
/etc/hal/device.d/50-fstab-sync.hal
[root@lee sbin]# strings /usr/sbin/fstab-sync
/lib/ld-linux.so.2
QIE} y
PTRh
[^_]
[^_]
[^_]
s GF
uu;u
[^_]
,[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
,[^_]
,[^_]
[^_]
[^_]
fs_table_line_update_pointer
fs_table_parse_line
remove_udi
fstab-sync.c
%d: Line ended prematurely
line + i != p
.fstab.hal.
LABEL=
block.device
/etc/mtab
%d: Could not stat '%s': %s
%s/%s
%s/%s%d
/etc/fstab
%s,%s
block.storage_device
added mount point %s for %s
volume
block.no_partitions
removed mount point %s for %s
remove an entry from fstab
fstab-sync
clean
add an entry to fstab
remove
verbose
Help options:
HALD_VERBOSE
HALD_STARTUP
HAL_PROP_INFO_CAPABILITIES
HALD_SHUTDOWN
%d: %s entering; %s udi=%s
%d: managed primary='%s'
%d: managed secondary='%s'
%d: use_managed=%d
%d: mount_root='%s'
storage
%d: Lock released
%d: Lock acquired
%d: %s exiting; %s udi=%s
%d: Could not parse data from '%s'
%d: Could not read from '%s': %s
%d: using temporary file '%s'
%d: Could not open temporary file for writing in directory '%s': %s
%d: Found %s pointing to %s in/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
%d: Failed to rename '%s' to '%s': %s
%d: entering add_hal_device, udi='%s'
%d: Could not add entry to fstab file: block device %s already listed
%d: drive: desired_mount_point='%s', fstype='%s', options='%s', mount_point='%s', normalized_desired_mount_point='%s'
%d: volume: desired_mount_point='%s', fstype='%s', options='%s', mount_point='%s'
%d: added mount point '%s' for device '%s'
%d: Failed to remove mount point '%s': %s
%d: Could not remove device '%s' with UDI '%s' from fs table: not found
%d: removed mount point for device '%s'
line->mount_point != ((void *)0)
%d: Seeing if line for dev='%s',mnt='%s' should be removed
%d: is_generated=%d, is_mounted=%d
removed all generated mount points
Remove all generated entries from fstab
Report detailed information about operation progress
/org/freedesktop/Hal/devices/computer
%d: ###################################
%d: Error acquiring lock '%s'; bailing out
%d: Acquiring advisory lock on /etc/fstab
%d: Releasing advisory lock on %s
%d: couldn't open %s O_RDONLY; bailing out
%d: Error releasing lock '%s'
libpopt.so.0
poptGetContext
poptGetArgs
_DYNAMIC
poptGetNextOpt
_init
poptFreeContext
_fini
poptHelpOptions
_GLOBAL_OFFSET_TABLE_
_Jv_RegisterClasses
poptPrintHelp
__gmon_start__
libhal.so.0
hal_free_string
hal_device_query_capability
hal_device_set_property_string
hal_device_get_property_string
hal_initialize
hal_shutdown
hal_device_get_property_bool
libhal-storage.so.0
hal_drive_free
hal_drive_get_device_file
hal_volume_policy_get_mount_options
hal_drive_policy_default_get_mount_root
hal_volume_policy_is_mountable
hal_drive_policy_default_get_managed_keyword_primary
hal_drive_policy_get_mount_options
hal_drive_policy_get_mount_fs
hal_volume_get_label
hal_volume_policy_get_desired_mount_point
hal_drive_policy_default_get_managed_keyword_secondary
hal_drive_policy_default_use_managed_keyword
hal_volume_free
hal_volume_from_udi
hal_drive_policy_get_desired_mount_point
hal_drive_from_udi
hal_drive_policy_is_mountable
hal_volume_policy_get_mount_fs
hal_volume_get_device_file
libdbus-1.so.0
libc.so.6
strcpy
strerror
snprintf
getenv
getpid
memcpy
readlink
malloc
rmdir
abort
rename
strrchr
calloc
write
fprintf
strcat
getmntent_r
strstr
flock
read
openlog
strncmp
strncpy
unlink
realloc
__strdup
setmntent
endmntent
__xstat64
memset
time
__assert_fail
syslog
strcmp
fclose
stderr
srandom
__lxstat64
fputc
__ctype_b_loc
__strndup
getmntent
__errno_location
_IO_stdin_used
__libc_start_main
strlen
mkdir
fopen64
_edata
__bss_start
_end
GLIBC_2.3
GLIBC_2.1
GLIBC_2.2
GLIBC_2.0
libnsl.so.1
/lib/ld-linux.so.2
[root@lee sbin]# str
strace strings strip
[root@lee sbin]# strace /usr/sbin/fstab-sync
execve("/usr/sbin/fstab-sync", ["/usr/sbin/fstab-sync"], [/* 39 vars */]) = 0
uname({sys="Linux", node="lee.xxxxx(此处是主机名,隐去)", ...}) = 0
brk(0) = 0x9379000
access("/etc/ld.so.preload", R_OK) = 0
open("/etc/ld.so.preload", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
old_mmap(NULL, 22, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb7fff000
close(3) = 0
munmap(0xb7fff000, 22) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=112748, ...}) = 0
old_mmap(NULL, 112748, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fe4000
close(3) = 0
open("/usr/lib/libpopt.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\203"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=28412, ...}) = 0
old_mmap(0x587000, 30032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x587000
old_mmap(0x58e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x58e000
close(3) = 0
open("/usr/lib/libhal.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\v\235"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=27656, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe3000
old_mmap(0x9cf000, 25116, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x9cf000
old_mmap(0x9d5000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x9d5000
close(3) = 0
open("/usr/lib/libhal-storage.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\255"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=26352, ...}) = 0
old_mmap(0x7d9000, 27712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7d9000
old_mmap(0x7df000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7df000
close(3) = 0
open("/usr/lib/libdbus-1.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \330\241"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=391368, ...}) = 0
old_mmap(0xa18000, 393168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xa18000
old_mmap(0xa77000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5e000) = 0xa77000
close(3) = 0
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\17g"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1460321, ...}) = 0
old_mmap(0x65c000, 1215644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x65c000
old_mmap(0x77f000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x123000) = 0x77f000
old_mmap(0x783000, 7324, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x783000
close(3) = 0
open("/lib/libnsl.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320t\265"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=95536, ...}) = 0
old_mmap(0xb54000, 88064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb54000
old_mmap(0xb66000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0xb66000
old_mmap(0xb68000, 6144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb68000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe2000
mprotect(0x77f000, 4096, PROT_READ) = 0
mprotect(0x654000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7fe2b40, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7fe4000, 112748) = 0
getpid() = 18055
brk(0) = 0x9379000
brk(0x939a000) = 0x939a000
socket(PF_FILE, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/dbus/system_bus_socket"}, 110) = 0
fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl64(3, F_GETFD) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
getuid32() = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
poll([{fd=3, events=POLLOUT, revents=POLLOUT}], 1, -1) = 1
write(3, "\0", 1) = 1
write(3, "AUTH EXTERNAL 30\r\n", 18) = 18
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "OK\r\n", 2048) = 4
poll([{fd=3, events=POLLOUT, revents=POLLOUT}], 1, -1) = 1
write(3, "BEGIN\r\n", 7) = 7
writev(3, [{"l\1\0\0\200\0\0\0\0\0\0\0\1\0\0\0\1o\0\0\25\0\0\0/org/"..., 128}, {"", 0}], 2) = 128
gettimeofday({1162547870, 132927}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0P\0\0\0\16\0\0\0\1\0\0\0\5u\0\0\1\0\0\0\10s\0\0"..., 2048) = 260
read(3, 0x937af08, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT, revents=POLLOUT}], 1, -1) = 1
writev(3, [{"l\1\0\0\200\0\0\0\177\0\0\0\2\0\0\0\1o\0\0\25\0\0\0/or"..., 128}, {"s\0\0\0v\0\0\0type=\'signal\',interface="..., 127}], 2) = 255
gettimeofday({1162547870, 136213}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0P\0\0\0\0\0\0\0\3\0\0\0\10s\0\0\0\0\0\0\0\5u\0\2"..., 2048) = 80
read(3, 0x937b718, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT, revents=POLLOUT}], 1, -1) = 1
writev(3, [{"l\1\0\0\240\0\0\0*\0\0\0\3\0\0\0\1o\0\0%\0\0\0/org/fre"..., 160}, {"s\0\0\0!\0\0\0storage.policy.default.m"..., 42}], 2) = 202
gettimeofday({1162547870, 139723}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0@\0\0\0\17\0\0\0\332\0\0\0\6s\0\0\5\0\0\0:1.13\0"..., 2048) = 79
read(3, 0x937af08, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT, revents=POLLOUT}], 1, -1) = 1
writev(3, [{"l\1\0\0\250\0\0\0003\0\0\0\4\0\0\0\1o\0\0%\0\0\0/org/f"..., 168}, {"s\0\0\0*\0\0\0storage.policy.default.u"..., 51}], 2) = 219
gettimeofday({1162547870, 143175}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0@\0\0\0\2\0\0\0\333\0\0\0\6s\0\0\5\0\0\0:1.13\0"..., 2048) = 66
read(3, 0x937b718, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT, revents=POLLOUT}], 1, -1) = 1
writev(3, [{"l\1\0\0\240\0\0\0007\0\0\0\5\0\0\0\1o\0\0%\0\0\0/org/f"..., 160}, {"s\0\0\0.\0\0\0storage.policy.default.m"..., 55}], 2) = 215
gettimeofday({1162547870, 146638}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0@\0\0\0\20\0\0\0\334\0\0\0\6s\0\0\5\0\0\0:1.13\0"..., 2048) = 80
read(3, 0x937af08, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT, revents=POLLOUT}], 1, -1) = 1
writev(3, [{"l\1\0\0\240\0\0\0009\0\0\0\6\0\0\0\1o\0\0%\0\0\0/org/f"..., 160}, {"s\0\0\0000\0\0\0storage.policy.default.m"..., 57}], 2) = 217
gettimeofday({1162547870, 150109}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 15000) = 1
read(3, "l\2\1\0@\0\0\0\16\0\0\0\335\0\0\0\6s\0\0\5\0\0\0:1.13\0"..., 2048) = 78
read(3, 0x937b718, 2048) = -1 EAGAIN (Resource temporarily unavailable)
write(2, "Usage:", 6Usage:) = 6
write(2, " fstab-sync", 11 fstab-sync) = 11
write(2, " [OPTION...]\n", 13 [OPTION...]
) = 13
write(2, " -a, --add=UDI ", 23 -a, --add=UDI ) = 23
write(2, "add an entry to fstab\n", 22add an entry to fstab
) = 22
write(2, " -r, --remove=UDI ", 23 -r, --remove=UDI ) = 23
write(2, "remove an entry from fstab\n", 27remove an entry from fstab
) = 27
write(2, " -c, --clean ", 23 -c, --clean ) = 23
write(2, "Remove all generated entries fro"..., 40Remove all generated entries from fstab
) = 40
write(2, " -v, --verbose ", 23 -v, --verbose ) = 23
write(2, "Report detailed information abou"..., 53Report detailed information about operation progress
) = 53
write(2, "\nHelp options:\n", 15
Help options:
) = 15
write(2, " -?, --help ", 23 -?, --help ) = 23
write(2, "Show this help message\n", 23Show this help message
) = 23
write(2, " --usage ", 23 --usage ) = 23
write(2, "Display brief usage message\n", 28Display brief usage message
) = 28
exit_group(1) = ?
相关阅读 更多 +