nsynote-linux
linux
//烧录linux镜像到u盘,建议直接使用ventoy安装到u盘
//从历史来看,真的别碰Canonical的东西。大多都是Redhat先出新东西,然后Canonical说我也要,然后几年后不声不响默默砍掉。Redhat推systemd,虽然一直被诟病但现在挺香(别整些Unix哲学有的没的,光是以前的firewalld和iptables大混战就让人恶心。init进程大一统绝对是好事),Canonical出upstart,没了。桌面也是,Redhat推Wayland,磕磕绊绊但能用,gnome曾经都默认了。Canonical为了手机的美梦,自己搞Mir,没了。更别提Canonical的各种迷惑操作,自己不用gnome shell反而去fork一份改名Unity出来,也没了。臭名昭著的内部错误,自己搞出来自己的菜单接口。可以说干尽割裂社区的能事,反过来还要被社区的方案暴打。snap更让人火大。压缩运行用了SquashFS也行,但是前期各种不稳定。还有需要一个daemon,挺恼人的。这也罢了,最恶心的是强推snap的行为,甚至自家员工跑去给Arch Wiki乱打包。关于通用打包方式,flatpak本身就是xdg推的嘛,只能桌面也正常。迷惑的是它需要(一般上都会)打包自己的Gtk,所以就巨大,主题还不一样。snap没稳定前打包大的更离谱。通用打包OpenSUSE做过探索,一个OpenSUSE Build Service平台(简称OBS)打包出rpm、deb和pkg,但是实在是太复杂了,称不上银弹级别的解决方案。还是用AppImage叭,Jetbrains家的IDE就是这个打包的。至于隔离运行,systemd based系统有自带的nspawn用。
//Noto Sans CJK SC 与 Noto Sans SC 有什么区别?
SC = Simplified Chinese
CJK = Chinese,Japanese,Korean
如果你只用中文的话,不建议装 cjk,有些时候日文字会取代汉字
//cd -是返回到上一次的工作目录。
//关闭密钥环:
https://jingyan.baidu.com/article/aa6a2c14f1dd130d4c19c419.html
//linux下的EOF(文件结束)是使用CTRL-D键.
//刻录操作系统镜像优先使用 Rufus
//GConf 是在基于 GNOME2 的 Linux 操作系统中实现对应用程序的配置及管理功能的工具。我们可以把 GConf 理解为 linux 操作系统中的注册表。然而,它克服了 Windows 注册表的一些缺点,比如 Windows 注册表遭到破坏,可能会导致操作系统崩溃,而且 GConf 的配置信息存储于纯文本的文件中,可读性很好。在 GNOME3 中,GConf 已经被 DConf/Gsettings 替代,但还是用些应用在使用 GConf。
//添加环境变量:
$ echo 'PATH=$PATH:~/.local/bin' >> ~/.bashrc
//常用工具:
清理磁盘空间:BleachBit
//在Linux上,i386架构是为Intel处理器兼容的标准32bit,amd64是AMD设计但同样兼容Intel处理器的标准64bit。
//关闭登录终端时的笑话:
To turn off greeting (fortune) in terminal window:
$ sudo gedit /etc/bash.bashrc
Comment out the line /usr/bin/mint-fortune
//terminal 的“透视”改为“透明”功能:
执行gconf-editor ,
找到/apps/metacity/general/compositing_manager,勾选它,或者用compiz。
//系统参数编辑器还有 dconf-editor
//Linux Mint Debian Edition (LMDE) is a rolling distribution based on Debian Testing.
//查看版本号:
方法一:
命令:uname -a
作用:查看系统内核版本号及系统名称
方法二:版本
命令:cat /proc/version
作用:查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称
方法三:对于不同发行版的具体版本,使用 ls *-release看有没有操作系统的版本文件,如:
---------- On Fedora Linux ----------
$ cat /etc/fedora-release
---------- On Debian Linux ----------
$ cat /etc/debian_version
---------- On Ubuntu and Linux Mint ----------
$ cat /etc/lsb-release
---------- On opensuse Linux ----------
$ cat /etc/os-release
---------- On Mnajaro Linux ----------
$ cat ./lsb-release
①SUSE版本Linux用lsb_release -a命令即可列出版本信息
②此命令cat /etc/issue也适用于所有的Linux发行版
查看gnome的版本,使用$ gnome-shell –version
//proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访问系统内核数据的操作提供接口。而我们使用命令“uname -a”的信息就是从该文件获取的,当然用方法二的命令直接查看它的内容也可以达到同等效果.另外,加上参数”a”是获得详细信息,如果不加参数为查看系统名称。
//linux 命令相关:
cd ~/documents
其中’~’ 表示home目录
//cp -i foo bar/
mv -ir foo bar/
其中’-i’ :覆盖文件的提示,’-r’:递归处理文件
rm -rf bar/
其中’-f’:删除文件不提示
//&&连接两个命令,且只有第一个命令成功完毕后才执行第二个命令
//ldd :显示依赖库
//updatedb locate 用于刷新当前系统中的locate命令的索引库
//pdf 字体查看: pdffonts a.pdf | iconv -f GBK
//linux下搜索文件内容:
find /usr/include/ -type f -iname "*.h" | xargs grep -i -e "FcPattern"
在c语言文件中查找
find . -iname "*.h" -o -iname "*.c*" | xargs grep -i -e "FcPattern"
//虚拟控制台的选择可以通过按下 Alt 键和功能键 Fn(n=1~6)来
实现。例如:用户登录后,按 Alt+F2 组合键,用户又可以看到“login:”
提示符,此时看到的是第二个虚拟控制台。如果此时再按 Alt+F1 组
合键,就可以回到第一个虚拟控制台。一个新安装的 Linux 系统允许
用户使用 Alt+F1 到 Alt+F6 组合键来访问 6 个虚拟控制台。
//在 X Window 图形操作界面中按 Alt+Ctrl+Fn 组合键 (n=1~6)
就可以进入控制台字符操作界面。这就意味着用户可以同时拥有 X
Window 以 及 6 个 控 制 台 操 作 界 面 , 在 控 制 台 操 作 界 面 中 按
Alt+Ctrl+F7 组合键即可回到刚才的 X Window 图形操作界面。也就
是说,用 Alt+Ctrl+Fn 组合键即可实现字符界面与 X Window 界面的
快速切换。
//下面的方法将告诉你如何把Naautilus文件管理器中地址栏从按钮还原成文字模式
1.如果临时想切换到文字模式,只要使用快捷键Ctrl+L,按ESC键返回
2.一直以文字模式,那么打开gconf-editor,按ALT + F2键入
gconf-editor
依次进入:apps > nautilus > preferences
在右边把 always_use_location_entry 勾上即可
//使用irc时常常需要贴代码等大段文字,可以在 http://fpaste.org/ 等网站使用临时贴文字的地方贴上,然后拷贝其网址.
图片使用 http://img.vim-cn.com/ 网站。
//目前,许多嵌入式处理器都提供了自举模式(Bootstrap),供用户写入引导代码。自举模式利用了固化在芯片内部的一段引导程序,当处理器复位时,如果在特定引脚上加信号,则处理器将在复位后执行固化ROM中的程序。例如,MX1提供了4条复位引脚,复位时引脚不同的电平组合可以从不同的片选端启动系统。自举ROM中的程序完成串口的初始化,然后等待用户从串口写入用户代码。自举模式所能接受的是一种专门格式的文本文件,包括数据和要写入/读出的地址。关于自举模式的代码格式,可参考相关芯片的手册。在摩托罗拉的网站还提供了许多小工具,帮助开发者将其它格式的文件转换成为自举模式格式。通过自举模式下载的通常是一段和上位机软件(如超级终端)通信的程序,完成接收数据并写入Flash的操作。写入的数据可以是用户自己的应用程序、数据或者操作系统的内核。通过自举模式下载的引导程序同样可以用GNU工具开发。
GNU提供的编译工具包括汇编器as、C编译器gcc、C++编译器g++、连接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g++、arm -linux-ld 和arm-linux-objcopy。GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用缺省选项。GNU工具的开发流程如下:编写C、C++语言或汇编源程序,用gcc或g++生成目标文件,编写连接脚本文件,用连接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。
gcc等编译器内置有缺省的连接脚本。如果采用缺省脚本,则生成的目标代码需要操作系统才能加载运行。为了能在嵌入式系统上直接运行,需要编写自己的连接脚本文件。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。C++源程序生成的目标代码中还包括.fini(析构函数代码)和.init(构造函数代码)等。有关elf文件格式,读者可自行参考相关资料。连接器的任务就是将多个目标文件的.text、.data和.bss等段连接在一起,而连接脚本文件是告诉连接器从什么地址开始放置这些段。
接生成的elf文件还不能直接下载执行,通过objcopy工具可生成最终的二进制文件:
arm-linux-objcopy-O binary bootstrap.elf bootstrap.bin
其中-Obinary指定生成为二进制格式文件。Objcopy还可以生成S格式的文件,只需将参数换成-O srec。如果想将生成的目标代码反汇编,还可以用objdump工具:
arm-linux-objdump-D bootstrap.elf
//对于ARM,EABI和OABI有什么区别:
Q3: What are OABI and EABI?
From OESF
Jump to: navigation, search
Q3: What are OABI and EABI?
A3: They are two kinds of ABI (Application Binary Interface). The ‘O’ stands for ‘Old’, and the ‘E’ means ‘Embedded’, a new approach to API for portable devices like the Zaurus.
According to this explanation,
GNU EABI is a new application binary interface (ABI) for Linux. It is part of a new family of ABI’s from ARM? Ltd. known in the arm-linux community as EABI (or sometimes Embedded ABI).
According to Debian Wiki the new EABI:
* Allows mixing softfloat and hardfloat code.
* Uses a more efficient syscall convention.
* Will be more compatible with future tools.
Furthermore, the GCC default for EABI will be to use softfloat instructions for floating point arithmetic.
//gcc编译文件后一般自动生成的几个重要section,包括.text .data .bss,这些重要的段和ARM的RO、RW、ZI都可以一一对应的上,不过这里的section还不能运行,因为还没有连接重定位.
//.ld 文件是GNU ld的linker script.
//Linux 的众多优良特性之一就是可以在运行时扩展由内核提供的特性的能力. 这意味着你可以在系统正在运行着的时候增加内核的功能( 也可以去除).
每块可以在运行时添加到内核的代码, 被称为一个模块. Linux 内核提供了对许多模块类型的支持, 包括但不限于, 设备驱动. 每个模块由目标代码组成( 没有连接成一个完整可执行文件), 可以动态连接到运行中的内核中, 通过insmod 程序, 以及通过rmmod 程序去连接.
//以Linux 的方式看待设备可区分为3 种基本设备类型:字符模块, 块模块, 网络模块.
//添加PPA:
在“Applications”, “Accessories”, “Terminal“下找到终端程序,现在你只需要输入“sudo add-apt-repository”,后面跟着你的PPA的名称;接下来所有你需要做的就是更新你的包管理器然后安装你正在查找的程序。例如,下面是安装Hotot需要的步骤:
sudo add-apt-repository ppa:hotot-team
sudo apt-get update
sudo apt-get install hotot
● 查看自己的linux的gnome或者kde等等软件的版本号,使用 apt-show-versions 软件就能看到所有的软件版本号
比如:
nisy@debian:~$ apt-show-versions -p gnome
gnome:i386/jessie 1:3.14+3 uptodate
nisy@debian:~$ apt-show-versions -p gedit
gedit:i386/sid 3.18.0-1 upgradeable to 3.18.2-1
●开机系统的grub启动顺序,使用 grub-customizer 来控制
·
把文件夹拖到了gnome的最上方的栏上,左击就打开该文件夹,如果需要删除这个图标,需要:
0. 滑鼠指向该图示
- 左手按住 win + alt
- 右手按右键,从面板中移除
·
终端的背景真透明的解决方法:
A:安装配置编辑器
代码:
sudo apt-get install gconf-editor
B:打开配置编辑器
代码:
gconf-editor
C:依次进入/apps/metacity/general/,找到compositing_manager并勾选,即可实现终端真透明。
GNOME
//对于Gnome,其版本号查询:
gnome-about --gnome-version
Gnome version 3.x, user type:
$ gnome-session –version
Debian
//Debian主要分三个版本:稳定版本(如wheezy)、测试版本(如jessie)、不稳定版本(unstable,永远为Debian Sid)。
// dpkg (Debian Package) itself is a low level tool. APT (Advanced Packaging Tool), a higher level tool, is more commonly used than dpkg as it can fetch packages from remote locations and deal with complex package relations, such as dependency resolution. Frontends for APT like aptitude (ncurses) and synaptic (GTK+) are used for their friendlier interfaces.
//软件源的设置:/etc/apt/sources.list
//查询debian的版本号:
nisy@nisy:~$ more /etc/debian_version
cat /etc/*release
或
lsb_release -a
或
cat /etc/lsb-release
或
[root@blliu Server]# more /etc/issue
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
[root@blliu Server]# uname -a
Linux blliu 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
//发行版本有:
experimental
unstable (代号 sid)
testing
stable (代号 lenny)
说明: experimental是最不稳定的版本,意思是还在试验阶段, unstable版本里的软件包是符合Debian软件包规则,但还是新的产品,欠缺测试;testing里的软件包版本是处在测试阶段,一旦经过大量测试没问题就可以归于stable版本里.
Ubuntu
http://debgen.simplylinux.ch/ for the Debian Generator
http://repogen.simplylinux.ch/ for the Ubuntu Generator
//ubuntu 安装Visual Studio Code 的PPA
安装Ubuntu Make
使用命令
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make
安装Visual Studio Code
使用命令
umake ide visual-studio-code
卸载命令:
umake ide visual-studio-code –remove
sudo apt-get remove ubuntu-make
opensuse
//更新grub没有update-grub命令,而是使用:
nisy@linux-1deb:~> sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found theme: /boot/grub2/themes/openSUSE/theme.txt
Found linux image: /boot/vmlinuz-4.12.14-lp151.28.83-default
Found initrd image: /boot/initrd-4.12.14-lp151.28.83-default
Found linux image: /boot/vmlinuz-4.12.14-lp151.28.59-default
Found initrd image: /boot/initrd-4.12.14-lp151.28.59-default
Found Manjaro Linux (20.1.2) on /dev/nvme0n1p11
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Deepin 15.11 (15.11) on /dev/nvme0n1p8
Found Fedora 31 (Workstation Edition) on /dev/nvme0n1p9
done
nisy@linux-1deb:~>
deepin
//深度操作系统 V15.10 选用 dde-kwin 作为默认窗口管理器,使用 dde-kwin 代替之前的 deepin-wm.
从开发者角度DDE 全家桶中,除了“深度终端”,其它所有的产品都是基于 Qt 开发.
深度操作系统 V15.10 由 Debian stable 全新构建并发布
为了更好的和用户互动,deepin 系统的社区版对外发布也采用了一种新的方式:滚动更新。由之前每三个月一次的系统大版本更新,改成了每三周一次的小版本更新,例如 15.8.1、 15.8.2 …15.8.4 等等。
fedora
// 一直以来unix及类unix系统的目录结构对于很多人显得晦涩难懂,Fedora计划简化其目录结构,将二进制文件集中放在/usr/bin,将库文件集中到/usr/lib和/usr/lib64,而对于原本同样用于存储二进制文件的/bin和/sbin将以连接的形式指向/usr/bin,同样的/lib /lib64也会以连接形式指向对应目录。示意如下:
/
|-- etc
|-- usr
|-- bin
|-- lib
|-- lib64
|-- run
|-- var
|-- bin -> usr/bin
|-- sbin -> usr/bin
|-- lib -> usr/lib
|-- lib64 -> usr/lib64
arch_linux
//manjaro的pamac 是什么软件的前端?使用execsnoop 来检查一下 ,发现是pacman
//AUR表示Archlinux User-Community Repository。翻译成中文就是Archlinux社区软件仓库。它是Archlinux的用户自行编写的PKGBUILDs的集合。我将会在随后为大家解释什么是PKGBUILD。
简单来说,AUR是一些官方软件仓库不支持的社区软件包的组合(当然这里的包也可能作为官方软件包的候选者)。AUR用户只需要对这些软件包进行投票,得票超过一定数目并经过官方包维护人员审批通过既可以进入官方的软件仓库。
你可以通过这个站点进行投票:http://aur.archlinux.org/
yaourt用起来很简单,而且类似于Pacman的命令,下面是常用的一些命令:
yaourt -S package_name – 从AUR安装软件包
yaourt -Ss password – 使用关键字搜索软件包
yaourt -Syu –aur – 从AUR升级本地软件数据库并安装更新
yaourt -Si package_name – 列出软件包信息
yaourt -Sc – 从缓存中清楚旧的软件包
yaourt -Su – 安装AUR中的更新软件包
yaourt -Sy – 获取最新的AUR软件包数据库
yaourt -Cd – 清楚AUR软件包数据库
yaourt -R package_name – 删除软件包
其他
//必备好用工具:
bcc
gitk 查看git修改记录
常用词汇
usr:usr是Unix Software Resource 的意思,不是user的意思
BTS
-Bug 跟踪系统
PTS
-软件包跟踪系统
Debian Developer (DD):Debian 社区的官方成员。DD 拥有向Debian 官方仓库上传的全部权限。
Unstable:开发中的版本,更新频繁,代号永为sid。Ubuntu 每次版本发布,皆是基于Debian sid。
Debian 开发生命周期:experimental —> unstable(sid) —> testing —> stable
如果您果真勇敢,不怕折腾,则选择experimental,experimental 并不是一个完整的发行版本。选择unstable 基本可以,没有什么大问题,更新比testing 快很多,stable 基本就是安全更新。
Debian Maintainer (DM):拥有对Debian 官方仓库部分上传权限的人,比Debian 开发者权限低,简单来说只能上传自己维护的包
RFA – Request for Adoption 申请收养(某个软件)
RFP: Request For Packaging, 我觉得这个包应当加入Debian, 但是我不想去打包, 所以请求谁来打包
ITP: Intent To Package, 我想打这个包, 已经在开始工作了, 大家不要抢, 抢也要先跟我联系
RFH: Request For Help, 我忙不过来了, 或者技术能力不足, 需要人帮忙一起维护
RFA: Request For Adoption, 这个包我不想继续维护了, 谁想接手
O: Orphan, 这个包已经被我放弃了, 谁想接收就接手吧
ITA: Intent To Adoption, 我要接手这个包
ITP -Intent To Package
wnpp-Work-Needing and Prospective Packages
FTBFS: Failed To Build From Source, 其实就是编译失败, 经常在bug 报告中出现
NMU: Non-Maintainer Upload, 经常在修改日志出现, 表名修改人员不是这个包的指定维护人员
NM Process: New Maintainer Process, 新维护人员流程, 这个流程是针对申请Debian 开发人员(DD)的, 但由于DM 概念的引入, 这个名字现在带来了一些混淆, 估计会改一个名字吧.
QA: Quality Assurance, 质量保证, Debian 的QA 小组主要负责每个包的管理首页, 比如ibus的, 还有开发工具来保证Debian 的质量, 比如lintian, DEHS, …, 还有就是维护孤儿包(orphaned package)
xxx@l.d.o: xxx@lists.debian.org, Debian 的maillist, 懒得敲字的时候就变成了@l.d.o
.d.o: .debian.org, 同上, 类似的原因
CVE: Common Vulnerabilities and Exposures, 一般在修改日志中出现, 一般表示一个安全漏洞
LP: launchpad, Ubuntu 的开发网站, 也是Ubuntu 的Bug 中心, 在关闭Ubuntu 相关bug 时, 用这个来支持对应的bug 号,比如”LP: #317443″, 就指https://bugs.launchpad.net/bugs/317443
DFSG – Debian Free Software Guidelines