Windows Subsystem for Linux(简称WSL),Windows下的Linux子系统,是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
以管理员身份打开PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --install
你可以通过以下命令将默认的 WSL 版本设置为 WSL2
wsl --set-default-version 2
查看
wsl -l -v
wsl --list --verbose
启动和关闭
wsl --import CentOS7 D:\WSL\CentOS7 D:\WSL\CentOS7\CentOS7.tar
wsl --unregister CentOS7
wsl --un
wsl --terminate CentOS7
wsl -d CentOS7
使用的是后者,是一个最小系统,前者似乎更全一些
mishamosher/CentOS-WSL: A GitHub Actions automated CentOS RootFS to use with WSL
Releases · wsldl-pg/CentWSL (github.com)
安装CentOS 7双系统(三)——yum源的高级配置 - 简书 (jianshu.com)
替换更新163源(未替换,可能是开VPN的缘故,速度可以)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clear all
yum makecache
yum -y update
安装第三方源
# EPEL
sudo yum install epel-release
# ELRepo
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# Nux Dextop
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum -y update
用CentOS 7安装cadence搭建适合IC Design的科研环境(二)——操作系统的相关配置 - 简书 (jianshu.com)
没有进行ln -s的操作,似乎并不需要
yum install ksh -y
yum install libXext.so.6 -y
yum install libXtst.so.6 –y
yum install libXt.so.6 -y
yum install libGLU.so.1 --setopt=protected_multilib=false
yum install libelf.so.1 -y
yum install libXrender.so.1 -y
yum install libXp.so.6 -y
yum install libXrandr.so.2 –y
yum install *xorg* -y
yum install libXp -y
yum install ld-linux.so.2 -y
yum install openmotif -y
yum install libstdc++.so.5 -y
yum install -y xterm
yum install -y gcc gcc-c++ ksh csh libXp *xorg-X11-fonts* compat-libstdc++-33.i686
yum install -y alliance-libs alliance glibc-2.12-1.107.el6.i686 glibc-devel.i686 glibc
yum install -y compat-readline5-5.2-17.1.el6.i686
yum install -y xterm-253-1
后续在IC231遇到的问题
yum install -y redhat-lsb
yum install libXScrnSaver
yum install zlib-devel.i686
yum install zlib-devel
yum install apr-util
yum -y groups install "GNOME Desktop"
yum install openssl-devel
在WSL中,默认情况下会将Windows的PATH环境变量合并到Linux的PATH中,这就是为什么你会看到很多 /mnt/c
开头的路径。这是为了方便在WSL中直接调用Windows程序。
要移除这些Windows路径,可以通过配置 wsl.conf
文件来实现。以下是具体步骤:
/etc/wsl.conf
文件: 打开终端并使用root权限编辑 /etc/wsl.conf
文件。如果文件不存在,可以创建它:sudo vi /etc/wsl.conf
[interop]
appendWindowsPath = false
wsl --terminate CentOS7
wsl -d CentOS7
编辑 wsl.conf 文件: 在 /etc/wsl.conf
文件中添加以下内容:
[boot]
command="ip link add name bond0 type bond mode active-backup"
.bashrc 文件: 在 ~/.bashrc
文件中添加以下内容:
mac=xx:xx:xx:xx:xx:xx # 替换为你想要的 MAC 地址
gateway=$(ip route | awk '/default via /{print $3; exit}' 2>/dev/null)
if ! ip link show | grep -q $mac; then
sudo ip link set dev eth0 down
sudo ip link set dev eth0 up
sudo ip route add default via $gateway dev eth0
sudo ip link set dev bond0 down
sudo ip link set dev bond0 address $mac
sudo ip link set dev bond0 up
fi
在centos系统中,如果你遇到 “Cannot find device ‘bond0’” 的错误,可能是因为没有加载 bonding 模块。你可以按照以下步骤解决这个问题:
加载 bonding 模块
sudo modprobe bonding
创建 bonding 配置文件: 在 /etc/sysconfig/network-scripts/
目录下创建 ifcfg-bond0
文件,并添加以下内容:
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_OPTS="mode=active-backup miimon=100"
ONBOOT=yes
然后重启
reboot -f
在centos7 wsl中,创建或编辑 /etc/wsl.conf
文件,并添加以下内容:
[network]
hostname = eda
# generateHosts = false
并不需要阻止wsl自动生成host,这样/etc/hosts
和/etc/hostname
应该会可以自动生成并更改为eda
使用 Windows Docker Desktop 可能会导致 WSL 中的网络配置冲突,启动时报错RTNETLINK answers: File exists
,以下是一些可能的解决方法
运行以下命令停止 NetworkManager 服务,启用 network 服务
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl start network
sudo systemctl enable network
错误信息如下
[root@eda ~]# gnome-terminal # Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Could not connect: No such file or directory
确认安装了必要的软件包,确保D-Bus服务运行
sudo yum install gnome-session dbus-x11
sudo systemctl start dbus
sudo systemctl enable dbus
配置环境变量 ~/.bashrc
export XDG_SESSION_TYPE=x11
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export XDG_SESSION_CLASS=user
export XDG_CURRENT_DESKTOP=GNOME
export DESKTOP_SESSION=gnome
export GDMSESSION=gnome
使用 dbus-launch
启动 GNOME 会话
dbus-launch --exit-with-session gnome-terminal
为了方便,可以使用 alias
将命令简化,写到 ~/.bashrc
中去
alias tm='dbus-launch --exit-with-session gnome-terminal &'
alias nt='dbus-launch --exit-with-session nautilus --browser ./ &'
sudo yum install -y environment-modules
source /etc/profile.d/modules.sh
放在了/etc/modulefiles下面
#%Module1.0
## modulefile for Cadence tools
# CADENCE
set CADHOME /opt/eda/cadence
prepend-path CADHOME /opt/eda/cadence
setenv LANG C
setenv CDS_Netlisting_Mode Analog
setenv CDS_LIC_ONLY 1
setenv CDS_LIC_FILE /opt/eda/environment/cds.license.dat
setenv CDS_AUTO_64BIT ALL
setenv W3264_NO_HOST_CHECK 1
setenv OA_UNSUPPORTED_PLAT linux_rhel70_gcc93x_64
#set OA_HOME $CDSDIR/oa_v22.60.007
#prepend-path OA_HOME $CDSDIR/oa_v22.60.007
#set OA_PLUGIN_PATH $PATH:$CADHOME/oa_v22.60.007/data/plugins
# Specify a search order for .cdsenv
# Load .cdsenv in the working directory ($CWD)
#set CDS_LOAD_ENV CWD
set CDS_LOAD_ENV CSF
# CADENCE IC231
setenv CDS_ENABLE_VMS 1
set CDS $CADHOME/IC231
prepend-path CDS $CADHOME/IC231
set CDSDIR $CDS
prepend-path CDSDIR $CDS
set CDSHOME $CDS
prepend-path CDSHOME $CDS
set CADENCE_DIR $CDS
prepend-path CADENCE_DIR $CDS
set CDS_INST_DIR $CDS
prepend-path CDS_INST_DIR $CDS
set CDS_ROOT $CDS
prepend-path CDS_ROOT $CDS
set CDSROOT $CDS
prepend-path CDSROOT $CDS
prepend-path PATH $CDSDIR/tools/bin
prepend-path PATH $CDSDIR/tools/dfII/bin
#setenv LD_PRELOAD /usr/lib64/libssl.so.1.0.2k:/usr/lib64/libcrypto.so.1.0.2k
# CADENCE SPECTRE
set SPECTRE_HOME $CADHOME/SPECTRE231
prepend-path SPECTRE_HOME $CADHOME/SPECTRE231
setenv SPECTRE_DEFAULTS -E
setenv CDS_SPECTRE_FBENABLE 1
prepend-path PATH $SPECTRE_HOME/bin
prepend-path PATH $SPECTRE_HOME/tools/bin
# CADENCE XCELIUM
set VERILOG $CADHOME/XCELIUM2303
prepend-path VERILOG $CADHOME/XCELIUM2303
set VRST_HOME $VERILOG
prepend-path VRST_HOME $VERILOG
set AMSHOME $VERILOG
prepend-path AMSHOME $VERILOG
set AMS_FEATURE_FILE $VERILOG/tools/affirma_ams/ext/files/amssim.dat
setenv INCISIV_BITMODE 64
setenv VMANAGER_INVOCATION_MODE IEM
prepend-path PATH $VRST_HOME/bin
prepend-path PATH $VRST_HOME/tools/bin
# Mentor Graphics Calibre
setenv MGLS_LICENSE_FILE /opt/eda/environment/mgc.license.dat
set MGC_HOME /opt/eda/mentors/CALIBRE2021/aoi_cal_2021.2_28.15
prepend-path MGC_HOME /opt/eda/mentors/CALIBRE2021/aoi_cal_2021.2_28.15
set CALIBRE_HOME $MGC_HOME
prepend-path CALIBRE_HOME $MGC_HOME
prepend-path PATH $CALIBRE_HOME/bin
set MGC_LIB_PATH $CALIBRE_HOME/lib
prepend-path MGC_LIB_PATH $CALIBRE_HOME/lib
set MGC_TMPDIR ~
prepend-path MGC_TMPDIR ~
# Enable Calibre RealTime with Cadence Virtuoso
setenv MGC_CALIBRE_REALTIME_VIRTUOSO_ENABLED 1
setenv OA_PLUGIN_PATH $CALIBRE_HOME/shared/pkgs/icv/tools/queryskl
prepend-path LD_LIBRARY_PATH $CALIBRE_HOME/shared/pkgs/icv/tools/calibre_client/lib/64
setenv MGC_CALIBRE_REALTIME_VIRTUOSO_SAVE_MESSENGER_CELL 1
# Enable Calibre Interactive to save all GUI settings
setenv MGC_CALIBRE_SAVE_ALL_RUNSET_VALUES 1
# Set up socket connection with Virtuoso schematic or layout viewer
setenv MGC_CALIBRE_LAYOUT_SERVER eda:9222
setenv MGC_CALIBRE_SCHEMATIC_SERVER eda:9223
# Set the name of the executable for displaying PDF documentation
setenv MGC_PDF_READER evince
# Solve the libddbase_sh.so symbol lookup error
setenv MGC_FDI_OA_VERSION 22.50
#%Module1.0
## modulefile for Cadence tools
# CADENCE
set CADHOME /opt/eda/cadence
prepend-path CADHOME /opt/eda/cadence
setenv LANG C
setenv CDS_Netlisting_Mode Analog
setenv CDS_LIC_ONLY 1
setenv CDS_LIC_FILE /opt/eda/environment/cds.license.dat
setenv CDS_AUTO_64BIT ALL
setenv W3264_NO_HOST_CHECK 1
setenv OA_UNSUPPORTED_PLAT linux_rhel70_gcc93x_64
#set OA_HOME $CDSDIR/oa_v22.60.007
#prepend-path OA_HOME $CDSDIR/oa_v22.60.007
#set OA_PLUGIN_PATH $PATH:$CADHOME/oa_v22.60.007/data/plugins
# Specify a search order for .cdsenv
# Load .cdsenv in the working directory ($CWD)
#set CDS_LOAD_ENV CWD
set CDS_LOAD_ENV CSF
# CADENCE IC618
setenv CDS_ENABLE_VMS 1
set CDS $CADHOME/IC618
prepend-path CDS $CADHOME/IC618
set CDSDIR $CDS
prepend-path CDSDIR $CDS
set CDSHOME $CDS
prepend-path CDSHOME $CDS
set CADENCE_DIR $CDS
prepend-path CADENCE_DIR $CDS
set CDS_INST_DIR $CDS
prepend-path CDS_INST_DIR $CDS
set CDS_ROOT $CDS
prepend-path CDS_ROOT $CDS
set CDSROOT $CDS
prepend-path CDSROOT $CDS
prepend-path PATH $CDSDIR/tools/bin
prepend-path PATH $CDSDIR/tools/dfII/bin
#setenv LD_PRELOAD /usr/lib64/libssl.so.1.0.2k:/usr/lib64/libcrypto.so.1.0.2k
# CADENCE SPECTRE
set SPECTRE_HOME $CADHOME/SPECTRE211
prepend-path SPECTRE_HOME $CADHOME/SPECTRE211
setenv SPECTRE_DEFAULTS -E
setenv CDS_SPECTRE_FBENABLE 1
prepend-path PATH $SPECTRE_HOME/bin
prepend-path PATH $SPECTRE_HOME/tools/bin
# CADENCE XCELIUM
set VERILOG $CADHOME/XCELIUM2009
prepend-path VERILOG $CADHOME/XCELIUM2009
set VRST_HOME $VERILOG
prepend-path VRST_HOME $VERILOG
set AMSHOME $VERILOG
prepend-path AMSHOME $VERILOG
setenv INCISIV_BITMODE 64
setenv VMANAGER_INVOCATION_MODE IEM
prepend-path PATH $VRST_HOME/bin
prepend-path PATH $VRST_HOME/tools/bin
# Mentor Graphics Calibre
setenv MGLS_LICENSE_FILE /opt/eda/environment/mgc.license.dat
set MGC_HOME /opt/eda/mentors/CALIBRE2021/aoi_cal_2021.2_28.15
prepend-path MGC_HOME /opt/eda/mentors/CALIBRE2021/aoi_cal_2021.2_28.15
set CALIBRE_HOME $MGC_HOME
prepend-path CALIBRE_HOME $MGC_HOME
prepend-path PATH $CALIBRE_HOME/bin
set MGC_LIB_PATH $CALIBRE_HOME/lib
prepend-path MGC_LIB_PATH $CALIBRE_HOME/lib
set MGC_TMPDIR ~
prepend-path MGC_TMPDIR ~
# Enable Calibre RealTime with Cadence Virtuoso
setenv MGC_CALIBRE_REALTIME_VIRTUOSO_ENABLED 1
setenv OA_PLUGIN_PATH $CALIBRE_HOME/shared/pkgs/icv/tools/queryskl
prepend-path LD_LIBRARY_PATH $CALIBRE_HOME/shared/pkgs/icv/tools/calibre_client/lib/64
setenv MGC_CALIBRE_REALTIME_VIRTUOSO_SAVE_MESSENGER_CELL 1
# Enable Calibre Interactive to save all GUI settings
setenv MGC_CALIBRE_SAVE_ALL_RUNSET_VALUES 1
# Set up socket connection with Virtuoso schematic or layout viewer
setenv MGC_CALIBRE_LAYOUT_SERVER eda:9222
setenv MGC_CALIBRE_SCHEMATIC_SERVER eda:9223
# Set the name of the executable for displaying PDF documentation
setenv MGC_PDF_READER evince
# Solve the libddbase_sh.so symbol lookup error
setenv MGC_FDI_OA_VERSION 22.50
Virtuoso IC 618.340 (ISR34)
Spectre 21.10.305 (ISR5)
Xcelium 20.09.009
Virtuoso Studio IC 23.10.060
Spectre 23.10.063
Xcelium 23.03.002
Calibre_2021.1.33.19 (aoi)
在centos/docker中首先压缩尺寸
sudo yum clean all
docker system prune
wsl --shutdown
diskpart
select vdisk file="<pathToVHD>"
attach vdisk readonly
compact vdisk
detach vdisk
exit
Optimize-VHD -Path "<pathToVHD>" -Mode Full
wsl
wsl --export <DistroName> <PathToExportFile>.tar
<DistroName>
:你要导出的Linux发行版的名称。例如,Ubuntu-20.04
。
<PathToExportFile>
:导出文件的路径和名称。例如,D:\backup\Ubuntu-20.04.tar
。
示例:wsl --export Ubuntu-20.04 D:\backup\Ubuntu-20.04.tar
这个命令会将名为 Ubuntu-20.04
的WSL发行版导出为一个名为 Ubuntu-20.04.tar
的文件,保存在 D:\backup
目录下。
wsl --import <DistroName> <InstallLocation> <PathToImportFile>.tar
<DistroName>
:你要导入的Linux发行版的名称。例如,Ubuntu-20.04
。
<InstallLocation>
:安装位置的路径。例如,C:\WSL\Ubuntu-20.04
。
<PathToImportFile>
:导入文件的路径和名称。例如,D:\backup\Ubuntu-20.04.tar
。
示例:wsl --import Ubuntu-20.04 C:\WSL\Ubuntu-20.04 D:\backup\Ubuntu-20.04.tar
这个命令会将 D:\backup\Ubuntu-20.04.tar
文件导入为名为 Ubuntu-20.04
的WSL发行版,并安装在 C:\WSL\Ubuntu-20.04
目录下。
wsl --terminate <DistroName>
wsl --list --verbose
root
。你可以通过以下命令设置默认用户:<DistroName> config --default-user <Username>