b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

从Ubuntu平台(使用x86_64和ar)构建ubuntu rootfs系统

电脑杂谈  发布时间:2020-07-20 10:46:27  来源:网络整理

bootx盘可以格式化吗_电脑c盘可以格式化吗_bootx盘可以格式化吗

内容

ubuntu-base是Ubuntu正式构建的最小的ubuntu文件系统. 它包括debain软件包管理器. 基本软件包的大小通常只有几十兆字节. 它具有完整的ubuntu软件源支持. ubuntu软件通常是稳定的. ubuntu-base按需安装Linux软件,并且可以进行深度定制...,通常用于嵌入式rootfs构建.

几种常见的嵌入式文件系统构建方法: busybox,yocto,builroot,我认为它们不如Ubuntu方便,强大的担保系统,强大的社区支持,您可以通过apt-get install直接安装新软件包. 本文介绍如何基于Ubuntu平台构建完整的ubuntu系统. 对于已安装archlinux或构建LFS的朋友,此方法不熟悉.

ubuntu支持许多架构,包括arm,X86,powerpc,ppc等. 本文主要以X86_64为例,arm和arm64也给出了简单的生产步骤,其他架构操作也与此相似.

从ubuntu最小的文件系统ubuntu-base开始,使用X-windows构建完整的系统.

/dev/sda1    #UEFI分区 500MB
/dev/sda2    #宿主系统根分区 20GB
/dev/sda3    #用来构建ubuntu-base 5GB

回送文件系统是Linux系统中非常有趣的部分. 我们通常在设备(例如磁盘分区)上创建文件系统. 这些存储设备可以以设备文件的形式使用,例如/ dev / device_name. 为了在存储设备上使用文件系统,我们需要将其挂载到一些称为挂载点的目录中. 环回文件系统是指在文件而不是物理设备中创建的那些文件系统. 我们可以将这些文件作为文件系统挂载在挂载点上. 实际上,这使我们可以在物理磁盘上的文件中创建逻辑磁盘.

我们的目的: 创建一个模拟10GB物理磁盘的循环文件,并将其在循环镜像中分为两个区域:

即创建一个大小为10G的文件.

$dd if=/dev/zero of=ubuntu_base.img bs=1G count=10
记录了10+0 的读入
记录了10+0 的写出
10737418240 bytes (11 GB, 10 GiB) copied, 84.1916 s, 128 MB/s

您会发现所创建文件的大小超过1GB. 这是因为硬盘是一个块设备,并根据块大小的整数倍分配存储空间. 此时,您可以直接格式化此文件并将其用作整个分区,如下所示.

使用mkfs命令将1GB文件格式化为ext4文件系统:

$mkfs.ext4 ubuntu_base.img

您可以使用以下命令来查看它已经是文件系统:

$ file ubuntu_base.img
loobackfile.img: Linux rev 1.0 ext4 filesystem data, UUID=3be1775c-8976-445d-9134-8daabb2bade7 (extents) (64bit) (large files) (huge files)

现在您可以挂载回送文件:

$sudo  mkdir /mnt/loopback
$sudo mount -o loop ubuntu_base.img /mnt/loopback

-o loop用于挂载回送文件系统.

这实际上是一种快速安装方式,我们无需手动连接任何设备. 但是在内部,此回送文件连接到名为/ dev / loop1或loop2的设备.

我们也可以手动进行:

$sudo losetup /dev/loop1 ubuntu_base.img
$sudo mount /dev/loop1 /mnt/loopback

使用以下方法卸载(umount):

$sudo umount /mnt/loopback

您还可以将设备文件的路径用作umount命令的参数:

bootx盘可以格式化吗_电脑c盘可以格式化吗_bootx盘可以格式化吗

$sudo umount /dev/loop1

以上是将整个文件用作一个分区的方法,但我们的目的是将文件分为多个区域并继续.

您可以使用fdisk或parted创建分区. 我更喜欢分开,这对于设置启动分区非常方便.

$ sudo parted ubuntu_base.img
GNU Parted 3.2
使用 /home/work/loobackfile.img
欢迎使用 GNU Parted! 输入 'help'可获得命令列表.
(parted) 

新的UEFI分区:

对于UEFI引导方法,首先将创建标签设置为msdos;

(parted) mklabel msdos

创建分区大小为500M:

(parted)mkpart primary fat32 0 500MB

检查新创建的分区,分区号为1:

(parted) p
Model:  (file)
磁盘 /home/work/ubuntu_base.img: 10.7GB
Sector size (logical/physical): 512B/512B
分区表:msdos
Disk Flags:
数字  开始:  End    大小   类型     文件系统  标志
 1    512B    500MB  500MB  primary  fat32     lba
(parted)

将此分区设置为引导(UEFI引导)分区:

(parted) set 1 boot on
(parted) p
Model:  (file)
磁盘 /home/work/ubuntu_base.img: 10.7GB
Sector size (logical/physical): 512B/512B
分区表:msdos
Disk Flags:
数字  开始:  End    大小   类型     文件系统  标志
 1    512B    500MB  500MB  primary  fat32     启动, lba
(parted)

设置后bootx盘可以格式化吗,您可以通过p命令看到标记处有引导标记.

使用剩余空间创建根分区:

(parted) mkpart primary ext4  500MB 100%

现在已经创建了两个分区,使用p查看,q保存并退出:

(parted) p
Model:  (file)
磁盘 /home/work/ubuntu_base.img: 10.7GB
Sector size (logical/physical): 512B/512B
分区表:msdos
Disk Flags:
数字  开始:  End     大小    类型     文件系统  标志
 1    512B    500MB   500MB   primary  fat32     启动, lba
 2    500MB   10.7GB  10.2GB  primary  ext4      lba

图像文件已分为两个区域,但尚未格式化. 要格式化两个内部分区,您需要先将两个分区安装到设备上.

有一种更快的方式将所有分区挂载到mirror-kpartx中. 默认情况下,它没有安装在系统中,您必须使用程序包管理器来安装它:

$sudo apt-get install kpartx

执行以下命令以自动将分区挂载到映像文件中:

$sudo kpartx -v -a ubuntu_base.img
add map loop0p1 (253:0): 0 976562 linear 7:0 1
add map loop0p2 (253:1): 0 19994624 linear 7:0 976896

此命令在磁盘映像中的分区与/ dev / mapper中的设备之间创建映射,然后可以格式化/挂载这些设备.

bootx盘可以格式化吗_电脑c盘可以格式化吗_bootx盘可以格式化吗

格式化两个分区:

$ sudo mkfs.fat -F 32 /dev/mapper/loop0p1  #loop0p1 回环设备的分区1
$ sudo mkfs.ext4 /dev/mapper/loop0p2	#loop0p1 回环设备的分区2

格式更改完成后,您可以安装两个分区:

$ sudo mkdir /mnt/loopback
$ sudo mount /dev/mapper/loop0p2  /mnt/loopback  #挂载根分区
$ sudo mkdir -p /mnt/loopback/boot/efi
$ sudo mount /dev/mapper/loop0p1  /mnt/loopback/boot/efi  #挂载uefi启动分区

格式化目标分区并将其挂载到/ mnt目录. 如果要挂载其他目录,则需要更改之后的所有命令:

sudo mkfs.ext4 /dev/sda3
sudo mount /dev/sda3 /mnt

将ubuntu-base-16.04.6-base-amd64.tar.gz解压缩到/ mnt目录:

sudo tar -xpvf ubuntu-base-16.04.6-base-amd64.tar.gz -C /mnt

注意: 您需要在ubuntu-base中保留文件权限和所有者,解压缩时需要root权限或sudo操作,并且-p参数用于保留权限.

在ubuntu-base中有一个默认的ubuntu官方资源. 如果您已连接到Internet,并且对访问官方来源的速度没有限制,则无需进行更改. 配置文件/etc/apt/sources.list替换源. 本文中的主机系统与要构建的系统的硬件体系结构和版本一致,因此只需直接复制即可.

sudo cp /etc/apt/sources.list /mnt/etc/apt/

要进入目标环境,需要连接到Internet,首先需要配置DNS,然后将主机系统文件/etc/resolv.conf复制到/ mnt / etc /目录:

sudo cp /etc/resolv.conf /mnt/etc/

默认情况下,ubuntu-base仅具有root用户. 如果需要创建像普通ubuntu这样的普通用户,则需要将用户默认配置文件夹/ etc / skel添加到Ubuntu-bae,该文件夹包含创建用户时的默认配置文件夹,例如.bashrc,.profile等配置文件. ,如果没有这样的文件夹,则adduser在构造的文件系统中添加的用户会遇到各种问题,因此请将主机系统/ etc / skel复制到ubuntu-base:

sudo cp  -R /etc/skel /mnt/etc/

方法1: 使用原始方法进入chroot环境

安装并激活/ dev: 激活/ dev目录中的设备的常用方法是在/ dev目录中挂载虚拟文件系统(例如tmpfs),然后在出现以下情况时显示该虚拟文件系统: 检测到或打开设备的设备动态创建设备节点. 这通常是由udev在引导过程中完成的. 由于我们新的基于ubuntu的系统没有udev并且尚未启动,因此必须手动挂载和激活/ dev. 这可以通过绑定和挂载主机系统的/ dev目录来实现. 绑定挂载是一种特殊的挂载模式,它允许您在另一个位置创建目录或挂载点的镜像. 运行以下命令以实现:

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

安装虚拟文件系统:

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

进入chroot环境:

chroot /mnt

方法2: 使用arch-chroot

Linux发行版archlinux提供了一个自动chroot脚本arch-chroot,它包括DNS文件的自动配置,虚拟文件​​系统的自动挂载和其他操作,这对于维护linux系统非常方便. chrooting时,无需挂载和其他操作即可直接执行:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-286993-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...