分类目录归档:Linux

ubuntu下统计openwrt编译时间

linux下面,time指令可以实现这个目的。

-p, –portability
Use the following format string, for conformance with POSIX standard 1003.2:
real %e
user %U
sys %S

比如说你想知道configure的时间,就是

# time -p ./configure
当./configure执行完毕的时候time命令结束,然后会返回一个时间,就是你执行./configure的时间
同样
# time -p make 也会知道make用的时间,如果说要整个的安装时间,可以用命令
# time -p ./configure && make && make install
返回的结果就是整个编译安装过程所用的时间
time命令除可以统计编译时间外,还可以统计程序运行的时间,比如

$ time ./test

比如我编译openwrt的时间统计。

time -p make -j4 V=99

export MAKEFLAGS= ;make -w -r checksum
make[2]: Entering directory ‘/mnt/origin-openwrt’
make[2]: Leaving directory ‘/mnt/origin-openwrt’
make[1]: Leaving directory ‘/mnt/origin-openwrt’
real 93.45
user 133.08
sys 61.79

记录一下编译AC3100原版merlin的过程

首先同步源码

git clone https://github.com/RMerl/asuswrt-merlin 这个是老款设备的代码,但是有需要用到的编译工具

git clone https://github.com/RMerl/asuswrt-merlin.ng 这个是新设备的代码

git clone https://github.com/RMerl/am-toolchains 这个是新设备的工具链

ln -s ~/am-toolchains/brcm-arm-hnd /opt/toolchains 将工具链做链接

ln -s ~/asuswrt-merlin/tools/brcm /opt/brcm
ln -s ~/asuswrt-merlin/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3 /opt/brcm-arm

添加环境变量

sudo ln -sf bash /bin/sh

echo “export LD_LIBRARY_PATH=$LD_LIBRARY:/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/lib” >> ~/.profile

echo “export TOOLCHAIN_BASE=/opt/toolchains” >> ~/.profile

echo “PATH=\$PATH:/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin” >> ~/.profile

echo “PATH=\$PATH:/opt/toolchains/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin” >> ~/.profile

这一步似乎没有,但是我还是做了。sudo ln -s ~/asuswrt-merlin.ng /media/ASUSWRT/asuswrt-merlin.ng

另外注意目录位置,我是在/mnt下面,所以~/替换为/mnt

然后切换到/mnt/asuswrt-merlin.ng/release/src-rt-7.14.114.x/src$

make rt-ac3100 开撸。

搞定。

参考 https://github.com/RMerl/asuswrt-merlin.ng/wiki/Compile-Firmware-from-source-using-Ubuntu

ubuntu下面给merlin增加环境变量

/home/gcc/.bashrc文件增加下面几行

export LD_LIBRARY_PATH=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/lib
export TOOLCHAIN_BASE=/opt/toolchains
export PATH=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin:/opt/toolchains/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin:/projects/hnd/tools/linux/hndtools-armeabi-2011.09/bin:$PATH
export PATH=/opt/brcm/hndtools-mipsel-linux/bin:/opt/brcm/hndtools-mipsel-uclibc/bin:/opt/brcm-arm/bin:$PATH

I5-2520M在VMWARE下面和J2850在PVE下面的ubuntu虚拟机性能对比

 

J2850 CPU,ITX主板,宿主机安装PVE,然后虚拟UBUNTU系统。

========================================================================
BYTE UNIX Benchmarks (Version 5.1.2)

System: pve-gcc: GNU/Linux
OS: GNU/Linux — 4.15.0-135-generic — #139-Ubuntu SMP Mon Jan 18 17:38:24 UTC 2021
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPU 0: Intel(R) Pentium(R) CPU J2850 @ 2.41GHz (4640.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 1: Intel(R) Pentium(R) CPU J2850 @ 2.41GHz (4640.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 2: Intel(R) Pentium(R) CPU J2850 @ 2.41GHz (4640.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 3: Intel(R) Pentium(R) CPU J2850 @ 2.41GHz (4640.0 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
04:08:48 up 1:53, 2 users, load average: 0.08, 0.10, 0.37; runlevel 5


继续阅读

PVE里面使用GPT初始化磁盘选项为灰色的解决办法

一台J1900小主机,安装了PVE虚拟化系统玩,很爽,但是随之问题来了。

由于MSATA空间不够,使用一个USB3.0的硬盘盒插了个SSD来扩展存储空间。但是发现USB不方便,不如直接把SSD接在板载的SATA接口上更好,然后关机,在PVE界面删除了之前建立的pve分区。

但是当把SSD接在SATA接口开机后,发现PVE里面无法初始化这个硬盘,GPT初始化磁盘选项为灰色无法选择。这就很抓狂了。

研究了一番,成功解决这个问题,下面记录下步骤,以免后续再用时忘记了。

首先把硬盘放在WIN下面,删除分区并初始化为NTFS格式。插上去后问题依旧,看来不是磁盘格式的问题。

使用vgdispaly指令发现之前建立的group名称usb还在,于是vgremove usb删除这个组,发现问题依旧没有得到解决,但是这一步骤起码是有用的,将废弃的组名删除掉不是坏事。

在shell里面使用fdisk /dev/sdb,先删除之前的分区,然后使用g指令使用gpt格式初始化磁盘。

Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table

然后按w退出,PVE页面的按钮终于可以使用了!

Command (m for help): g
Created a new GPT disklabel (GUID: 1D966722-6637-BB47-AD90-DD3F86941F0D).
The old LVM2_member signature will be removed by a write command.

Command (m for help): p

Disk /dev/sdb: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Disk model: SanDisk SDSSDA12
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1D966722-6637-BB47-AD90-DD3F86941F0D

搞定收工。

20210209 update

如果格式化为gpt后在web界面该磁盘显示device mapper等字样,重启PVE后应该就可以了。

关于nanopi R2S的一些记录

这个机器看似网上资料很多,实际上要找的东西还是很难找到。这里记录一下。方便自己,方便他人。

首先,ubuntu的固件,root密码是fa,普通用户的用户名是pi,密码也是pi

另外这个机器的下载资源在这里。https://dl.friendlyarm.com/nanopir2s

rk3328-sd-friendlycore-bionic-5.4-arm64-20200707.img这个文件名就是ubuntu 18.04系统

下载后解压,烧写到TF卡里面,插上R2S,启动。路由器网口插在R2S的WAN即可,等待几分钟,去路由器里面看NanoPi-R2S分配的IP就是它,通过ssh登录。

这个机器自带的源有问题,下载不了,我已经更换为中科大的源。

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse

 

 

ubuntu18.04运行脚本报错let: not found

gcc@gcc-x64:/mnt$ ./cpu_usage.sh
./cpu_usage.sh: 15: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 16: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 17: ./cpu_usage.sh: let: not found
CPU: %
./cpu_usage.sh: 15: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 16: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 17: ./cpu_usage.sh: let: not found
CPU: %
./cpu_usage.sh: 15: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 16: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 17: ./cpu_usage.sh: let: not found
CPU: %
./cpu_usage.sh: 15: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 16: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 17: ./cpu_usage.sh: let: not found
CPU: %
./cpu_usage.sh: 15: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 16: ./cpu_usage.sh: let: not found
./cpu_usage.sh: 17: ./cpu_usage.sh: let: not found
CPU: %
^C
gcc@gcc-x64:/mnt$ let
-bash: let: expression expected
gcc@gcc-x64:/mnt$ sudo let
[sudo] password for gcc:
sudo: let: command not found

原因是/bin/sh 指向了 dash 而不是 bash ,但是 dash 不支持 let 命令。

解决办法,直接使用bash运行脚本即可。

bash 空格 脚本,回车即可

ubuntu18.04开机自动挂载swap分区

gcc@gcc-x64:~$ sudo mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2146430976 bytes)
no label, UUID=947208ba-c306-4ec6-9b01-e9fb32eef9b4

修改/etc/fstab文件,添加一行

UUID=947208ba-c306-4ec6-9b01-e9fb32eef9b4 swap swap defaults 0 0

保存,重启即可。

ubuntu下面tar打包时排除某几个子文件夹的方法

网上很多教程说的都没用。应该这样做才行。

比如目前位于/mnt下面,openwrt位于/mnt下面。打包时候排除openwrt下面的staging_dir和build_dir等文件夹

tar czvPf openwrt.tar.gz –exclude=openwrt/build_dir –exclude=openwrt/staging_dir –exclude=openwrt/bin –exclude=openwrt/tmp –exclude=openwrt/.git openwrt/

注意–exclude前面是两个–,不知道怎么的,明明打的是两个-,但是wordpress发出来就变成了一个–。