当前位置:科技 > 正文
世界快看点丨双系统怎么做开机引导文件-(怎样启动双系统)
2022-11-12 08:01:28 来源: 华南科技网
如何启动双系统引导文件?(如何启动双系统)

很多人都是嵌入式的linux根文件系统制作有一些疑问或困难,有时制作嵌入式linux根文件系统总是达不到预期的效果,事实上,我告诉你,根文件系统的制作仍然很简单,只要你掌握了方法。


【资料图】

首先,让我们来看看什么是根文件系统,这将有助于下一步的制作。

根据文件系统,它首先是一个文件系统。该文件系统不仅具有普通文件系统存储数据文件的功能,而且与普通文件系统相比,它仍然是核心启动时的载体(mount)在第一个文件系统中,系统引导启动程序会在根文件系统悬挂后从中提取一些初始化脚本(如inittab、rcS)并将服务加载到内存中运行。文件系统和内核是完全独立的两部分。没有办法真正启动嵌入式移植的核心下载到开发板上Linux操作系统时,文件系统无法加载。

根文件系统之所以在前面加一个根,说明是加载其他文件系统的根。既然是根,没有这个根,其他文件系统就无法加载。它包括了Linux启动时必要的目录和关键文件,如Linux启动时需要有init目录中的相关文件 Linux挂载分区时Linux一定会找/etc/fstab本吊载配置文件等,应用程序(如根文件系统)ls、mkdir、rm、ifconfig等命令)和 GNU C 库(glibc、eglibc或uclibc)等。包括这些Linux 所有启动系统所需的文件都可以成为根文件系统。包括这些Linux 所有启动系统所需的文件都可以成为根文件系统。Linux启动时,必须首先挂载根文件系统;如果系统不能从指定设备上挂载根文件系统,系统将出错并退出启动。其他文件系统成功后可自动或手动挂载。因此,不同的文件系统可以同时存在于一个系统中。

看到这里,你已经可以做下一步了。事实上,希望你对根文件系统有一个了解。今天我们将使用它BusyBox制作嵌入式Linux根文件系统:

第一步是构建目录结构

要创建根文件系统的目录,他的目录主要包括:

/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys

#mkdir /home/rootfs

#cd /home/rootfs

#mkdir dev etc lib usr var proc tmp home root mnt sys

第二步:开始使用busybox来对/bin /sbin linuxrc进行构建

我们用的是busybox-1.16.1,进入,然后执行以下命令:

#make defconfig

#make menuconfig

Busybox Setting ----->

Build Options ----->

//1选择将busybox静态编译

[*]Build BusyBox as a static binary (no shared libs)

//2.指定交叉编译器

(/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix

Installation Options -----> (选择生成的文件存储目录,也可直接放置rootfs不需要复制)

//3.选择 Don’t use /usr

Busybox Library Tuning--->

[*]Username completion

[*]Fancy shell prompts

[*]Query cursor position from terminal

//4.编译busybox的shell命令解释器支持显示当前路径和主机信息

保存退出

#make

#make install

通过以上步骤,那么在busybox你会在目录下看到它 _install目录中有/bin /sbin linuxrc三个文件

获取1V1嵌入式学习计划,现在发送1000G选择学习资料。中文获取

将这三个目录或文件复制到第一步。rootfs文件夹下。

#cp bin/ sbin/ linuxrc /home/rootfs -ra

在这里一定要记得带上-a因为在bin这个目录很多都是链接,如果你没有带-a复制过去的参数不是链接的形式。

第三步:etc目录建设:

1)进入根文件系统rootfs的etc目录,执行以下操作:

拷贝Busybox-1.16.1/examples/bootfloopy/etc/* 到当前目录

#cp –r busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc

修改inittab,

原始文件如下:

1 ::sysinit:/etc/init.d/rcS

2 ::respawn:-/bin/sh

3 tty2::askfirst:-/bin/sh

4 ::ctrlaltdel:/bin/umount -a -r

修改后为:

---(1)开机免登录,直接打开shell(前数为行号)

1 ::sysinit:/etc/init.d/rcS

2 #::respawn:-/bin/sh

3 #::respawn:-/bin/login

4 console::askfirst:-/bin/sh

5 #tty2::askfirst:-/bin/sh

6 ::ctrlaltdel:/bin/umount -a -r

---(2):开机需要登陆(前数为行号)

1 ::sysinit:/etc/init.d/rcS

2 #::respawn:-/bin/sh

3 ::respawn:-/bin/login

4 #console::askfirst:-/bin/sh

5 #tty2::askfirst:-/bin/sh

6 ::ctrlaltdel:/bin/umount -a -r

2)复制虚拟机上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下

# cp /etc/passwd rootfs/etc

# cp /etc/group rootfs/etc

# cp /etc/shadow roofs/etc

修改以下三个文件,只保存与root根据具体情况,相关项目的内容会有所不同。

修改passwd为root:x:0:0:root:/root:/bin/sh,即只保存与root相关项目最终改为/bin/ash。

修改group为root:x:0:root

修改shadow为root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:999:7::

登录开发板时,需要输入用户名密码,和虚拟机一样

3)修改profile

PATH=/bin:/sbin:/usr/bin:/usr/sbin //可执行程序 环境变量

export LD_LIBRARY_PATH=/lib:/usr/lib ///动态链接库 环境变量

/bin/hostname osee

USER="`id -un`"

LOGNAME=$USER

HOSTNAME="/bin/hostname"

PS1="[\ \\W]# " //显示主机名称、当前路径等信息:

4)修改 etc/init.d/rc.S文件

/bin/mount -n -t ramfs ramfs /var

/bin/mount -n -t ramfs ramfs /tmp

/bin/mount -n -t sysfs none /sys

/bin/mount -n -t ramfs none /dev

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

/bin/mkdir -p /dev/pts //telnet服务需要

/bin/mkdir -p /dev/shm //telnet服务需要

#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB需要自动吊载

/sbin/mdev -s //启动mdev在/dev自动创建设备文件节点

/bin/mount -a

########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0

/sbin/ifconfig eth0 192.168.1.70

/sbin/ifconfig eth0 netmask 255.255.255.0

/sbin/route add default gw 192.168.1.1 eth0

/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0

/sbin/route add default gw 192.168.1.1 eth1

5)修改etc/fstab文件,添加以下文件

none /dev/pts devpts mode=0622 0 0

tmpfs /dev/shm tmpfs defaults 0 0

第四步: 这也是最后一步lib目录构建:

(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我只是把这个目录下来SO可以复制文件)

1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

复制动态库rootfs/lib下

#cp *so* roofs/lib -a

2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

复制下面的动态库rootfs/lib下

#cp ./libstdc .so.* rootfs/lib -a

这样,大功告成,事实上,你可以看到这些步骤,即4步,完成嵌入式linux根文件系统的制作并不难。按照我的步骤,如果最后有问题,那就是你太粗心了,仔细检查,嵌入式linux您如何制作根文件系统?get到了吗?

\h \\W]# " //显示主机名称、当前路径等信息:4)修改 etc/init.d/rc.S文件/bin/mount -n -t ramfs ramfs /var/bin/mount -n -t ramfs ramfs /tmp/bin/mount -n -t sysfs none /sys/bin/mount -n -t ramfs none /dev/bin/mkdir /var/tmp/bin/mkdir /var/modules/bin/mkdir /var/run/bin/mkdir /var/log/bin/mkdir -p /dev/pts //telnet服务需要/bin/mkdir -p /dev/shm //telnet服务需要#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB需要自动吊载/sbin/mdev -s //启动mdev在/dev自动创建设备文件节点/bin/mount -a########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0/sbin/ifconfig eth0 192.168.1.70/sbin/ifconfig eth0 netmask 255.255.255.0/sbin/route add default gw 192.168.1.1 eth0/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0/sbin/route add default gw 192.168.1.1 eth15)修改etc/fstab文件,添加以下文件none /dev/pts devpts mode=0622 0 0tmpfs /dev/shm tmpfs defaults 0 0第四步: 这也是最后一步lib目录构建:(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我只是把这个目录下来SO可以复制文件)1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib复制动态库rootfs/lib下#cp *so* roofs/lib -a2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib复制下面的动态库rootfs/lib下#cp ./libstdc .so.* rootfs/lib -a这样,大功告成,事实上,你可以看到这些步骤,即4步,完成嵌入式linux根文件系统的制作并不难。按照我的步骤,如果最后有问题,那就是你太粗心了,仔细检查,嵌入式linux您如何制作根文件系统?get到了吗?

标签: 文件系统 当前路径 其他文件

责任编辑: jkl2