红联Linux门户
Linux帮助

如何利用busybox制作根文件系统

发布时间:2010-09-10 09:20:05来源:红联作者:no_cool
大家好,感谢大家抽时间来帮我这菜鸟解决问题,接触linux也有一个多月了,但感觉还是离目标很遥远阿......唉。。。。。。。。。。。。。

最近想做一个只有命令行的小linux系统,下载了个busybox-1.7.0用arm-linux-编译的,选的静态编译,按照网上说的编译也成功了 另外也下了个linux-2.6.35的内核,编译也做好了 ,能够启动,现在的问题是 我想在一个新的4G DOM盘上来把这个系统做在上面,按网上说了做了N次都没成功 ,很郁闷阿.........
fdisk -l 执行后 显示有两个硬盘一个是sda就是本来的装的宿主系统Fedora 11有两个分区sda1 和sda2 还有一个就是插上去的DOM盘sdb我给它分了三个区sdb1为boot分区 sdb2为交换分区 sdb3为 / 分区
在/mnt下建了两个文件夹gboot和groot用来分别挂载/dev/sdb1和/dev/sdb3下面的步骤基本上就是按网上搜索的制作根文件系统 的步骤做的 但怎么也没成功,还望大家教教阿 ,如果能有详细的步骤的话就更好了......
希望大家帮帮忙。本人随时在线...............可以及时沟通
文章评论

共有 17 条评论

  1. gms316 于 2011-12-16 16:45:26发表:

    最后结果怎么呀

  2. no_cool 于 2010-09-19 14:40:18发表:

    没人帮忙么???

  3. no_cool 于 2010-09-16 09:29:53发表:

    OK了 辛苦了这么久 终于shell能跑动了现在有问题就是,我把宿主系统的硬盘给拔了,直接只接这个新做系统的DOM盘,进入shell命令行后,其他都很正常能运行,就fdisk -l的时候看不到本磁盘的信息,还望高手帮助~!
    谢谢

  4. no_cool 于 2010-09-13 11:53:49发表:

    12# shenhao0129


    文件系统我该成了EXT3的格式,启动后 提示:
    Warning:unable to open an initial console
    Failed to execute /bin/sh. Attenpting defaults...
    Kernel panic- not syncing:No init fount . Try passing init= option to kernel
    然后就是一个光标做死的闪 CapsCLock 和ScrollLock灯做死的闪

    我想知道的是 这个Try passing init= option to kernel 是不是我前面发出来的在gurb.conf中的那样改,还是在内核编译的时候有哪个现象需要设定init阿 ???
    再是这个unable to open an initial console 我/dev下也有console 和null这个手动添加的设备阿.........

  5. no_cool 于 2010-09-13 11:39:08发表:

    12# shenhao0129


    貌似还是不行阿

  6. no_cool 于 2010-09-13 09:12:52发表:

    10# wangyu


    恩 我按照你说的试下吧

  7. shenhao0129 于 2010-09-10 20:31:11发表:

    今天我也在研究NFS根文件系统,原来认为busybox看似比较简单,就略过去了,搞半天这东西还是有点复杂的啊

  8. shenhao0129 于 2010-09-10 20:27:21发表:

    引用:
    7# wangyu


    恩 确实是我疏忽 ,DOM盘你也可以把它当作是一个小的移动硬盘 或者是一个U盘吧 只是它 的接口不同而已,我把它插板子上进宿主系统能读出来时sdb,刚才我启动编译好的那个2.6.35的内核进系统后,发 ...
    no_cool 发表于 2010-9-10 14:18

    要手动挂载的吧?

  9. wangyu 于 2010-09-10 18:31:07发表:

    看了一下,和我的网上看到的步骤差不多,应该没啥问题,可能是下面这句话

    EXT4-fs: barriers enabled

    ext4似乎在你的U盘里不能用,换成ext3试试吧,最好重新编译下内核

  10. no_cool 于 2010-09-10 16:03:42发表:

    7# wangyu


    我把pci信息和制作过程以及文件内容都贴出来吧
    #lspci
    00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge
    00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)
    00:04.0 PCI bridge: ATI Technologies Inc Device 7914
    00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA
    00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)
    00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)
    00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)
    00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)
    00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)
    00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)
    00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 14)
    00:14.1 IDE interface: ATI Technologies Inc SB600 IDE
    00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
    00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge
    00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge
    00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
    00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
    00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
    00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
    01:05.0 VGA compatible controller: ATI Technologies Inc RS690M [Radeon X1200 Series]
    01:05.2 Audio device: ATI Technologies Inc Radeon X1200 Series Audio Controller
    02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

    制作过程和网上说的差不多,先格式化三个分区 mkfs.ext3 /dev/sdb1 mkswap /dev/sdb2 mkfs.ext4 /dev/sdb3
    然后在/mnt下创建groot和gboot 分别挂载
    mount /dev/sdb1 /mnt/gboot mount /devsdb3 /mnt/groot
    在groot下创建目录 和配置文件
    [root@localhost groot]# ls
    bin dev etc lib lost+found mnt proc sbin sys tmp usr var
    [root@localhost groot]# ls etc
    fstab group init.d inittab mdev.conf passwd profile shadow
    [root@localhost groot]# ls etc/init.d
    rcS
    由于是静态编译的BUSYBOX,所以lib下没库文件 只有个modules文件夹下放了从宿主系统上拷贝过来的哪个内核文件夹,bin和sbin是从busybox靠过来的
    其他的etc下的配置文件内容为:
    fstab
    /dev/sda1 /boot ext3 defaults 1 2
    /dev/sda3 / ext4 defaults 1 1
    /dev/sda2 swap swap defaults 0 0
    proc /proc proc defaults 0 0
    none /tmp ramfs defaults 0 0
    mdev /dev ramfs defaults 0 0
    sysfs /sys sysfs defaults 0 0

    group
    root:x:0:root

    inittab

    ::sysinit:/etc/init.d/rcS
    ::respawn:-/bin/sh
    ::restart:/sbin/init

    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a

    passwd

    oot:x:0:0root:/root:/bin/sh

    profile

    echo
    echo -n "Processing /etc/profile... "
    # no-op
    #Set path
    echo "Set path in /etc/profile"
    PATH=/bin:/sbin
    export PATH

    #Set PS1
    echo "Set PS1 in /etc/profile"
    export PS1="\\e[05;32m[$USER@\\$\\e[00;34m"
    echo "Done"
    echo


    shadow

    root:$6$xqcJXRxYcaQrIVVx$JlpZ2g5byZldogXAgdegapMZUsQtoQqfKe10Bif79mxJ/p9JRnOmtmbcv864d428p7T6zTkiSQsne9gKunVJ30:14827:0:99999:7:::

    init.d/rcS

    #! /bin/sh
    echo "---------------mount all"
    /bin/mount -a

    echo "------------------Starting mdev........."
    /bin/echo sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s

    echo "--------------"

    最后gboot下为boot文件夹放了从宿主系统拷贝过来的内核文件和镜像文件还有grub
    [root@localhost boot]# ls
    config-2.6.29.4-167.fc11.i686.PAE lost+found
    System.map-2.6.29.4-167.fc11.i686.PAE grub
    initrd-2.6.29.4-167.fc11.i686.PAE.img vmlinuz-2.6.29.4-167.fc11.i686.PAE

    [root@localhost grub]# ls
    device.map grub.conf menu.lst stage2
    e2fs_stage1_5 grub.conf~ stage1 xfs_stage1_5

    grub.conf

    default=1
    timeout=5
    hiddenmenu
    title Fedora (2.6.29)
    root (hd0,0)
    kernel /vmlinuz-2.6.29.4-167.fc11.i686.PAE root=/dev/sda1 rw init=/bin/sh
    initrd /initrd-2.6.29.4-167.fc11.i686.PAE

    BIOS设置从第二硬盘启动,一连串的信息过后 最后停在这里不懂动了
    C onsole:switching to colour frame buffer device 128x48
    executing set pll
    executing set crtc timing
    [drm] TV-6: set mode 1024x768 14
    fb0:radeondrmfb frame buffer device
    [drm] Loading RS690/RS740 Microcode
    [drm]Num pipes:1
    [drm]writeback test succeeded in 1 usecs
    [drm] Initialized radeon 1.30.0 20080528 for 0000:01:05.0 on minor 0
    input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input4
    EXT4-fs: barriers enabled
    kjournald2 starting:pid 59.dev sda1:8,commit interval 5 seconds
    EXT4-fs:delayed allocation enabled
    EXT4-fs:mballoc enabled
    EXT34-fs:mounted filesystem sda1 with ordered data mode

  11. no_cool 于 2010-09-10 14:18:53发表:

    7# wangyu


    恩 确实是我疏忽 ,DOM盘你也可以把它当作是一个小的移动硬盘 或者是一个U盘吧 只是它 的接口不同而已,我把它插板子上进宿主系统能读出来时sdb,刚才我启动编译好的那个2.6.35的内核进系统后,发现没有被读出来,难道真的不能挂载???

  12. wangyu 于 2010-09-10 13:36:50发表:

    内核的不清楚,busybox好像只能编译命令,根文件系统需要你复制宿主盘的。

    最好把启动没成功的提示写出来,确实我只能猜测了,可能是你的内核无法挂载你的DOM(啥是DOM)

  13. shenhao0129 于 2010-09-10 13:02:47发表:

    DOM盘是个什么盘?

  14. alick 于 2010-09-10 11:57:50发表:

    引用:
    按网上搜索的制作根文件系统 的步骤做的 但怎么也没成功,

    没有说明具体在什么地方出现的问题,如果出错都报什么错。
    (这些对帮忙的人都很重要。不然就只能猜着来了。)

  15. no_cool 于 2010-09-10 10:49:29发表:

    3# lktlks


    好歹也是个将军阿 ................怎么会不懂阿 我等得花都谢了哦 来个哥们帮帮忙吧

  16. lktlks 于 2010-09-10 10:42:13发表:

    不懂

  17. no_cool 于 2010-09-10 09:29:32发表:

    另外补充下内核方面遇到的问题,内核编译完后该把哪些东西放到目标盘上去??
    我编译内核时模块支持是选上的,编译后能启动,那么是不是只需要把bzImage System.map config三个文件拷贝到目标盘的boot目录,把/lib/modules/2.6.35拷贝到目标盘的/lib/modules下就可以了????
    还有就是我在上面编译的内核再重新编译,但不选模块支持,其他的选项设置都基本上没变都编译进内核,但启动后却发现 内核怎么也启动不了。