免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: rhce2233
打印 上一主题 下一主题

是linux系统管理员就必须解决这个问题!!! [复制链接]

论坛徽章:
0
81 [报告]
发表于 2007-08-01 22:18 |只看该作者
其他的3个目录用 cp -av 就可以了。

论坛徽章:
0
82 [报告]
发表于 2007-08-01 22:32 |只看该作者
原帖由 ailms 于 2007-8-1 22:17 发表
大家这么快就放弃了,我还正在实验过程中呢,刚改完了 initrd.img ,把4个目录的数据都拷贝到 lv 上,准备重启

不过还是得说一句 :/dev 目录真不好搞,cp -a 都每用,会少拷贝将近 5000 个文件(rh9 下)
...


目前的系統採用 udev 了,所以其實 /dev 後續開機後都會動態建立....

至於在 initrd image 內不大需要有太多實體的 /dev 裝置檔,真的需要也只是幾個必備的清單項目 (ex: null,zero, hda*, sda* ..) 即可使用

還有剩下的問題給原本發問者去實驗吧,給原本發問者實驗測過後宣佈他的心得更好,要不然其實這篇討論文章內我並看不出來給了一堆 initrd image 的流程後對方有任何實質回饋資訊。

--

论坛徽章:
0
83 [报告]
发表于 2007-08-01 22:53 |只看该作者
1)、用 cp -av 把 /bin,/etc/,/lib 拷贝到3个 lv 上

2)、用 find /dev |xargs -i cp -av '{}' <new_dev_partition>

3)、修改 initrd.img ,把 /sbin/lvscan、pvscan 、vgscan、pvchange、lvcchange、vgchange 拷贝到 initrd 的
  
    sbin/

4)、用 ldd 找出上述命令所依赖的 lib 文件,并按照原来的路径结构放到 initrd 的 /lib 下

5)、把 /dev/my_vg/ 目录拷贝到 initrd 的 /dev 下,不过这步不知道有没有必要

6)、修改 /linuxrc,加入 :

在 pivot_root 动作之后加这些

#add here
echo "Loading lvm-mod.so"
insmod /lib/lvm-mod.so
echo "Trying to detect and Active any VG or LVs"
/sbin/vgscan && /sbin/vgchange -ay
mount -o defaults --ro -t ext3 /dev/my_vg/dev_lv /dev
mount -o defaults --ro -t ext3 /dev/my_vg/etc/_lv /etc
mount -o defaults --ro -t ext3 /dev/my_vg/lib_lv /lib
mount -o defaults --ro -t ext3 /dev/my_vg/bin_lv /bin

然后把 新的 initrd 压缩打包放到 /boot 下

最后编辑 /etc/fsatb ,加入上述4个分区

目前就想听大家还有什么意见吗?

想最好一次成功,不行又得重装 os

论坛徽章:
0
84 [报告]
发表于 2007-08-01 22:53 |只看该作者
回 kendust 兄 : 我用的是 rh9 ,所以设备文件应该还是静态建立的。

论坛徽章:
0
85 [报告]
发表于 2007-08-01 23:16 |只看该作者
好吧,继续技术。

回83楼,有问题!

a.在pivot_root之后 insmod /lib/lvm-mod.so 还有吗?

b.如果要在pivot_root之后才检查lvm的话,不需要理/sbin下面的那些东西,他们并没有跑掉,但如果他们有动态链接.so的话就麻烦了,因为之个时候/lib还没挂起来哦

其实你准备的是在pivot_root之前做这些事情

另外建议reboot之前做个rescue准备,如果一次boot不起来就得重装系统那还不累死人啊? 调试技巧难免有失败的,一次成功期望太高咯。

[ 本帖最后由 Cocal 于 2007-8-1 23:18 编辑 ]

论坛徽章:
0
86 [报告]
发表于 2007-08-01 23:30 |只看该作者
对了,忘记lz要的是把 /bin 独立出来,/sbin 还在原来的 / 上。

多谢 Cocal 了。

至于 insmod 的,我想在 pivot_root 之后或者之前都没有关系吧,反正要 vgscan / vgchange 之时再插入也不迟的

netman 兄建议我用 live cd ,不过这个没有接触过,那位朋友能否介绍一下呢?

论坛徽章:
0
87 [报告]
发表于 2007-08-01 23:47 |只看该作者
原帖由 ailms 于 2007-8-1 22:53 发表
回 kendust 兄 : 我用的是 rh9 ,所以设备文件应该还是静态建立的。


但是 initrd 內不需要所有的 device file,所以可以省略許多。

另外使用 lvm 部份,需要注意你複製使用的 vgscan 等等工具需要是 static linking 版本部份,要不然呼叫會有問題。我手上的發行版本有 lvm2.static 這類程式檔案,然後其他的 lvm 工具都是 symlink 到 lvm2 主程式,所以您要複製使用 lvm2.static 這類 static linking 版本問題就會少。

rh9 有點古老了,目前的 fedora linux 的 mkinitrd 已經可以偵測處理 root in lvm 的情況,會產生必要的 code 於 linuxrc 內。另外由於使用的 rh 的 nash 跑該 linuxrc,所以有一些語法命令可以解決許多配置...

先看看解開 initrd image 結構:


  1.      1  ./lib/sd_mod.ko
  2.      2  ./lib/dm-mirror.ko
  3.      3  ./lib/scsi_mod.ko
  4.      4  ./lib/mptbase.ko
  5.      5  ./lib/jbd.ko
  6.      6  ./lib/ehci-hcd.ko
  7.      7  ./lib/ohci-hcd.ko
  8.      8  ./lib/mptspi.ko
  9.      9  ./lib/dm-mod.ko
  10.     10  ./lib/uhci-hcd.ko
  11.     11  ./lib/scsi_transport_spi.ko
  12.     12  ./lib/dm-zero.ko
  13.     13  ./lib/ext3.ko
  14.     14  ./lib/dm-snapshot.ko
  15.     15  ./lib/mptscsih.ko
  16.     16  ./sbin
  17.     17  ./init
  18.     18  ./bin/nash
  19.     19  ./bin/insmod
  20.     20  ./bin/lvm
  21.     21  ./bin/modprobe
  22.     22  ./etc/lvm/lvm.conf
  23.     23  ./dev/ttyS1
  24.     24  ./dev/tty1
  25.     25  ./dev/null
  26.     26  ./dev/tty8
  27.     27  ./dev/systty
  28.     28  ./dev/tty9
  29.     29  ./dev/tty10
  30.     30  ./dev/tty0
  31.     31  ./dev/zero
  32.     32  ./dev/ram
  33.     33  ./dev/ttyS2
  34.     34  ./dev/rtc
  35.     35  ./dev/ram1
  36.     36  ./dev/tty11
  37.     37  ./dev/tty12
  38.     38  ./dev/tty7
  39.     39  ./dev/ptmx
  40.     40  ./dev/ttyS0
  41.     41  ./dev/tty5
  42.     42  ./dev/console
  43.     43  ./dev/tty6
  44.     44  ./dev/tty3
  45.     45  ./dev/ttyS3
  46.     46  ./dev/tty
  47.     47  ./dev/tty4
  48.     48  ./dev/tty2
  49.     49  ./dev/ram0
复制代码


init script :


  1. mount -t proc /proc /proc
  2. setquiet
  3. echo Mounting proc filesystem
  4. echo Mounting sysfs filesystem
  5. mount -t sysfs /sys /sys
  6. echo Creating /dev
  7. mount -o mode=0755 -t tmpfs /dev /dev
  8. mkdir /dev/pts
  9. mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
  10. mkdir /dev/shm
  11. mkdir /dev/mapper
  12. echo Creating initial device nodes
  13. mknod /dev/null c 1 3
  14. mknod /dev/zero c 1 5
  15. mknod /dev/systty c 4 0
  16. mknod /dev/tty c 5 0
  17. mknod /dev/console c 5 1
  18. mknod /dev/ptmx c 5 2
  19. mknod /dev/rtc c 10 135
  20. mknod /dev/tty0 c 4 0
  21. mknod /dev/tty1 c 4 1
  22. mknod /dev/tty2 c 4 2
  23. mknod /dev/tty3 c 4 3
  24. mknod /dev/tty4 c 4 4
  25. mknod /dev/tty5 c 4 5
  26. mknod /dev/tty6 c 4 6
  27. mknod /dev/tty7 c 4 7
  28. mknod /dev/tty8 c 4 8
  29. mknod /dev/tty9 c 4 9
  30. mknod /dev/tty10 c 4 10
  31. mknod /dev/tty11 c 4 11
  32. mknod /dev/tty12 c 4 12
  33. mknod /dev/ttyS0 c 4 64
  34. mknod /dev/ttyS1 c 4 65
  35. mknod /dev/ttyS2 c 4 66
  36. echo Setting up hotplug.
  37. hotplug
  38. echo Creating block device nodes.
  39. mkblkdevs
  40. echo "Loading uhci-hcd.ko module"
  41. insmod /lib/uhci-hcd.ko
  42. echo "Loading ohci-hcd.ko module"
  43. insmod /lib/ohci-hcd.ko
  44. echo "Loading ehci-hcd.ko module"
  45. insmod /lib/ehci-hcd.ko
  46. mount -t usbfs /proc/bus/usb /proc/bus/usb
  47. echo "Loading jbd.ko module"
  48. insmod /lib/jbd.ko
  49. echo "Loading ext3.ko module"
  50. insmod /lib/ext3.ko
  51. echo "Loading mptbase.ko module"
  52. insmod /lib/mptbase.ko
  53. echo "Loading scsi_mod.ko module"
  54. insmod /lib/scsi_mod.ko
  55. echo "Loading sd_mod.ko module"
  56. insmod /lib/sd_mod.ko
  57. echo "Loading scsi_transport_spi.ko module"
  58. insmod /lib/scsi_transport_spi.ko
  59. echo "Loading mptscsih.ko module"
  60. insmod /lib/mptscsih.ko
  61. echo "Loading mptspi.ko module"
  62. insmod /lib/mptspi.ko
  63. echo "Loading dm-mod.ko module"
  64. insmod /lib/dm-mod.ko
  65. echo "Loading dm-mirror.ko module"
  66. insmod /lib/dm-mirror.ko
  67. echo "Loading dm-zero.ko module"
  68. insmod /lib/dm-zero.ko
  69. echo "Loading dm-snapshot.ko module"
  70. insmod /lib/dm-snapshot.ko
  71. echo Waiting for driver initialization.
  72. stabilized --hash --interval 250 /proc/scsi/scsi
  73. echo Making device-mapper control node
  74. mkdmnod
  75. mkblkdevs
  76. echo Scanning logical volumes
  77. lvm vgscan --ignorelockingfailure
  78. echo Activating logical volumes
  79. lvm vgchange -ay --ignorelockingfailure  VolGroup00
  80. resume /dev/VolGroup00/LogVol01
  81. echo Creating root device.
  82. mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00
  83. echo Mounting root filesystem.
  84. mount /sysroot
  85. echo Setting up other filesystems.
  86. setuproot
  87. echo Switching to new root and running init.
  88. switchroot
复制代码


只是裡面多了一堆命令都是新版本 nash 特有的,需要 manpage 看一下才知道。

有這些現成東西老實說要讓 /lib 這類於 lvm 內都不是大問題了。

--

论坛徽章:
0
88 [报告]
发表于 2007-08-01 23:51 |只看该作者
之后 /lib/lvm-mod.so 就没有了,因为没有/lib :em11:

至于livecd,很多啊。www.knoppix.org,一个基于debian的发行版,但不知道lvm的支持如何。

论坛徽章:
0
89 [报告]
发表于 2007-08-01 23:56 |只看该作者
多谢 kendust 兄,你提到的 static link 是否和 C 有关呢?我不懂 C 语言啊

1、那用 ldd 的找出所须的 lib 文件,再把 vgchange/vgscan 所需要的 lib 文件拷贝到 initrd 的 /lib 中可以吗?

2、LVM2 的 lvm.static 中的 “static" 是什么意思呢?是否就是你所说的 stattic link ?

3、想问一下新版 nash 中的 switchchroot 和旧版的 nash 中的 pivot_root 有什么不同呢?

   因为我以前做过实验,就是把 /initrd 目录删除,结果 rh9 起不来,估计就是在 pivot_root 处出错导致的。

   而 2.6 下却不会出现该问题,是否是 switchchroot 的原因呢?

论坛徽章:
0
90 [报告]
发表于 2007-08-01 23:58 |只看该作者
原帖由 Cocal 于 2007-8-1 23:51 发表
之后 /lib/lvm-mod.so 就没有了,因为没有/lib :em11:

至于livecd,很多啊。www.knoppix.org,一个基于debian的发行版,但不知道lvm的支持如何。



?不明白你的意思

我不是把原来的 /lib 拷贝到 lib_lv 并挂载到 /lib 下了吗?

至于 /etc/rc.d/rc.sysinit 可能还需要再做一些调整吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP