精华内容
下载资源
问答
  • 1. 假设要chroot的根目录为/mnt 2. 创建必要的目录  mkdir /mnt/{dev,proc,sys,run} 3. 挂载和构建/dev  mount -v --bind /dev /mnt/dev 4. 挂载虚拟内核文件系统  mount -vt devpts devpts /mnt/dev/pts -...

    1. 假设要chroot的根目录为/mnt

    2. 创建必要的目录

      mkdir /mnt/{dev,proc,sys,run}

    3. 挂载和构建/dev

      mount -v --bind /dev /mnt/dev

    4. 挂载虚拟内核文件系统

      mount -vt devpts devpts /mnt/dev/pts -o gid=5,mode=620
      mount -vt proc proc /mnt/proc
      mount -vt sysfs sysfs /mnt/sys
      mount -vt tmpfs tmpfs /mnt/run

     

    5. chroot到/mnt下

      chroot /mnt

     

    转载于:https://www.cnblogs.com/dakewei/p/10930006.html

    展开全文
  • 整体框架:构建最小文件系统:1) 创建设备console和null:首先,我们需要创建一个目录,自己命名。...然后我们在Linux系统查看一下console和null的主次设备号:ls /dev/console /dev/null -l。这里显示的co...

    整体框架:

    f83ce487ca0940978567def67ab523cb.png

    构建最小根文件系统:

    1) 创建设备console和null:

    首先,我们需要创建一个目录,自己命名。

    这里我创建czg目录:mkdir czg。然后进入自己创建的这个文件夹目录,并创建dev目录:mkdir dev。

    进入目录dev:cd dev/ 。

    然后我们在Linux系统下查看一下console和null的主次设备号:ls /dev/console /dev/null -l。

    这里显示的console的主设备号为5,次设备号为1;null的主设备号为1,次设备号为3。c表示字符设备文件。现在我们就可以创建设备console和null了:

    mknod console c 5 1

    mknod null c 1 3

    2) init ==》 busybox

    在安装了busybox的linux下,init等价于busybox。这一步已经自动完成。

    安装busybox

    cd busybox-1.7.0

    make menuconfig

    >修改Makefile:CROSS_COMPILE ?= arm-linux-

    make

    make CONFIG_PREFIX=czg/ install

    3) /etc/inittab

    在czg目录下创建etc目录:mkdir etc。创建etc目录下的inittab配置文件:vim etc/inittab 。并在其中添加console::askfirst:-/bin/sh 使这个shell的标准输入,标准输出,标准错误都指向这个console。

    4)配置第三步指定应用程序

    第三步使用的是shell标准输入,linux自带不需要额外配置。

    5)配置C库

    首先我们创建lib目录,这个目录将用来存放C库的文件:mkdir lib。

    进入你存放C库文件的目录下,将C库文件复制到lib目录:cp *.so* /czg/lib -d。

    这里用-d将C库中的动态库文件及其链接关系都复制到了czg/lib目录下。这样配置C库也完成了。

    完善根文件系统

    介绍:mdev的用途主要有两个:初始化/dev目录、动态更新。

    动态更新不仅是更新/dev目录,还支持热插拔,即接入、卸下设备时执行某些动作。

    其实经过上面的过程,构建了一个最小根文件系统。但如果你生成并烧写到硬件上就会发现,这个小小的根文件系统的确能够正常运行,但它的功能还很有限。为了让它有更加丰富的功能和更方便的使用,现在我们需要添加一些新的配置。

    此刻我们制作的根文件系统中有些程序还没有安装,比如ps程序。

    有两种方法,一种是在根文件系统启动后我们手动挂载

    proc:

    mkdir proc

    mount -t proc none /proc

    这里的proc是linux内核提供的虚拟文件系统。它会将linux系统运行时的信息采集,必须将它挂接到/proc目录下。我们才能使用ps程序。那么经过这样的挂载我们就可以正常使用ps了。下面是在烧写了根文件系统的硬件上执行的命令:

    ps

    # ps

    PID Uid VSZ Stat Command

    0 3088 S init

    0 SW< [kthreadd]

    0 SWN [ksoftirqd/0]

    0 SW< [watchdog/0]

    0 SW< [events/0]

    0 SW< [khelper]

    0 SW< [kblockd/0]

    0 SW< [ksuspend_usbd]

    0 SW< [khubd]

    0 SW< [kseriod]

    0 SW [pdflush]

    0 SW [pdflush]

    0 SW< [kswapd0]

    0 SW< [aio/0]

    0 SW< [mtdblockd]

    0 SW< [kmmcd]

    0 3092 S -sh

    0 3092 R ps

    这里我们可以看到有许多进程,其中PID表示的是进程号。ps是用来查看后台进程工作情况的命令。这时,我们进入proc目录,随便打开一个进程查看:

    # cd /proc/

    # ls

    745 diskstats locks sys

    75 driver meminfo sysrq-trigger

    76 execdomains misc sysvipc

    763 fb modules timer_list

    771 filesystems mounts tty

    asound fs mtd uptime

    buddyinfo interrupts net version

    bus iomem partitions vmstat

    cmdline ioports scsi yaffs

    cpu irq self zoneinfo

    cpuinfo kallsyms slabinfo

    crypto kmsg stat

    devices loadavg swaps

    # cd 1

    # ls -l fd

    lrwx------ 1 0 0 64 Jan 1 00:10 0 -> /dev/console

    lrwx------ 1 0 0 64 Jan 1 00:10 1 -> /dev/console

    lrwx------ 1 0 0 64 Jan 1 00:10 2 -> /dev/console

    正如大家看到的,proc/目录下有许多的进程。首列数字与上面的PID号对应,进入PID号,既是进入对应的应用程序。通过” ls -l fd “发现PID为1的进程其标准输入,标准输出,标准错误都指向/dev/console。

    这种挂载虚拟文件系统的方法虽然可用,但是十分麻烦,如果不想自己一个一个手动挂载的话,可以在etc/下编写配置文件,统一处理。这样在根文件系统启动的时候,配置文件会帮我们处理好所有程序的文件系统挂载。我们就能直接使用各种程序了。

    在etc/inittab中添加::sysinit:/etc/init.d/rcS 。

    然后创建rcS这个脚本文件:mkdir etc/init.d => vi etc/init.d/rcS。

    在其中输入:mount -t proc none /proc。保存后再给它添加可执行权限:chmod +x etc/init.d/rcS 。

    这样修改后的根文件系统就会在启动时为应用程序自动挂载proc,效果和上面手动挂载的一样。

    这里我们也可以在rcS文件中添加:mount -a 命令来取代mount -t 命令。mount -a命令是根据etc/fstab来挂载文件的。编写etc/fstab为:proc /proc proc defaults 0 0。其效果和上面相同,为了后续方便统一用mount -a 命令!

    由于linux下有很多设备驱动,如果手动一个一个添加dev/目录下的内容十分麻烦,所以我们可以用udev自动添加设备节点。这里我们用到的是busybox下的udev的简化版:mdev。那么我们该如何配置才能使用mdev呢?查看busybox目录下的mdev.txt文件,里面有详细的说明:

    Mdev has two primary uses: initial population and dynamic updates. Both

    require sysfs support in the kernel and have it mounted at /sys. For dynamic

    updates, you also need to have hotplugging enabled in your kernel.

    Here's a typical code snippet from the init script:

    [1] mount -t sysfs sysfs /sys

    [2] echo /bin/mdev > /proc/sys/kernel/hotplug

    [3] mdev -s

    Of course, a more "full" setup would entail executing this before the previous

    code snippet:

    [4] mount -t tmpfs mdev /dev

    [5] mkdir /dev/pts

    [6] mount -t devpts devpts /dev/pts

    首先,根据 [1]、[4]我们得知,需要sys目录,dev目录。且需要添加sysfs和tempfs文件类型。所以在etc/fstab中添加:

    sysfs /sys sysfs defaults 0 0

    tmpfs /dev tmpfs defaults 0 0

    这里从左至右依次代表:设备名、挂载点、文件系统类型、默认参数等。又根据[2]、[3]、[5]、[6]在etc/init.d/rcS中添加:

    #! /bin/sh

    ifconfig eth0 192.168.2.5 #设置开发板rootfs-ip

    mkdir /dev/pts

    mount -t devpts devpts /dev/pts

    echo /sbin/mdev > /proc/sys/kernel/hotplug

    mdev -s

    这里的hotplug表热拔插,指向mdev。当添加新设备时,会调用它来创建新设备节点。而mdev -s则表示把现有的设备节点创建出来。经过这一番更改,我们重新生成根文件系统,烧写到硬件设备上,通过终端观察实验现象:

    d3d7f12e502485c9838917e8ba0fec01.png

    大家可以看到dev/目录下有很多设备节点,这都是mdev自动创建出来的。

    生成yaffs2和jffs2文件

    1>yaffs2:

    首先我们需要从网络或其他途径获取到mkyaffs2image工具,利用它来生成yaffs2文件。进入存有mkyaffs2image工具的目录下。将它解压缩:

    cd /work/system/

    tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2

    cd Development_util_ok

    cd yaffs2/

    cd utils/

    进入工具目录后:make 。生成我们需要的mkyaffs2image。将它复制:cp mkyaffs2image /usr/local/bin/。并给它可执行权限:chmod +x /usr/local/bin/mkyaffs2image。再次进入我们的czg目录,利用mkyaffs2image生成可烧写的根文件系统:mkyaffs2image ../czg ../czg.yaffs2。

    2>jffs2:

    生成jffs2比yaffs2要稍稍复杂一些。我这里用到的是”mtd-utils-05.07.23.tar.bz2”,它是MTD设备的工具包,编译它就会生成制作jffs2的工具。它需要zlib压缩包,所以我们要先安装zlib。大家可以自行下载zlib的源码进行安装,这里举例说明:

    tar xzf zlib-1.2.3.tar.gz

    cd zlib-1.2.3/

    ./configure --shared --prefix=/usr/

    make

    make install

    这里的shared是编译动态库,prefix表示将zlib安装在哪里。make生成zlib后,make install进行安装。

    现在有了zlib后,我们可以编译jffs2的生成工具了。

    tar xjf mtd-utils-05.07.23.tar.bz2

    cd mtd-util-05.07.23/util

    make

    make install

    现在我们就安装了解压后的jffs2生成工具。进入czg目录,执行:mkfs.jffs2 -n -s 2048 -e 128KiB -d ../czg -o ../czg.jffs2

    这里的-n表示不要在每一个擦除块上加上清楚标志;-s 2048表示一页大小为2048字节;-e 128KiB表示一个擦除块大小为128KB;-d 表根文件系统目录;-o表示输出文件。

    按理说,执行完这步生成的jffs2烧写到硬件平台上就能够正常运行,但是请大家注意更改自己的bootloader的环境变量,更改为挂载jffs文件类型,而不要默认为yaffs,否则会启动失败。

    set bootargs noinitrd root=/dev/mtdblock3 rootfstype=jffs2 init=/linuxrc console=ttySAC0

    NFS挂载根文件系统

    这里也给大家介绍两种挂载方法:

    1.是在已经启动的硬件平台上,将服务器根文件系统挂载到硬件平台上。(推荐)

    2.是在未启动的硬件平台上,通过修改环境变量,指定挂载地址为服务器地址,系统一启动就挂载服务器的根文件系统。

    挂载的前提是开发板的rootfs能ping通Linux虚拟机,配置过程点我跳转。

    1>启动后挂载:

    要想用NFS挂载根文件系统,必须满足两个条件:

    (1)服务器允许那个目录可被挂接。

    (2)硬件平台去挂接那个目录。首先是第一个条件,我们需要到linux系统中 etc/exports里去配置被允许挂接的目录:

    vim /etc/exports

    在其中添加我们根文件系统所在目录:

    /work/nfs_root *(rw,sync,no_root_squash)

    /work/nfs_root/czg *(rw,sync,no_root_squash)

    保存后,重启NFS服务:/etc/init.d/nfs-kernel-server restart。理论上现在就可以挂载了,我们可以先试验一下,用服务器挂载自己的根文件系统看能否成功:

    mount -t nfs 192.168.2.3:/work/nfs_root/czg /mnt

    如果系统没有提示出错,而且根文件系统能够正常使用,就说明我们成功了。那么现在来真正的挂载,在已经启动的硬件平台的终端上,我们创建挂载点:mkdir /mnt。然后开始挂载:

    mount -t nfs -o nolock 192.168.2.3:/work/nfs_root/czg /mnt

    此时,如果挂载成功,在硬件平台上显示的就是服务器的根文件系统了,里面的文件内容一模一样,在服务器上对文件内容的更改也会显示在硬件平台上。

    2>启动前挂载:

    这里使用的bootloader是u-boot。只需在系统启动时,进入u-boot。修改u-boot的环境变量,使系统的根文件系统地址指向服务器的地址即可。在u-boot下,NFS挂载的定义格式如下:

    nfsroot=[:][,]

    ip=::::::

    所以我们只需根据自己实际的IP地址、网关、子网掩码等替换掉其中的参数,然后将这条命令输给u-boot并保存就可以了。

    这里我的rootfs-IP=192.168.2.5;服务器IP=192.168.2.3;网关=192.168.2.1;子网掩码=255.255.255.0 。在u-boot下,输入print就可以看到当前的环境变量,其中和挂载根文件系统相关的是bootargs:

    bootargs=noinitrd root=/dev/mtdblock3 rootfstype=jffs2 init=/linuxrc console=ttySAC0

    现在根据挂载跟文件系统的格式,我们需要更改:

    set bootargs noinitrd root=/dev/nfs nfsroot=192.168.2.3:/work/nfs_root/czg ip=192.168.2.5:192.168.2.3:192.168.2.1:255.255.255.0::eth0:off rootfstype=jffs2 init=/linuxrc console=ttySAC0

    将这条环境变量保存,然后启动内核。就可以看到我们的根文件系统和服务器是一样的,也就是说挂载到了服务器的根文件系统上 。

    展开全文
  • 环境: 内核集成了基于busybox的initramfs。 交代: 每次上电后,通过serial和telnet进入系统时...但是当前系统/etc/目录下的这三个文件是busybox工具生成的位于initramfs中的那3个文件,掉电后数据丢失,不具备保存...

    环境:
    内核集成了基于busybox的initramfs。
    交代:
    每次上电后,通过serial和telnet进入系统时,都不需要密码验证,每次设置完用户密码后,重新上电又不见。
    正文:
    后来了解到跟用户、密码、分组相关的三个文件passwd、shadow和group;但是当前系统/etc/目录下的这三个文件是busybox工具生成的位于initramfs中的那3个文件,掉电后数据丢失,不具备保存能力,所以之前的修改一直丢失。然后就想重新修改编译后的busybox文件夹下的这三个文件,然后重新编译内核,后来一想,这样的话以后也还是没办法对用户进行增加、删除和修改的,所以果断放弃(为此还去倒腾了一波NFS,也没成功。。。),睡觉前突然想起来用下面这个方法,应该可以实现:
    将根文件系统/etc目录下的passwd、shadow和group文件复制到用户文件系统下(设置好权限),修改passwd文件,在root用户配置中添加x选项(表名用户密码在shadow文件中),然后在用户上电脚本里删除根目录下/etc下的3个文件,然后通过ln创建用户目录下的3个文件的软链接到/etc目录下;这样,每次对用户、密码、分组的操作都可以保存下来,通过telnet登录时也会进行密码验证!(经测试,这个方法是可以正常使用的。)
    脚本示例

    展开全文
  • 首先,如果你忘记了root密码,请看“Linux下如何修改用户密码和root密码“下面进入正文:Linux “文件系统” 中的文件默认归root用户所有。当我们要安装某些软件(如flash player 9)时,需要将一些文件粘贴到/usr/...

    首先,如果你忘记了root密码,请看“Linux下如何修改用户密码和root密码“
    下面进入正文:Linux “文件系统” 中的文件默认归root用户所有。当我们要安装某些软件(如flash player 9)时,需要将一些文件粘贴到/usr/lib/firefox/plugins中(文件系统根目录为‘/’,主文件夹根目录为‘. /’)。此时,万恶的linux会提示:“您没有足够的权限执行此操作!“此时我们要作的就是修改这些文件夹的权限,使user用户(user代指登录linux所用的用户名)能够向这些文件夹中添加内容。
    首先打开终端,输入su root,回车敲入root密码。此时你在shell中的身份是root,在xwindows下的身份是user。在终端下输入:chmod(空格)a+u(空格)/usr/lib/firefox/plugins 回车,这样就使所有用户对/usr/lib/firefox/plugins拥有和root一样的权限。此时在xwindows下就能方便的对 /usr/lib/firefox/plugins中的内容进行修改了。
    附:改变文件或目录权限命令:
    chmod [who][+/-/=][mode] 文件名
    具体指令参看 man chmod

    转载于:https://www.cnblogs.com/sorvey/archive/2012/07/30/2614471.html

    展开全文
  • linux 下如何添加快捷键

    千次阅读 2016-08-31 11:05:30
    1 进入用户的根目录 cd $HOME 或 cd etc (建议在etc改,这样无论用哪个用户登录,都可以使用快捷命令) 2 然后打开bashrc若不存在则新建bashrc文件 vi bashrc   3 在bashrc页面最后加上想要加的东西 ...
  • Linux 下如何添加开机自启动文件

    千次阅读 2018-09-01 15:47:20
    【导读】 Linux系统在启动的过程中,会先启动内核,通过内核初始化所有的设备。在初始化完这些设备后,会...该文件存放于根目录下的 /etc/ 文件夹中,通过编辑该文件,在文件中 exit 0 语句的前面加入执行语句,...
  • 前言 鉴于本人在安装过程中遇到的问题...第二步:在根目录下下载 node 安装包(我下载到了根目录,其余地方也可以) wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz 说明:wget 命令后跟下载...
  • 刚开始接触Linux的人,忘记了root密码可能会不知所措。... 1.开机之后在内核上敲击e,然后编辑选项 2.在linux16这一行,将红框内的内容改成rw rd.break ...# chroot /sysroot //进入系统的根目录 # passwd //重置
  • mac使用doc连接Linux服务:前提:要有你需要连接的服务器的ip,端口号,服务器上的账户和密码1、首先打开终端,然后输入sudo su - 回车进入根目录2、然后输入:ssh -p 端口号 服务器用户名@ip (例如ssh -p 22 ...
  • 如何迁移home目录

    2020-12-14 22:48:38
    linux下如何迁移home目录 sda2磁盘的东西太多爆满了,打算把home目录迁走。 网上查了好多都有问题,自己详细记录一下。如有不对欢迎批评指正。 具体情况: 环境:Ubuntu16.4 根目录:/dev/sda2 目标目录:/dev/sdb...
  • libevent是个高效的异步事件通知库,本文主要讲述在Linux下如何简单使用该库。 一 下载 本文写作时使用的版本是2.1.11,下载地址是https://github.com/libevent/libevent/releases/tag/release-2.1.11-stable 本人...
  • VMware下Linux如何同步windows的时间

    千次阅读 2015-05-21 16:28:30
     (1) 虚拟机上启动linux,以用户权限进入.  (2) 在VMware的菜单栏选择VM->install vmware-tools,此时vmware会把安装文件映射到linux的CD-ROM  (3) 在/mnt目录下创建一个cdrom文件夹,把光驱挂载到cdrom上  ...
  • 进入Spark安装的根目录,在未配置运行的情况,运行命令 ./bin/pyspark [root@Centos-7-3s /]# cd /usr/Spark/spark [root@Centos-7-3s spark]# ls bin data jars LICENSE logs python README.md sbin yarn co
  • linux如何安装windows

    万次阅读 2018-11-16 15:38:39
    首先将windows镜像拷贝到根目录的ios,这个文件可自行选择位置,我这里使用的是windows10,并且已经提前安装了虚拟机组件 然后用root用户的身份在命令行输入 virt-manager 点击file下面的小电脑,然后选择...
  • linux如何安装Tomcat

    2018-04-18 10:43:40
    1、输入cd / 进入根目录2、输入mkdir software 创建software文件夹,并且上传apache-tomcat-7.0.29.zip到software文件夹 3、输入cd /home 进入home目录,输入mkdir tomat7 创建tomat7文件夹4、输入unzip/...
  • win7 ubuntu双系统,windows空间不够了,ubuntu当初分多了又未使用,又不想删除,如何把ubuntu的根目录缩小一些? 网上搜到的调整linux根目录的文章,绝大部分都是如何扩大的,缩小的不多。 在windows中无法修改...
  • 现在要挂载上系统盘进入救援模式,若分区表未被破坏,则救援模式会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的/mnt/sysimage文件夹中。进入“bash-4.2#”的shell环境后,重写或通过之前的备份文件...
  • 3.1进入根目录 : find | grep testdiver ,可查看/dev/testdiver 3.2 进入ls /dev/test* ,可查看/dev/testdiver 4.再次查看驱动加载时的调试信息: 进入根目录 : dmesg | grep testdi* 查看驱动程序的主...
  • Linux是目录树架构,如何结合目录树...根目录挂载到某分区后,若其的子目录没有另设挂载点,都挂在根目录的分区。 合适的分区方式: 将需要较大容量的目录、读写较为频繁的目录等重要的目录单独设置挂载点,这...
  • cd 进入根目录 / 使用 du -h --max-depth=1 命令获取当前目录各目录占用情况 进入占用大的目录清理文件 Tips: 使用 rm -rf 命令时, 删除多个文件可以使用下面通配符 * 号的方式做规则匹配. 如下: `rm .
  • (1)打开Linux Shell(终端),并进入根目录下的mnt目录 cd /mnt (2)在mnt目录创建一个目录cdrom mkdir cdrom (3)挂载光盘 光盘设备名为/dev/sr0 mount –r /dev/sr0 /mnt/cdrom...
  • 如何Linux下安装elasticsearch并且配置集群 操作前准备事项: 1.首先先将三台虚拟机开启,并且要保证三台虚拟机可以互相切换,如果同时要配置多个虚拟机,且每个虚拟机都得开启。 主机上的配置: 1)首先:在主机...
  • linux中一切皆文件,它有一个根目录/,下面有许多子目录,这些目录的文件要存放是需要空间的,我们把这些磁盘给分区后分配给文件使用,即把各个区挂载到各个目录,这些目录是挂载点,我把这些目录挂载点想象成...
  • / 返回上级目录 cd /进入根目录 ls -ld :显示目录的详细信息;ls -ld text查看text目录的详细信息,包括目录权限 mkdir :创建目录;mkdir text/opt 在text目录创建opt目录 pwp:显示当前目录的路径 rm -rf :...
  • 了解上述内容之后,在linux系统桌面打开一个终端,输入命令 cd ~ 将目录切换到用户的根目录下。ls -a显示该目录所有文件内容。ls全称是list,-a的意思是all。 准备进入.bashrc进行修改 2.vi...
  • 最有用的就是这个包里的grldr这个文件了,它基本上可以自己搜索到硬盘上的,就像我安装ubuntu,就把这个文件丢到winxp的系统根目录下,然后编辑boot.ini,加入一行“c:/grldr=grub”,重新启动系统,直接进入grub,...
  • 忘记linux的root登录密码如何恢复 1.重启linux系统,出现GRUB启动菜单 2.按e健进入编辑状态。 3.按向的方向健,划到linux16所在...6.以可写方式挂载硬盘中的根目录,并重设root密码。 switch_root:/# mount -o rem...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

linux下如何进入根目录

linux 订阅