常规步骤
kernel编译环境(待补充)
sudo apt-get install -y libssl-dev libelf-dev openssl flex bison libncurses-dev
个人常用环境:
软件:
sudo apt-get install -y libssl-dev openssl flex bison libncurses-dev net-tools samba samba-common ssh make vim bear gdb gcc g++ libreadline-dev
x86_64源:
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
aarch64源:
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu-ports/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial universe deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
sudo apt-get install samba samba-common
嵌入式板子用如下配置/etc/samba/smb.conf
[cxh]
comment = Shared Folder with username and password
path = /home/cxh/
public = yes
writable = yes
valid users = cxh #配置的Samba访问账号
create mask = 777
directory mask = 777
# force user = nobody
# force group = nogroup
available = yes
browseable = yes
[root]
comment = Shared Folder with username and password
path = /
public = yes
writable = yes
valid users = root #配置的Samba访问账号
create mask = 777
directory mask = 777
# force user = nobody
# force group = nogroup
available = yes
browseable = yes
ubuntu 22.04 server可用如下配置/etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[home]
comment = User Directory
path = /home/%U
read only = No
重启samba
service smbd restart
添加用户,cxh为用户名,然后输入密码
cxh@cxhserver:~$ sudo smbpasswd -a cxh
New SMB password:
Retype new SMB password:
Added user cxh.
https://mirrors.ustc.edu.cn/ubuntu
不同版本的Ubuntu网络配置位置不同。
Ubuntu22.04 Server版修改的方法为修改/etc/netplan/00-installer-config.yaml文件
/etc/netplan/00-installer-config.yaml文件内容修改如下:
# This is the network config written by 'subiquity'
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: no
addresses:
- 192.168.56.103/24
routes:
- to: default
via: 192.168.56.1
version: 2
sudo netplan apply
服务器版:sudo systemctl restart system-networkd
桌面版:sudo systemctl restart network-manager
ip a
cxh@cxhserver:~$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 08:00:27:48:96:d4 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe48:96d4/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:c4:8f:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.103/24 brd 192.168.56.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fec4:8fd7/64 scope link
valid_lft forever preferred_lft forever
桥接硬件网卡只需要一个网口就能实现内部互联及万维网互联,但在公司内网络需要验证才能上网,且WIFI网卡经常DHCP获取不了ip。所以暂时使用如下笨办法,如果有大神直到更好的方法,感谢能分享下。
通过如下入口创建2个网卡,一个用来上外网,一个用来与主机内部互联,但同时打开时无法上外网,所以上外网时需要关闭内部互联的网口,关闭方法如图。
Host-Only是只能与宿主机互联的网口,如果不希望ip变化,可以关闭DHCP后,配置Ubuntu为静态IP
使用DHCP方式时,主机可ping通VMware中的Ubuntu,但未能ping通VirtualBox中的Ubuntu。个人对以太网理解不深,未找到原因。
修改配置文件:vi /etc/netplan/00-installer-config.yaml
应用配置文件:sudo netplan apply
重启网络服务:sudo systemctl restart system-networkd 或
sudo systemctl restart network-manager(桌面版)
# This is the network config written by 'subiquity'
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: no
addresses:
- 192.168.56.103/24
routes:
- to: default
via: 192.168.56.1
version: 2
sudo apt install make gcc flex bison libncurses5-dev libssl-dev
sudo apt install -y gcc-11 g++-11
如将gcc11添加软链。如果–install指令里的数越大,则优先级越高。
# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 20 --slave /usr/bin/g++ g++ /usr/bin/g++-11
update-alternatives: using /usr/bin/gcc-11 to provide /usr/bin/gcc (gcc) in auto mode
# sudo update-alternatives --config gcc
There is 1 choice for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-11 20 auto mode
1 /usr/bin/gcc-11 20 manual mode
删除软链接:
sudo update-alternatives --remove gcc /usr/bin/gcc-11
ubuntu安装bear
sudo apt-get install bear
centos安装bear,参考文章: Centos7 打造 C/C++ 开发环境_centos7 c语言开发环境_thewangcj的博客-CSDN博客
最新版本的 Bear 要求 C++17,而且还有类似 gRPC 的依赖,装起来太麻烦了,所以这里选择了老一点的 2.4.4 编译安装
pip install lit # Bear 依赖 git clone https://github.com/rizsotto/Bear.git cd Bear git checkout 2.4.4 cd .. mkdir build cd build cmake ../Bear make all make check sudo make install
下载文件百度网盘 请输入提取码,提取码 dq2m。解压 unzip clangd-linux-13.0.0.zip,将bin和lib下的文件拷贝到默认环境路径/bin /lib。
如果为交叉编译,需在要查看的代码的根目录创建.clangd文件,并加入如下内容:
CompileFlags:
Add: --target=aarch64-none-linux-gnu
Remove: -mabi=lp64
其中aarch64-none-linux-gnu为交叉编译工具链命令前缀,不同编译工具链不同。
在vscode上配置远端配置如下,根据交叉编译工具链路径而定。但不做如下配置也可跳转
命令为bear make或者bear -- make,根据所用系统而定
vscode比较傻逼,不像xshell、moba那样可记住密码,需单独处理免密过程。
在wondows中用ssh-keygen命令生成id_rsa.pub(全程回车),再将id_rsa.pub文件拷贝到待登录的Linux对应用户目录的.ssh目录下,并更名为authorized_keys。正常清空下一次登录需要输入密码,但第二次就不需要输入了。
ssh-keygen命令一路按回车,生成的文件路径日志里有显示,如
编辑远程登录root用户的配置文件
vim /etc/ssh/sshd_config
将PermitRootLogin改为:yes
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
修改root密码,开启root用户
sudo passwd root
重起ssh服务
service ssh restart
东8区
timedatectl set-timezone Asia/Shanghai
date -R