Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。开源社区版本以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。下面就这些不同的Linux发行版进行简单的分析。

Ubuntu

Ubuntu近些年的粉丝越来越多,Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数硬件有着良好的兼容性,包括最新的图形显卡等等。这一切让Ubuntu越来越向大众化方向发展。但别忘了:你所需要的只是一个简约、稳定、易用的服务器系统而已!

Ubuntu的图形界面固然漂亮,但这也决定了它最佳的应用领域是桌面操作系统而非服务器操作系统。如何你希望在学习Linux的过程中有个沉浸式的环境,那么Ubuntu的确不错:仅仅安装在自己的电脑中而非服务器中。从这一点来讲,Ubuntu并没有在VPS安装的操作系统选择之列,相信你也不会为了那数百M的驱动与宝贵的内存买单。

CentOS

你会发现非常多的商业公司部署在生产环境上的服务器都是使用的CentOS系统,CentOS是从RHEL源代码编译的社区重新发布版。CentOS简约,命令行下的人性化做得比较好,稳定,有着强大的英文文档与开发社区的支持。与Redhat有着相同的渊源。虽然不单独提供商业支持,但往往可以从Redhat中找到一丝线索。相对debian来说,CentOS略显体积大一点。是一个非常成熟的Linux发行版。

Debian

一般来说Debian作为适合于服务器的操作系统,它比Ubuntu要稳定得多。可以说稳定得无与伦比了。debian整个系统,只要应用层面不出现逻辑缺陷,基本上固若金汤,是个常年不需要重启的系统(当然,这是夸张了点,但并没有夸大其稳定性)。debian整个系统基础核心非常小,不仅稳定,而且占用硬盘空间小,占用内存小。128M的VPS即可以流畅运行Debian,而CentOS则会略显吃力。但是由于Debian的发展路线,使它的帮助文档相对于CentOS略少,技术资料也少一些。

Raspbian is a free operating system based on Debian Linux, and it is optimized Raspberry Pi.

下载和安装Raspberry Pi OS(以前称为Raspbian)

打开raspberrypi官网,www.raspberrypi.org/ ,进入software,可以看到有三种下载方式。

image-20210316090859590

我选择full版,带有推荐软件的。

image-20210318231323830

下载2021-01-11-raspios-buster-armhf-full.zip,共2.8g

再下载balenaEtcher软件或者Raspberry Pi Imager,是一种镜像刻录工具。打开来,选择Flash from file,选择刚刚下载的2.8g的zip。第二步select target选择自己的SD卡,记得需要格式化。

image-20210318231625865

刻录完成之后,SD卡插至树莓派上,接上电源,自动安装系统,接着填写必要信息,接上wifi或网线,系统就安装完成了。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.11-v7l+ #1399 SMP Thu Jan 28 12:09:48 GMT 2021 armv7l GNU/Linux
pi@raspberrypi:~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

processor : 1
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

processor : 2
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

processor : 3
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

Hardware : BCM2711
Revision : b03111
Serial : 100000001c6c37b2
Model : Raspberry Pi 4 Model B Rev 1.1

安装dart

https://blog.csdn.net/weixin_44601948/article/details/105620588

Dart SDK已经在打包在Flutter SDK里了,没有必要单独安装Dart。

windows下安装flutter

https://flutter.cn/docs/get-started/install/windows

下载安装

image-20210317101157787

解压 环境变量

image-20210317101223767

安装 Android Studio

image-20210317101415553

运行 Android Studio,并进入 ‘Android Studio Setup Wizard’,这会安装最新的 Android SDK, Android SDK Platform-Tools 以及 Android SDK Build-Tools,这些都是在开发 Android Flutter 应用时所需要的。

记得sdk安装的目录!

image-20210317121537227

一路y,最终。

image-20210317121600734

flutter使用

如果你在国内使用 Flutter,那么你可能需要找一个与官方同步的可信的镜像站点,帮助你的 Flutter 命令行工具到该镜像站点下载其所需的资源。你需要为此设置两个环境变量:PUB_HOSTED_URLFLUTTER_STORAGE_BASE_URL,然后再运行 Flutter 命令行工具。

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

一些常用flutter指令

flutter creat 创建项目

进入项目根目录

flutter run

image-20210319194525325

Flutter应用模板

  1. 导入包。
import 'package:flutter/material.dart';

此行代码作用是导入了Material UI组件库。Material (opens new window)是一种标准的移动端和web端的视觉设计语言, Flutter默认提供了一套丰富的Material风格的UI组件。

  1. 应用入口。
void main() => runApp(MyApp());
  • 与C/C++、Java类似,Flutter 应用中main函数为应用程序的入口。main函数中调用了runApp 方法,它的功能是启动Flutter应用。runApp它接受一个Widget参数,在本示例中它是一个MyApp对象,MyApp()是Flutter应用的根组件。
  • main函数使用了(=>)符号,这是Dart中单行函数或方法的简写。
  1. 应用结构。
  • MyApp类代表Flutter应用,它继承了 StatelessWidget类,这也就意味着应用本身也是一个widget。
  • 在Flutter中,大多数东西都是widget(后同“组件”或“部件”),包括对齐(alignment)、填充(padding)和布局(layout)等,它们都是以widget的形式提供。
  • Flutter在构建页面时,会调用组件的build方法,widget的主要工作是提供一个build()方法来描述如何构建UI界面(通常是通过组合、拼装其它基础widget)。
  • MaterialApp 是Material库中提供的Flutter APP框架,通过它可以设置应用的名称、主题、语言、首页及路由列表等。MaterialApp也是一个widget。
  • home 为Flutter应用的首页,它也是一个widget。
  1. 首页

    MyHomePage 是Flutter应用的首页,它继承自StatefulWidget类,表示它是一个有状态的组件(Stateful widget)。关于Stateful widget我们将在第三章“Widget简介”一节仔细介绍,现在我们只需简单认为有状态的组件(Stateful widget) 和无状态的组件(Stateless widget)有两点不同:

    1. Stateful widget可以拥有状态,这些状态在widget生命周期中是可以变的,而Stateless widget是不可变的。

    2. Stateful widget至少由两个类组成:

      • 一个StatefulWidget类。
      • 一个 State类; StatefulWidget类本身是不变的,但是State类中持有的状态在widget生命周期中可能会发生变化。

      _MyHomePageState类是MyHomePage类对应的状态类。

树莓派4B板载资源介绍

image-20210318112405257

image-20210318112640216

img

img

windows系统下vscode通过ssh远程树莓派

https://code.visualstudio.com/docs/remote/ssh

  • 在树莓派系统的applications menu首选项raspberry pi configurationInterfaces中开启SSH

    image-20210528155231462

  • 修改树莓派的用户名,在System选项卡中查看passwordHostname,打开一个终端会话,您应该看到如下提示:

    pi@raspberrypi: ~ $

    在每个命令后都会看到的提示(pi @ raspberrypi:〜$)提醒您用户名User(pi)和计算机名HostName(raspberrypi)。 〜字符是您的主目录(/ home / pi)的简写。

接着在客户端windows的vscode上,输入F1打开命令面板,输入remote ssh connect to host,选择Configure SSH Hosts. 再选择自己用户目录下.ssh文件夹下的config文件,进行配置,Host填ip地址。树莓派 Raspbian 系统默认的主机名HostName为 raspberrypi,这里我修改的为pi

img

接着再进行Connect to host选择刚刚的10.0.1.83就可以连接到树莓派了。

如果还不成功,请删除known_hosts文件,https://www.huaweicloud.com/articles/85f8a5b26c2827208e44708b8c559e92.html

成功。

image-20210528154606211

image-20210528161322051

使用PuTTY连接树莓派

https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp

下载putty,查看树莓派右上角的ip。

image-20210530120945956

Hostname: pi

password : pi

You are now able to run your Raspberry Pi in “Headless-mode”, meaning you do not need a monitor or keyboard. And if you have a WiFi connection, you do not need a ethernet cable either, just the power cable!

如果需要安装nodejs,可以继续参考上面的链接。

windows远程桌面连接树莓派,通过xrdp

https://gitee.com/null_695_7527/raspberry_school_learning/tree/master/01.%E6%A0%91%E8%8E%93%E6%B4%BE%E5%BC%80%E6%9C%BA%E5%87%86%E5%A4%87

image-20210318161025649

image-20210318161050426

使用flutter-pi运行flutter程序

在上文提到的,先在windows下开发应用,接着通过flutter-pi运行flutter程序。

首先需要安装flutter引擎二进制文件https://github.com/ardera/flutter-engine-binaries-for-arm其中注意,在windows上开发的flutter SDK版本需要在stable模式下,并且需要和flutter-pi的版本一致。

按照 https://github.com/ardera/flutter-pi 进行配置即可。

其中,可能会遇到显示频率的问题,安装触摸屏驱动来解决 https://github.com/raspberrypi/linux/issues/3777 https://github.com/ardera/raspberrypi-fast-ts。

遇到该问题

image-20210530215143549

https://github.com/ardera/raspberrypi-fast-ts/issues/4#issue-782695302 按照该方法,

image-20210530215238779

接着执行,遇到下面的结果,遇到警告,先不管它。

image-20210530215306664

image-20210530215339440

执行完毕。

树莓派配置git镜像

以下两个步骤建议都进行,此时在树莓派的环境下便可进行git操作。

  1. https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/

  2. 当需要树莓派连接到git仓库时,树莓派上配置git:设置用户标识、配置git服务器 https://blog.csdn.net/baiguoxiong/article/details/84874860

下载
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
更新

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

并重启终端模拟器。

将代码输入Terminal中即可git clone下载。

记得可以尝试通过ssh方式clone!

而在windows下

git config --list查看已经配置好的信息

配置git socks5代理

git config --global http.proxy 'socks5://127.0.0.1:1081' 
git config --global https.proxy 'socks5://127.0.0.1:1081'

树莓派设置软件源镜像

为什么叫镜像,是因为镜像站每隔一段时间(几分钟)便会使自己和国外源保持同步,维持和国外源一模一样的软件资源列表,就像照镜子一样。

软件源是指 debian 系操作系统的应用程序安装包仓库,很多的软件都会这收录到这个仓库里面。而树莓派的 raspberrypi 操作系统也是基于 debian 的,所以树莓派也有自己的软件源,用来收录各种树莓派应用程序。

默认情况下,树莓派软件源地址是 http://archive.raspbian.org/,位于欧洲,在国内访问是非常慢的,经常只有几 k 每秒的下载速率。所以我们在玩转树莓派之前,强烈推荐替换成国内的软件源。

https://mirror.tuna.tsinghua.edu.cn/help/raspbian/

# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi

# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

树莓派学习笔记——文件管理及常用命令

https://blog.csdn.net/youngandyang/article/details/100042966?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

sudo shutdown -h now

ctrl+d 关闭终端。

https://blog.csdn.net/weixin_43336281/article/details/97373288

https://www.jianshu.com/p/67b9e6ebf8a0

检查包版本:

sudo apt-cache policy libstdc++6

Sudo 的全称为:super user do。 顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限。

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

apt [options] [command] [package ...]
  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

apt 常用命令

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

    列出可更新的软件包及版本信息:apt list —upgradeable

    升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  • 安装指定的软件命令:sudo apt install

    安装多个软件包:sudo apt install

  • 更新指定的软件命令:sudo apt update

  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show

  • 删除软件包命令:sudo apt remove

  • 清理不再使用的依赖和库文件: sudo apt autoremove

  • 移除软件包及配置文件: sudo apt purge

  • 查找软件包命令: sudo apt search

  • 列出所有已安装的包:*apt list —installed*

  • 列出所有已安装的包的版本信息:apt list —all-versions

安装node和npm

https://zhuanlan.zhihu.com/p/127757097

npm更换国内源。

npm install :每一个node项目都有一个package.json文件,里面有很多组件信息

使用npm install将按照package.json安装所需要的组件放在生成的node_modules文件夹中

rn项目下的每一个文件中都可以通过import引入node_modules的组件来加以使用

遇到的问题

利用gitee来clone https://blog.csdn.net/u011386173/article/details/109099134?spm=1001.2014.3001.5501

Flutter开发 - 卡在 Running “flutter pub get” in xxx https://www.jianshu.com/p/fe1354db42b2

image-20210322093157733

windows下设置git代理 https://blog.csdn.net/qq_29545715/article/details/103576549