QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2088|回复: 12

loopback device是指什么?

[复制链接]
发表于 2004-2-27 14:03:59 | 显示全部楼层 |阅读模式
编译完2.6.3之后,在安装(make install)这一步,已经正确生成bzImage文件了,然后出错,错误信息提示是:loopback设备都在使用中。把所有应用程序都关掉,仅仅打开Xterm,再运行make install,仍然出现同样的错误。
关机、重启,然后直接make install,就可以顺利安装完成,显然这个时候没有启动loopback设备。
那么到底什么算是loopback设备呢?
发表于 2004-2-27 14:28:55 | 显示全部楼层
网卡停掉试试.
回复

使用道具 举报

 楼主| 发表于 2004-2-27 14:38:11 | 显示全部楼层
重启以后也没有停掉网卡啊,但是就可以编译了
回复

使用道具 举报

发表于 2004-2-27 14:51:36 | 显示全部楼层
我的理解是,既然是LOOPBACK,应该和网络有关.仅此而已.
回复

使用道具 举报

 楼主| 发表于 2004-2-27 15:22:10 | 显示全部楼层
看到有高手说:“ 所谓loopback device指的就是拿文件来模拟块设备”
还是不明白到底什么算是loopback device :neutral:
回复

使用道具 举报

发表于 2004-2-27 16:01:10 | 显示全部楼层
所谓loopback也就是回接设备,是一个设备文件,但是这个设备文件其实并没有对应一个具体的设备,所对应的只是一个普通的文件,但是它可以执行设备文件的一些操作,比如mount等
回复

使用道具 举报

 楼主| 发表于 2004-2-27 17:23:16 | 显示全部楼层
在make install 时提示

+ exec /sbin/installkernel 2.4.21 bzImage /usr/src/linux-2.4.21/System.map ''
All of your loopback devices are in use.
mkinitrd failed
make[1]: *** [install] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.21/arch/i386/boot'
make: *** [install] Error 2

这是什么原因引起的?
回复

使用道具 举报

发表于 2004-2-28 11:44:36 | 显示全部楼层
在mkinitrd脚本中这一段:
dd if=/dev/zero of=$IMAGE bs=1k count=$IMAGESIZE 2> /dev/null || exit 1

LODEV=$(echo findlodev | /sbin/nash --quiet)

if [ -z "$LODEV" ]; then
    rm -rf $MNTIMAGE $MNTPOINT $IMAGE
    echo "All of your loopback devices are in use." >&2
    exit 1
fi

losetup ${LODEV} $IMAGE || exit 1

其中LODEV=$(echo findlodev | /sbin/nash --quiet)就是找一个loopback设备,比如/dev/loop0(0到255),其中nash.c中关于findlodev指令:
  for (devNum = 0; devNum < 256; devNum++) {
        sprintf(devName, "/dev/loop%s%d", separator, devNum);
        if ((fd = open(devName, O_RDONLY)) < 0) return 0;

        if (ioctl(fd, LOOP_GET_STATUS, &loopInfo)) {
            close(fd);
            printf("%s\n", devName);
            return 0;
        }

        close(fd);
    }
有兴趣的话可以自己研究一下:
mkinitrd脚本
Documentation/initrd.txt
Documentation/ramdisk.txt
回复

使用道具 举报

 楼主| 发表于 2004-2-29 21:45:34 | 显示全部楼层
谢谢
initrd文件是做什么用的呢?把引导文件中的initrd一项注释掉,也可以正常进入系统
它究竟起什么作用?
回复

使用道具 举报

发表于 2004-3-1 23:55:04 | 显示全部楼层
[quote:d9ee5589c0="zhangkun"]我的理解是,既然是LOOPBACK,应该和网络有关.仅此而已.[/quote]


this loopback is not network loopback. see other post explanation
回复

使用道具 举报

发表于 2004-3-5 09:38:24 | 显示全部楼层
[quote:b9ca34018f="firespirit"]谢谢
initrd文件是做什么用的呢?把引导文件中的initrd一项注释掉,也可以正常进入系统
它究竟起什么作用?[/quote]
在源代码目录下Documentation/initrd.txt 中解释的很清楚,一个作用是编译尽可能小的内核,第二可以预加载模块,可以在加载真正的根目录前加载一些需要的模块比如根目录是ext3文件系统的,但是的ext3支持是以模块的形式提供,就可以在其中先加载模块,然后就可以加载根目录了
回复

使用道具 举报

 楼主| 发表于 2004-3-5 10:05:14 | 显示全部楼层
I C
initrd.img文件的作用就是在真正启动内核之前,在内存中形成一个Linux环境,这样,许多内核选项(例如ext3)就可以被编译成模块,而不必编译到内核中了,因此也就提供了编译最小内核的可能,对吧
回复

使用道具 举报

发表于 2004-3-5 10:26:01 | 显示全部楼层
差不多了,而且有一个简单的解释器就是nash,由nash解释执行/linuxrc文件,而在/linuxrc中就可以干点什么了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 18:25 , Processed in 0.044756 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表