SysV Init

RunLevel 在提及Unix System-V Init之前,让我们想一想Windows的安全模式与Android的不同启动模式。 ①在Windows启动的时候,可以按下F8,然后选择“安全模式”启动,而安全模式启动又分为带有网络和不适用网络的安全启动。显然,以不同的安全模式启动,系统在初始化时做的事情也不一样,带有网络的安全模式需要额外的初始化网卡等工作。我不了解Windows加载器(bootloader)是如何将不同启动模式的信息(bootmode)告诉Windows的,但是显然他们有约定一种方式来传递信息。或许是类似于u-boot总的bootargs,或许是在磁盘某个特殊的位置写下了对应的信息。 ②经常刷机或者对Android启动熟悉的同学,应该知道Android有几种不同的启动模式,例如:recovery mode、 fastmode。不同的启动模式作用各不相同,例如fastmode一般用于烧写Image。Android或者由Android系统更改的OS,启动模式一般都是由u-boot(bootloader)通过bootargs传递给内核,或者是在Flash中设置Flag。在Android的init程序(第一个被启动的应用程序,可能由init=来指定)启动后根据标志位或者Flasg启动不同的程序,或者使用uramdisk中不同的init.*.rc文件,从而达到不同bootmode下启动不同service,做不同设置的功能。 对于Linux/Unix系统,对于服务器,或许在它正常运行的时候不应该启动X(GUI),对于桌面Destop则需要启动X,因此不同的bootmode的需求一样存在;Unix SystemV的Init使用runlevel来决定启动不同的程序。符合LBS 4.1.0的系统不同的runlevel的约定如下表(来源于Wikipedia Runlevel词条): LSB 4.1.0 ID Name Description 0 Halt Shuts

Continue reading »

Algorithm 4th environment setup

algs4的官方给出环境搭建步骤较多,在github找了一下,看到了aistrate的repo,发现用这个非常方便。   1. 材料与环境准备 1.1 代码与数据准备

在clone下来的文件夹中有需要的源码,同时还有stdlib.jar与algs4.jar两个Package,是对一些static method的封转,这两个文件需要添加到classpath中。 1.2 安装openjdk

2. 编译与运行环境 2.1  使用命令行 Compile:

Run:

Continue reading »

用gitlabCI快速搭建一个GitServer与CI

一般的公司一般都有一个或者多个中央Git Server,托管着所有项目代码;同时当一个项目很大,由许多个工程组成,例如Tizen和Android,那么一般还有Continuous Integration(CI)在有人push代码到工程时编译整个项目,编译出错一般CI会发邮件给提交者和管理者,从而可以及时修正错误。 Git Server安装与使用 Git server很多,列举一部分: WINDOWS GitStack:免费版只能有两个账号 SCM Manager LINUX GitLab Git-Deamon Git使用-bare生成 获取与安装 这里使用gitlab,到这里下载bitnami gitlab一键安装包。安装非常简单,只需要添加可执行权限然后用sudo ./XXX.run 执行即出现图形化的安装向导。在安装过程中需要设置用户名和密码用于后面配置使用。

Continue reading »

SPI Nor Flash

SPI协议 Slave与Master 一般而言,提供clock的一方称为master。如下图(7-1)中的SCLK方向可知:Processor为master,而Peripheral为slave。 SPI设备接口 SPI uses four main signals: Master Out Slave In (MOSI) Master In Slave Out (MISO) Serial

Continue reading »