精华内容
下载资源
问答
  • 生成Linux最小系统镜像

    千次阅读 2017-12-19 08:55:38
    最近在用迅为的开发板座学习Linux移植,现在在做Linux最小系统生成,具体可以参考一下这篇博客: http://blog.csdn.net/qq_36788698/article/details/76604137

    最近在用迅为的开发板座学习Linux移植,现在在做Linux最小系统生成,具体可以参考一下这篇博客:

    这个过程的话走一遍就行了。

    我遇到的坑就是安装的是64位的Linux,但是给的编译器是32位。

    需要安装32位的兼容软件  

    sudo apt-get install  libc6-dev-i386

    然后就是一个配置环境变量的问题

    在当前用户下,使用 

    sudo vim .bashrc  命令将编译器的bin路径添加到最后一行

    如果要全部用户都生效,就实现下面的命令,先切换到root 用户:

    su  root

    相同的道理:

    sudo vim .bashrc 

    最后输入 source .bashrc   使环境变量生效


    http://blog.csdn.net/qq_36788698/article/details/76604137


    展开全文
  • TF卡有16G,直接备份出来的img文件就有16G那么大,但是实际装在TF卡中的有用数据却只有几G,再写入就需要32g的卡,这样做出来的img文件就太浪费空间了,因此使用这个方法压缩磁盘,制作小img镜像。 参考教程 ...

    TF卡有16G,直接备份出来的img文件就有16G那么大,但是实际装在TF卡中的有用数据却只有几G,再写入就需要32g的卡,这样做出来的img文件就太浪费空间了,因此使用这个方法压缩磁盘,制作小img镜像。

    参考教程

    https://blog.csdn.net/zhaodeming000/article/details/103198175

    https://blog.csdn.net/u013451404/article/details/80552765

    查看分区信息

    fdisk -l
    

    配置分区

    sudo e2fsck -f /dev/sda2
    
    sudo resize2fs /dev/sda2 10G
    

    重建分区:

    fdisk /dev/sda
    

    删除分区:

    d
    

    新建分区,依次输入:

    n
    p
    2
    【fdisk的起始点】
    +10G
    

    导出
    10504是用sdb2的end扇区
    (最后一个占用的扇区号end512)/(10241024) = 10504计算

    sudo dd if=/dev/sdb of=debian-on-rpi.img bs=1M count=10504
    

    如果要导出到另外的盘需要挂载

    mkdir /ssc
    mount /dev/sdc /ssc
    
    sudo dd if=/dev/sdb of=/ssc/debian-on-rpi.img bs=1M count=10504
    
    展开全文
  • Linux最小系统内核镜像文件的合成(xxx )
    Linux最小系统内核镜像文件的合成(xxx )
    展开全文
  • 编译Linux内核并运行一个最小镜像

    千次阅读 2017-12-26 18:13:07
    需求公司的专用服务器使用自定义Linux内核,运行一个由busybox构成的最小镜像. 由于某些原因, 使用的内核来自其他人已经编译好的,并且也拿不到配置文件。 现在需要: 1. 添加某个专用驱动到内核中,并且添加一些...

    需求

    公司的专用服务器使用自定义Linux内核,运行一个由busybox构成的最小镜像. 由于某些原因, 使用的内核来自其他人已经编译好的,并且也拿不到配置文件。 现在需要:
    1. 添加某个专用驱动到内核中,并且添加一些脚本到新的系统运行镜像包initrd中
    2. 兼容以前的系统镜像,不能出现使用旧的内核搭配新镜像时无法启动的问题

    本文把用到的知识点记录下来,便于有相同需求的同学参考。
    系统内核称为bzImage或kernel , 系统镜像称为 initrd

    包含知识点

    1. Linux启动过程之initrd
    2. BootLoader 之 extLinux
    3. 编译Linux内核的方法
    4. 内核编译时如何选择系统自带的驱动
    5. 如何将私有驱动编译到内核中
    6. 启动内核时,出现 kernel Panic - not syncing 的解决办法
    7. 开机后键盘无法使用的问题解决
    8. 使用busybox制作initrd

    本文中只叙述某些关键点,具体细节可以参考每一节中给出的链接

    1. Linux启动过程之initrd

    1. 机器启动时,首先是 BIOS 运行 ,在磁盘的MBR中,找到BootLoader。
    2. BootLoader运行, BootLoader配置文件会指出系统启动的某些参数, 比如在哪里找到 kernel , 在哪里找到 initrd。
    3. 然后开始加载 kernel , 之后加载initrd 进入到 early user space状态。 initrd 有两种技术,旧的一种使用镜像文件,叫做 init ram disk , 新的一种使用ramfs归档文件,叫做 init ram filesystem ,可能是由于历史原因,ubuntu的系统镜像虽然是新的技术,但文件名仍然看起来像是旧的 intrd*.
    4. initrd启动后,如果是旧的技术ram disk,运行的第一个程序是镜像中的 /linuxrc 脚本 , 如果是新的ram filesytem 运行的第一个程序是 /init脚本 , 一般会在脚本的最后使用 switch_root命令切换根目录到实际的磁盘根目录中。
      由于我司服务器的特殊性, 只是把磁盘挂载为 /data 目录用来存储数据, 系统仍运行在 initrd 环境下,所以没有最后这一步。

    关于两种技术的区别, 请参考内核源码目录下 Documentation/initrd.txt 和 IBM: Linux2.6 内核的 Initrd 机制解析

    要制作支持initrd的内核 参考这个链接 CSDN:移植linux 内核支持ramdisk

    2. BootLoader 之 extLinux

    extLinux是一种启动引导,优点是支持多种启动介质,配置简单。

    一般用法是

    mkdir -p /boot/extlinux
    extlinux --install /boot/extlinux
    cat mbr.bin > /dev/XXX  ##mbr.bin 在extlinux的安装目录下,如果是系统自带的的则可能在  /usr/lib/EXTLINUX/  下, 如果没有,请自行搜索文件位置

    配置文件在安装目录的 extlinux/extlinux.conf

    配置文件中的参数会传给内核 ,通过指定特定的的参数, 可以用来调试内核问题。 系统启动后可以在 /proc/cmdline 中查看

    /root # cat /proc/cmdline 
    vga=0x305 loglevel=3 initrd=/rootfs BOOT_IMAGE=/bzImage 

    extlinux 官网用法介绍

    extlinux.confg 配置文件详解

    3. 编译Linux内核的方法

    Configuring a Linux Kernel

    上面的链接说明了如何编译一个内核

    一般系统的步骤为:

    make menuconfig   #该步骤可能会提示缺少 ncurses , apt install libncurses5-dev 即可
    #配置好选项, 关于如何配置,参考下一节
    make -j4         #开始编译,指定4个线程编译,根据配置的不同,这里可能花费几个小时
    make modules_install   #安装模块
    make install           #安装kernel,initrd 并自动更新引导  内核名称为vmlinuz*  
    

    由于公司的服务器使用busybox最小镜像,只需要编译内核,不需要生成initrd(后面第8节说明如何使用busybox生成initrd), 编译步骤为:

    make menuconfig 
    make -j4 
    make bzImage 

    将 bzImage 拷贝到服务器,然后在 extlinux.conf 中指定为 kernel选项的值即可。 或者 extlinux.conf 中kernel的值为一个符号链接, 这样只需要修改符号链接即可

    4. 内核编译时如何选择系统自带的驱动

    公司服务器硬件比较特殊, 如果直接使用默认的配置生成bzImage,开机后提示没有硬盘,同时键盘也无法使用,无法进入系统调试。

    通用的内核选项可以参考这个链接
    简书:Linux内核编译与管理

    如果编译的内核启动后提示找不到硬盘或者其他驱动问题,可参考这个链接:
    CSDN:制作最小linux内核

    如果要去除所有不必要的驱动和功能, 只保留必要的功能,也可参考上面的链接
    CSDN:制作最小linux内核 , 该文章主要用到命令 lspci -v , lsmod , modinfo

    键盘驱动问题在第7节中专门解决。

    5.如何将私有驱动编译到内核中

    在 linux 内核中增加程序需要完成以下三项工作:
    1. 将编写的源代码复制到 Linux 内核源代码的相应目录
    2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项
    3. 在目录的 Makefile 文件中增加对新源代码的编译条目

    参考这个链接
    CSDN:Linux内核开发之将驱动程序添加到内核

    6. 启动内核时,出现 kernel Panic的解决办法

    旧式 init ram disk initrd的块大小必须和内核编译时的值匹配才能启动
    如果你仔细阅读了第1节,应该不会出现这个 kernel panic。

    然而, 由于公司的服务器内核配置的块大小未知,并且新编译的内核要和以前的兼容,所以必须知道原来的块大小是多少. 大致流程为:
    1. 生成一个512k块大小的系统 , 并把原来的镜像文件拷贝到该镜像中
    2. 使用该镜像作为initrd启动
    3. 检查内核的出错信息并根据该信息修改块大小

    bash# dd if=/dev/zero of=../initrd.img bs=512k count=100
    bash# mkfs.ext2 -F -m0 ../initrd.img
    bash# mount -t ext2 -o loop ../initrd.img /mnt
    bash# cp -r * /mnt        #拷贝需要的文件到镜像
    bash# umount /mnt
    bash# gzip -9 ../initrd.img

    修改initrd为上面生成的压缩文件, 重新启动系统,出现 kernel panic

    Kernel panic - not syncing :VFS: Unable to mount root fs on unknown-block(2,0)
    Kernel Offset:0x0 from 0xffffffff81000000 (relocation randge :0xffffffff80000000-0x0xffffffff9fffffff)

    0xffffffff81000000 和 0xffffffff80000000 相差16M, ‭1677721字节.
    在extlinux.conf 文件中添加配置

    APPEND ramdisk_size=‭16777216‬

    重新启动成功。 因此块大小应该为 16M .

    删掉 APPEND ramdisk_size=‭16777216 根据第1节的方法, 修改内核配置参数

    #make menuconfig
    打开配置菜单,修改两个配置项,分别是:
    - General setup–>选择 Initial RAM filesystem and RAM disk…… 项
    - Device Drivers–>Block devices–>选择 RAM block device support 项
    - device driver->block device里的一个选项,Default Ramdisk 设置ramdisk的大小‭16777216‬

    保存退出, 重新编译即可

    7.开机后键盘无法使用的问题解决

    可能是主板的原因, 编译的内核启动后无法识别键盘, 再bootLoader能使用的键盘,在开机后反而无法使用.
    键盘驱动问题,请参考这个链接
    linux-usb
    该链接说明了 鼠标/键盘/手柄的驱动配置方法

    8. 使用busybox制作initrd

    步骤
    1. 下载 busybox 并解压
    2. 进入目录 make menuconfig ,并配置 Busybox Settings —> Build Options —> Build BusyBox as a static binary (no shared libs) —> yes
    3. make
    4. make install
    5. 需要的系统文件在 busyboxdir/_install/ 下 ,拷贝所有文件到镜像的挂载目录 , 如果使用 init ram disk , 修改 /linuxrc 脚本 为如下内容

    #! /bin/sh
    
    mount -n -t proc proc /proc
    #
    # disable console login
    grep -q console=null /proc/cmdline && sed -i s/^tty/#tty/ /etc/inittab
    #
    # this is a traditional mechanism for initrd
    # notify kernel remount /dev/ram0 as root
    echo 0x0100 > /proc/sys/kernel/real-root-dev
    umount -n /proc

    卸载镜像, 压缩镜像, 请参考第一节

    如果使用 ram filesystem , 删除 /linuxrc 添加 /init

    #!/bin/sh
    #init
    mount -t proc none /proc
    mount -t sysfs none /sys
    
    exec /bin/sh

    打包所有文件为 cpio文件并压缩

    find . | cpio --quiet -H newc -o | gzip -9 -n > /boot/initrd.img

    参考链接
    https://gitlab.eurecom.fr/snippets/23

    展开全文
  • 1. Dockerfile 中可以通过FROM scratch引用一个docker内置的空镜像 2. Docker 容器的内核都是共享宿主操作系统的内核,容器启动后docker会自动在容器内建立系统目录:dev, etc, proc, run, sys 及系统文件 3. Docker...
  • tiny linux iso镜像

    热门讨论 2009-05-07 11:24:15
    世界上最小linux镜像,但是功能丰富。
  • docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像一、docker通过dockerfile构建JDK最小镜像1.1 下载JRE1.2 解压JRE,删除相关不需要文件1.3重新打包1.4创建Dockerfile1.5 docker构建镜像1.6 测试运行二、...
  • linux上制作树莓派最小img镜像

    千次阅读 2018-06-03 01:30:37
    于是想要固化移植成果,需要给移植好的TF卡制作一个img备份镜像,其实最简单的方法就是直接使用dd命令将整个TF卡dd到一个xxx.img文件即可。  但是这样生成的img文件是整个TF卡的大小,我使用的TF卡有16G,因而直接...
  • alpine简称高山的 是一款非常适合做k8s基础镜像linux 1、小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB; 2、安全:面向安全的轻量发行版; 3、简单:提供APK包管理工具,软件的...
  • alpine-node:在Alpine Linux上构建的最小Node.js Docker镜像
  • docker构建JDK最小镜像

    2019-12-14 12:15:15
    一、构建最小JDK 1、解压jre 1 2 # tar -zxvfjre-8u181-linux-x64.tar.gz 2、删除无用文件 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
  • 基于linux镜像,如ubuntu等,普遍有超过100M的大小,安装python环境后能超过300M。由此带来的存储和网络传输负担甚至超过了docker跨平台带来的好处。 但幸运的是,一个特殊的linux镜像——alpi...
  • 2 完善最小系统文件 2.1 创建关键的文件夹 2.2 补充文件夹中的文件 3 安装打包软件编译 4 烧写镜像文件 0 引言 当前阶段的目标是搞定嵌入式Linux,首先要从Linux系统编程入手,熟悉Linux的编程思想及相关API的...
  • Linux最小根文件系统

    千次阅读 2017-08-19 11:30:40
    和C盘一样在某个分区中存放系统启动必须的文件,如内核镜像文件(一般单独存放在一个分区中),内核启动后运行的第一个程序init、给用户提供界面的shell程序、应用程序依赖的库。这些必需、基本的文件合称根文件系统...
  • 制作 OpenStack Linux 镜像

    千次阅读 2017-02-16 16:08:00
    这是 OpenStack 实施经验分享系列的第 1 篇... Linux 镜像的制作方法,后面还会讨论 Windows 镜像。 下载clould 镜像 最简单的方法是使用标准镜像。主流的Linux发行版都提供可以在 OpenStack 中直接使用的cloud镜像
  • openstack 制作linux镜像+centos官方镜像使用教程 工具:VMware Workstation (虚拟机)、CentOS-7-x86_64-Minimal-1511.iso(Minimal是官方最小的centos镜像文件,也可以使用其他镜像正常大小的iso文件)。 1.创建一...
  • 制作树莓派最小镜像-img裁剪瘦身

    千次阅读 2019-01-07 23:29:49
    修改记录 2016年7月28日修改脚本,动态支持树莓派镜像 最近刚做了一套opencv摄像头监控的程序,想将这套程序做一个镜像备份起来,但...即便软件没有占用那么大空间,所以希望将镜像瘦身,做一套最小占用空间的镜...
  • Gentoo Linux最小安装

    千次阅读 多人点赞 2011-12-03 14:13:35
    原创作品,转载请标明出处 ...Gentoo LinuxLinux世界最年轻的操作系统发行版本之一,Gentoo的哲学是自由和选择,它能为几乎任何应用程序或需求自动地作出优化和定制。Gentoo Linux
  • PS:用虚拟机启动系统要加载到软盘驱动器,运行内存不能小于512M 经测试安卓手机用limbo模拟器可以完美运行 简介:MenuetOS是一款为个人计算机开发的操作系统,完全由32/64位汇编语言编写。Menuet64在遵循License...
  • Linux最小化安装

    千次阅读 2017-10-19 16:06:08
    一、介绍我用的平台是网上下载的...接下来是镜像文件,主要有Ubuntu和centos。一般来说服务器多用centos,就是黑屏加命令的那种。而Ubuntu界面做的很好,但是服务器一般都不会有界面的,装了图形界面可能还会破坏稳

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,780
精华内容 13,512
关键字:

linux最小镜像

linux 订阅