NOOBS安装自定义系统

本文地址:http://blog.csdn.net/yunnysunny/article/details/44726905

简介

前段时间折腾了一下树莓派,树莓派的操作系统安装时需要自己烧录img文件到SD卡中。烧录SD卡大体分为两种方式一种是吧一个img文件烧录到整张卡中,另一种是通过NBOOBS将多个img文件烧录到一张卡中。前者在windows下通过Win32DiskImager这个软件就能轻松的做到,后者需要使用到NBOOBS,下载地址:http://downloads.raspberrypi.org/NOOBS_latest 。

NOOBS提供多个操作系统共存的方案,他提供了一个图形化的安装界面,在安装过程中读取定义好的配置文件,来选择要安装的各个系统。通过上文提到的下载地址下载回来的NOOBS,里面只预置了Raspbian这个系统,但是我们想安装一些自定义的系统改怎么办呢?这就是本文要解决的问题。

实现

关于添加自定义操作系统的问题,在NOOBS的github文档上也是有说明的,详见这里。假设我们现在要安装RetroPie这个系统,我们首先从官方地址上把它下载下来。根据github上提到的教程,那么制作NOOBS系统就应该是下面几步。

  1. 下载NOOBS.
  2. 解压下载后的文件。
  3. 进入os文件夹。
  4. 选择其中的一个子文件,拷贝一份新的。这里就拿Raspbin这个文件夹开刀。拷贝完成后,将文件夹改名RetroPie。
  5. 好,现在我们修改RetroPie文件夹下的os.json文件,这里面定义的数据将会在安装的时候显示为操作系统的标题和描述等信息。我大体上将其改为如下形式:

    {"name": "retropie","version": "2.3","release_date": "2014-05-31","kernel": "3.12","description": "The RetroPie Project started with the idea of turning the Raspberry Pi into a retro-gaming console and evolved ever since.","url": "http://blog.petrockblock.com/retropie/","username": "pi","password": "raspberry","feature_level": 123900
    }
    

    配置文件2.1 os.json

其中name肯定就是名称了,然后是version版本,description描述等信息。
6. 【可选】你可以放一个RetroPie.png来定义一下当前操作系统的logo。
7. 【可选】你可以在文件夹slides_vga中放一下说明性的图片,他会在安装过程中当成幻灯片播放出来。
8. 这一步是进行分区文件配置,先把做好的分区文件partitions.json贴出来:

{"partitions": [{"label": "boot","filesystem_type": "FAT","partition_size_nominal": 60,"want_maximised": false,"uncompressed_tarball_size": 11,"mkfs_options": "-F 32"},{"label": "root","filesystem_type": "ext4","partition_size_nominal": 2700,"want_maximised": true,"mkfs_options": "-O ^huge_file","uncompressed_tarball_size": 2203}]
}

配置文件2.2 partitions.json

可以看到在json文件中属性partitions是一个数组类型,数组每个元素定义的是一个分区信息。首先看label为boot的分区,这是一个FAT格式的分区,被用作操作系统启动分区;然后label为root的是ext4分区,里面存放linux操作系统分区。partition_size_nominal是说分区的大小,want_maximised是说当前分区是否需要被扩展,如果为false,则分区的大小就是partition_size_nominal的指定值,如果为true,则noobs会根据sd卡的大小尽量的分配尽可能多的空间给当前分区。
9. 之前说过,我们从retropie官网上下载下来它的安装文件,将其解压后我们得到一个img文件。按照noobs给出的文档,根据partitions.json中的配置的信息,我们应该生成两个压缩文件,分别为boot.tar.xz和root.tar.gz,文件名实际上对应的是配置文件中的label属性。那么我们现在得到的是img文件,怎样得到这两个文件呢?
如果你是用linux,这个问题很好解决,linux下可以使用mount命令直接把img文件挂载到指定目录上;如果使用windows,那就只能用虚拟机了。好吧,我就是用的windows,打开自己的虚拟机,通过vbox上的共享目录,来访问windows上的这个img文件。

图2.1 共享文件夹设置1
在弹出的界面中新增一个共享设置,我们假设img文件放在e:\sharing下,那么可以做如下设置:

图2.2 新建共享
最后在ubuntu下通过命令mount -t vboxsf sharing /mnt/share来加载这个共享(这里假设/mnt/share目录已经存在了)。在/mnt/share下我们用fdisk命令来查看img文件内部的分区情况:

fdisk -lu RetroPieImage_ver2.3.img

该命令将会输出如下内容:

Disk RetroPieImage_ver2.3.img: 3460 MB, 3460300800 bytes
255 heads, 63 sectors/track, 420 cylinders, total 6758400 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb设备 启动 起点 终点 块数 Id 系统
RetroPieImage_ver2.3.img1 8192 122879 57344 c W95 FAT32 (LBA)
RetroPieImage_ver2.3.img2 122880 6676479 3276800 83 Linux

通过输出可以轻易的发现,img文件中有两个分区,第一个分区从8192扇区开始,第二个分区从122880扇区开始,然后输出信息还指示一个扇区是512字节。接下来我们创建两个目录来加载这两个目录:

sudo mkdir /mnt/share/img1
sudo mkdir /mnt/share/img2

接下来是mount命令的使用,mount命令的-o参数可以指定从某一个字节处开始mount,那么加载第一个分区的命令就是如下所示了:

sudo mount -o loop,offset=$((8192*512)) RetroPieImage_ver2.3.img /mnt/share/img1

现在我们进入img1目录,进行打包:

tar -cvpf ../boot.tar .

其中打包的时候我们制定了p参数,这里是告诉tar命令,在tar命令运行时,要保留原文件的权限属性不变。
接着就是使用xz命令就行压缩了:

xz -9 -e boot.tar

最终生成一个boot.tar.xz文件,拷贝到文件夹RetroPie中。同理我们可以再生成一个boot.tar.xz文件。
10. 最后我们就是格式化SD卡了,使用SDFormatter(下载页面地址)将你的SD卡拷贝,然后将制作好的noobs文件全部拷贝到sd卡中,保证recovery.img在sd卡根目录:


图2.3 sd卡根目录
至此一个自定义的操作系统已经成功制作完成,将sd卡插入树莓派就可以安装了。

NOOBS安装自定义系统相关推荐

  1. 【树莓派】使用NOOBS安装树莓派系统

    [树莓派]使用NOOBS安装树莓派系统 通过NOOBS进行安装 什么是NOOBS New Out Of Box Software (NOOBS)(NOOBS)是Raspberry Pi的一个简单的操作 ...

  2. 【树莓派】64G的SD卡无法使用NOOBS安装树莓派的问题

    [树莓派]64G的SD卡无法使用NOOBS安装树莓派的问题 问题描述 1.购买的闪迪64GB内存卡无法使用NOOBS安装 2.系统自带格式化工具无法支持将内存卡格式化为FAT32格式 原因分析 1.使 ...

  3. Raspberry Pi 3使用IoT Dashboard和NOOBS 安装 windows IoT以及Raspbian 系统

    Raspberry Pi 3使用IoT Dashboard和NOOBS 安装 windows IoT以及Raspbian 系统 主要介绍Raspberry的两个主要系统win10 IoT和Raspbi ...

  4. 使用硬盘,安装双系统,Win7+CentOS

    我用那个U盘装了很多次都不行,都是说找不到文件.最后就找了一篇博客看如何安装双系统,最后发现原来可以用硬盘安装的.经过5个多小时终于完成了.^-^. 1.首先是分区,可以使用Window7自带的磁盘管 ...

  5. 在VMware15中创建虚拟机安装ubuntu系统(超详细教程)

    此篇博文分享幼儿园老小(本人)创建虚拟机安装ubuntu系统的详细操作过程,希望对新手有所帮助咯!(大佬请自行略过哈哈) 我的下载地址详情如下: 下载请戳–>Ubuntu18.04/64位下载地 ...

  6. Mac安装双系统-win10

    选择并下载windows镜像 我安装的是win10 64位专业版,很多地方都可以下载的到windows系统镜像,我是在MSDN,我告诉你下载的.win10有家庭版.专业版.企业版和教育版.不同的版本功 ...

  7. linux系统qt中make安装,Linux系统下Qt的基本安装和配置

    Qt Creator支持中文,启动速度比Eclipse.Netbeans更快,界面也更美观,跟输入法Fcitx协作良好(光标跟随). 你既可以把Qt Creator当代码编辑器作为vim辅助,好处在于 ...

  8. 《Linux就该这么学》培训笔记_ch01_部署虚拟环境安装Linux系统

    <Linux就该这么学>培训笔记_ch01_部署虚拟环境安装Linux系统 文章最后会post上书本的笔记照片. 文章主要内容: 在虚拟机中安装红帽RHEL7系统 在Linux系统中找回r ...

  9. 为安装有系统及应用的服务器更换硬盘方法一例

    为安装有系统及应用的服务器更换硬盘方法一例 前几天给一个客户新配置了台服务器,该服务器配置了3块1 TB的7200转的SAS硬盘,该服务器外接了一个光纤存储.客户反应服务器很慢,主要是在数据拷贝时慢. ...

最新文章

  1. 设备物理像素、设备独立像素
  2. zookeeper源码分析之六session机制
  3. 浏览器控制台执行代码_JavaScript 和 浏览器那些事
  4. silverlight中如何方便在多个场景即Xaml文件之间随意切换?
  5. 【DP】回文词 (ssl 1813)
  6. [洛谷P3957] 跳房子
  7. 海龟交易法则02_揭秘海龟思维
  8. 周五,放松心情,听我来分享问题背后的背后(一)
  9. 漫射光层析成像的正问题理论模型(一)——蒙特卡洛模型概述
  10. 高斯列主元消去法matlab,高斯列主元消去法解线性方程组的实现
  11. i.e.、e.g.、etc.、et al、viz各种缩写都是什么意思?一文搞懂各种缩写
  12. linux应用开发 — 控制LED设备
  13. Customizing Navigation Bar and Status Bar in iOS 7
  14. 第三天.......
  15. 牛顿下山法求解非线性方程(组)(C实现)
  16. Google Interview - 数字旋转180度
  17. 恒锋转债上市价格预测
  18. 车用摄像头的一个应用(想法)
  19. a链接刷新页面与js刷新页面总结
  20. (读书笔记一)Ruby.new

热门文章

  1. 2021年5月16日python写的小游戏(7)——勇闯一百层,键盘控制,求绝对值
  2. ROS(10):mac 下树莓派Raspberry Pi 烧录 img
  3. linux find查找重复文件
  4. GitHub上有趣、好玩的开源项目推荐
  5. $.ajax同步/异步(async:false/true)
  6. react以及常见前端面试题(看这一篇就够了)持续更新中...
  7. 4.1.2 数据库中间件设计要点
  8. 微软拟推“超人”和“特斯拉”两款新手机
  9. 高架桥以及立交桥精准导航想法
  10. JavaScript延迟执行,定时器