标签:ubuntu

最流行的Linux发行版

ubuntu 启动进入 console

vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="text"
GRUB_TERMINAL=console
update-grub
systemctl set-default multi-user.target

ubuntu 启动恢复方法

等待网络时间太长

vim /etc/systemd/system/network-online.targets.wants/networking.service
TimeoutStartSec=10sec
systemctl daemon-reload

不显示启动日志

vim /etc/default/grub

删除 quiet splash 参数

update-grub

进入 grub 菜单

开机后,按 escshift 键,可以进入 grub 菜单

grub 命令行修复 ubuntu 引导

grub rescue> ls
(hd0) (hd1) (hd1,gpt8)....

grub rescue> ls (hd1,gpt7)/
./ ../ lost+found/ bin/ boot/ dev/...

grub rescue> set root=(hd1,gpt7)
grub rescue> set prefix=(hd1,gpt7)/boot/grub

grub rescue> insmod normal
grub rescue> normal

##引导进入 ubuntu 后
grub-install /dev/sdb2

双网卡 NAT 配置

配置静态 IP

vim /etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eno1
iface eno1 inet static
        address 192.168.151.111
        netmask 255.255.255.0
        network 192.168.151.0
        broadcast 192.168.151.255
        gateway 192.168.151.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 202.99.192.66 202.99.192.68
        dns-search shanxiunicom

auto eno2
iface eno2 inet static
        address 192.168.199.1
        netmask 255.255.255.0

eno1 连接外网,eno2 连接外网

重启网卡

/etc/init.d/networking restart

配置路由

  • 配置路由转发

    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1
    
    sysctl -p
  • 配置转发表

    vim /etc/rc.local
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -o eno1 -j MASQUERADE
    

ubuntu 格式化并挂载硬盘

查看末格式化硬盘

fdisk -l
  • 格式化硬盘
    • 格式化小于 2T 硬盘

      fdisk /dev/vdb
      
    • 格式化大于 2T 硬盘使用 parted 工具

      parted /dev/sdb #进入 parted
      mklabel gpt #硬盘设置为 gpt 格式
      mkpart logical 0 -1 #磁盘所有容量设置为 gpt
      print #显示设置
      
  • 分区格式化为 ext4 格式,有两个方法
    1. mkfs -t ext4 /dev/vdb
    2. mkfs.ext4 -F /dev/sdb

配置分区配置文件

vim /etc/fstab
/dev/sdb /var/data/SpiderCloud/log ext4 defaults 0 0

重新加载分区

mount -a

ubuntu16.04 修改 pthread 库的 PTHREAD_KEYS_MAX 宏定义

编译说明

  • pthread 是 glibc 的子库,需要编译整个 glibc。
  • 需要安装编译套件 gcc, make 等工具。

编译 glibc

  • 查看 glibc 当前版本

    $ /lib/x86_64-linux-gnu/libc.so.6
    GNU C Library (Ubuntu GLIBC 2.23-0ubuntu9) stable release version 2.23, by Roland McGrath et al.
    Copyright (C) 2016 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.
    Compiled by GNU CC version 5.4.0 20160609.
    Available extensions:
            crypt add-on version 2.1 by Michael Glad and others
            GNU Libidn by Simon Josefsson
            Native POSIX Threads Library by Ulrich Drepper et al
            BIND-8.2.3-T5B
    libc ABIs: UNIQUE IFUNC
    For bug reporting instructions, please see:
    <https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
    
  • 下载 glibc-2.23

    apt install axel
    axel -n 10 http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.bz2
    tar xjf glibc-2.23.tar.bz2
    
  • 修改 PTHREAD_KEYS_MAX 宏大小
    • 不能改太大,改成 10240 创建线程时会崩溃
    • 仅修改相关 PC 体系下的头文件,如下是修改完的

      $ cd /home/share/glibc-2.23
      $ ag "define PTHREAD_KEYS_MAX"
      glibc-2.23/sysdeps/unix/sysv/linux/aarch64/bits/local_lim.h
      65:#define PTHREAD_KEYS_MAX     2048
      
      glibc-2.23/sysdeps/unix/sysv/linux/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     2048
      
      glibc-2.23/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/unix/sysv/linux/mips/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/unix/sysv/linux/tile/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
      64:#define PTHREAD_KEYS_MAX     1024
      
      glibc-2.23/sysdeps/nacl/bits/local_lim.h
      29:#define PTHREAD_KEYS_MAX        2048
      
  • 编译 glibc-2.23

    apt install gawk
    mkdir build
    cd build
    ../configure CC=gcc --disable-sanity-checks
    

安装前的准备

  • 查看 pthread 所在目录

    $ locate pthread.so
    /lib/x86_64-linux-gnu/libpthread.so.0
    /usr/lib/x86_64-linux-gnu/libpthread.so
    /usr/lib/x86_64-linux-gnu/samba/vfs/aio_pthread.so
    
  • 查看运行库

    $ cd /lib/x86_64-linux-gnu/
    $ l *pthread*
    -rwxr-xr-x 1 root root 136K Jun 17 04:57 libpthread-2.23.so
    lrwxrwxrwx 1 root root   18 Jun 17 04:57 libpthread.so.0 -> libpthread-2.23.so
    
  • 查看链接库

    $ cd /usr/lib/x86_64-linux-gnu
    $ l *pthread*
    -rw-r--r-- 1 root root 2.4M Jun 17 04:52 libpthread.a
    -rw-r--r-- 1 root root 7.6K Jun 17 04:52 libpthread_nonshared.a
    -rw-r--r-- 1 root root  252 Jun 17 04:52 libpthread.so
    
  • 查看头文件位置

    $ locate local_lim.h
    /usr/include/x86_64-linux-gnu/bits/local_lim.h
    

替换链接库

  • 备份链接库

    cd /usr/lib/x86_64-linux-gnu
    mv libpthread.so libpthread.so.bak
    mv libpthread.a libpthread.a.bak
    mv libpthread_nonshared.a libpthread_nonshared.a.bak
    
  • 替换链接库 编译完成后记得还原

    cd /usr/lib/x86_64-linux-gnu
    cp /home/share/glibc-2.23/glibc-2.23/build/nptl/libpthread.so .
    cp /home/share/glibc-2.23/glibc-2.23/build/nptl/libpthread.a .
    cp /home/share/glibc-2.23/glibc-2.23/build/nptl/libpthread_nonshared.a .
    

替换运行库

  • 备份运行库
    • 部分 shell 命令依赖 libpthread.so.0,如 cp,mv。

      cd /lib/x86_64-linux-gnu/
      cp libpthread.so.0 libpthread.so.0.bak
      
    • ln 仍然可用,可用于紧急情况下恢复。

      ln -s -f libpthread-2.23.so libpthread.so.0 
      
  • 替换运行库
    • 放到执行目录下

      export LD_LIBRARY_PATH=./
      cd /home/share/glibc-2.23/glibc-2.23/build/nptl
      cp *.so* /var/data/testprogram
      
    • 放到系统目录下 危险,尽量不要使用这种方法

      cd /lib/x86_64-linux-gnu/
      cp /home/share/glibc-2.23/glibc-2.23/build/nptl/libpthread.so libpthread.spider.so
      ln -s -f libpthread.spider.so libpthread.so.0
      
  • 修改头文件 编译完成后记得还原

    vim /usr/include/x86_64-linux-gnu/bits/local_lim.h
    #define PTHREAD_KEYS_MAX 10240