win10 WSL(win sub linux) linux 子系统使用笔记

目录

前言:

问题记录:

1. ubuntu 64位系统上运行32位程序

2. WSL 不支持 SYSV IPC 问题


前言:

刚开始安装win10时,发现win10自带 linux子系统。由于之前在win系统下使用VMware虚拟机linux时,体验不太顺畅,主要是文件共享、网络配置以及操作反应慢,且窗口大小问题。因此尝试使用WSL系统,刚开始使用时,感觉非常不错。主要的优点有一下几点:

  1. 配网简单,启用安装好WSL后,不需要配置网络环境,就可以直接上网。
  2. 文件共享方便,WSL下,可轻松访问win下的所有磁盘内容,在"/mnt/" 目录下就是对应的各个磁盘。
  3. linux系统内的文件查找方便,由于linux的文件都在C盘,大致路径如下所示,为linux的跟目录,可使用everthing工具非常方便快捷的查找系统中的文件。

     C:\Users\Administrator\AppData\Local\Packages\

     CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

  4. 系统操作灵敏,默认的终端环境不太友好,可使用ssh远程登陆工具登陆,反应比虚拟机中要快。

使用一段时间后,总结一下WSL的缺点:

  1. nfs 文件服务有很多问题。
  2. 在WSL上使用buildroot 编译程序时,由于工程较大,需要编译和下载很多的东西,一运行编译脚本就会导致主机很卡。这个原因还不太清楚,估计时WSL 运行时,可完全使用主机的所有CPU资源,导致主机使用也很卡。
  3. SYSV IPC 进程间通信问题。  -- https://stackoverflow.com/questions/45469650/error-while-building-rootfs-system-for-raspberry-pi-3-using-buildroot-lack-of
  4. 很多正常的问题解决方式,在WSL上解决方式不一样。比如文章后面介绍的64位系统上运行32位程序的问题。这个排除了很长一段时间才找到解决方法,晚上说的很多方法对于虚拟机和一般的linux是可行的,但对WSL不生效。类似的问题可能会很多。
  5. 其他问题待发现。。。

但在进行实际开发过程中,遇到的问题较多,本文主要作用在于记录我在使用WSL 实际开发中的问题以及对应的解决办法,方便以后查找,同时也希望能给使用WSL开发的朋友们也一些帮忙。

WSL 官方帮助文档: https://docs.microsoft.com/zh-cn/windows/wsl/troubleshooting

问题记录:

1. ubuntu 64位系统上运行32位程序

      可参考该文档的配置:https://www.jianshu.com/p/3df082840b40

      在网上找了很多资料都不行,这个可能时WSL和一般的linux不一样的地方。

      怎样判断你的系统是多少位的? 

       方法1: 终端敲命令: getconf LONG_BIT

       方法2:uname -a 

      怎样看linux 程序是多少位的?

       file + 文件:

       

2. WSL 不支持 SYSV IPC 问题

       实际使用buildroot工具编译程序时,出现一下报错,可参考本链接

fakeroot, while creating message channels: Function not implemented
This may be due to a lack of SYSV IPC support.

  修改buildroot->fs目录下的common.mk 文件,如下所示:

# 将以下
PATH=$$(BR_PATH) $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT)
# 修改为:
if [ `uname -r | grep "Microsoft"` ] ; then \
    cp -f `which fakeroot-tcp` $$(HOST_DIR)/bin/fakeroot ; fi

  未完,待续...

       

SQL Server中,当你尝试将一个字符串二进制数据插入到一个字段中,而该字段的长度不足以容纳整个数据时,会出现“将截断字符串二进制数据”的错误。这个错误通常是由于以下几种原因引起的: 1. **字段长度不足**:你尝试插入的字符串长度超过了目标字段的定义长度。例如,目标字段定义为`VARCHAR(10)`,而你尝试插入一个长度为20的字符串。 2. **数据类型不匹配**:你尝试插入的数据类型与目标字段的数据类型不兼容。例如,目标字段是`INT`类型,而你尝试插入一个字符串。 3. **数据转换问题**:在数据插入过程中,数据类型转换导致了数据截断。例如,将`NVARCHAR`类型的数据插入到`VARCHAR`类型的字段中。 要解决这个问题,你可以采取以下几种措施: 1. **增加字段长度**:检查目标字段的定义长度,并根据需要增加长度。例如,将`VARCHAR(10)`改为`VARCHAR(50)`。 2. **检查数据类型**:确保插入的数据类型与目标字段的数据类型兼容。如果需要,进行适当的数据类型转换。 3. **数据验证**:在插入数据之前,验证数据的长度和类型,确保它们符合目标字段的定义。 例如,假设你有一个表`Employees`,其中有一个字段`Name`定义为`VARCHAR(10)`,而你尝试插入一个长度为20的字符串: ```sql INSERT INTO Employees (Name) VALUES ('ThisIsAVeryLongName'); ``` 这个操作会触发“将截断字符串二进制数据”的错误。要解决这个问题,你可以增加`Name`字段的长度: ```sql ALTER TABLE Employees ALTER COLUMN Name VARCHAR(50); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值