我的FreeBSD记录

其他Linux/Unix/BSD/OSX等发行版讨论
回复
头像
20sanguo
帖子: 794
注册时间: 2008-05-10 9:53

我的FreeBSD记录

#1

帖子 20sanguo » 2018-11-06 11:48

由于种种原因,又装起FreeBSD整下。这里记录一下遇到的问题和解决方法。

可能我freebsd比ubuntu玩的还早,十几年前在公司用台破机器装了个服务器,好象是作邮件、网关、路由啥的,配置好后根本不用考虑还有这台机。

这次, ---我先去接小孩---

目的就是用FreeBSD作桌面,另外再作些服务。仔细想想,其实也不是,我另有目的。但BSD做不游戏的桌面绝对可以,稳定的很。

机器:acer 5750g,ssd+机械。
开始只加ssd装amd64 11.2,GPT+ZFS分区,配置差不多后机械(原有win10系统)加在光驱位 (出现了问题二)
3D354EB2-B950-4396-B9C7-62DF94D911E5.png
猛然发现各区域的手册内容还不大一样

代码: 全选

https://www.freebsd.org/doc/zh_CN/books/handbook/index.html
https://www.freebsd.org/doc/zh_TW/books/handbook/index.html
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/
就不同,互相参照吧,有多有少,英文的没看也许是最全的,有时间再看看。

桌面:fvwm;效果:compton;终端:xterm;看图:feh;文本:leafpad 和nano;视频VLC和Kodi;浏览器:Firefox(opera版本太旧),加了个chromium(貌似热得快,但开网页速度快一点)先试一试再删其中之一;中文输入:scim;文件管理器:rox;虚拟机:VirtualBox;pdf:mupdf;抓图:scrot;画图:mypaint;wifi管理:wifimgrwpa_supplicant_gui (wpa_gui);BT下载: qBittorrent;压缩gui:peazip;字典:goldendict ;搜索引擎:www.startpage.com;邮件:bitmessage地址

代码: 全选

BM-2cTaxvXYQP4htTXg4ZzHEU15J4qj623zZ1
;聊天:qtox

代码: 全选

D45577C0F6C98C49819BFA113C88D0BC1D6AD04571B9F34A4B91AA8A24E315528528E3BBB74E
问题一、
无线网卡不能连接路由器,但能scan到,并反复出现如下

代码: 全选

ath0: ath_legacy_rx_tasklet:sc_inreset_cnt > 0;skipping
这样解决:

代码: 全选

/etc/rc.conf

wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"
ifconfig_wlan0_ipv6="inet6 accept_rtadv"  <<-删除这一行
问题二、
win10机械加在光驱位后,才发现不能通过F12切换,当初想的太天真啊,就傻呆呆的看官方手册执行了
A、

代码: 全选

#boot0cfg -B /dev/ada0
然后确实有管理器,但只能进win10,选FreeBSD那个?只会出#,见过的应该能明白。这也好解决,C就行了,恢复只能进FreeBSD模式。

硬盘位sata3,光驱位sata2,我还想挣扎一下。就装了grub2。但是啊,配置啥的简单,

B、执行这个

代码: 全选

# grub-install --force /dev/ada0

Path `/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.
出这个错
然后我又傻呆呆的执行了

代码: 全选

http://www.isysop.com/installing-grub-on-freebsd-with-gpt-partitions/
# gpart modify -i 1 -t \!21686148-6449-6E6F-744E-656564454649 /dev/ada0
还是not readable by GRUB on boot,重启连FreeBSD也进不去了missing boot。还是C救回来。


C、用FreeBSD安装盘开机进live CD,root密码空

代码: 全选

# gpart show -l /dev/ada0            <---注意看清是不是这个硬盘
# gpart delete -i 1 /dev/ada0   <--A、错误时不用执行
# gpart add -t freebsd-boot -a4k -s512k /dev/ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/ada0
然后我就放弃了,把机械接到sata3,ssd接光驱位,用windows10的bcd管理引导两个硬盘系统了。浑身轻松啊。

虽然放弃了,但为啥不能在boot2阶段选择引导多系统?就是做到freebsd选单那里,我打算再试试。

问题三、
装上11.2后上不了网,ping的通ip,但解析不了域名。
这个它用的是unbound还是local版的,这个dns服务我还第一次听说啊。
网上查了下

代码: 全选

/etc/unbound/unbound.conf

module-config: "iterator" #添加这个
还就行了。但是引起了我的好奇啊,dns服务器我很喜欢搞啊。

学习一
unbound 服务
看手册默认提供的是阉割版,那必须换成完整版啊。装好后

代码: 全选

/etc/rc.conf   <---这个我最喜欢

local_unbound_enable="NO"#或者注释掉都行
unbound_enable="YES"
然后就是配置文件

代码: 全选

/usr/local/etc/unbound/unbound.conf
把local里的的也考过来,加到上面的conf最后
include: /usr/local/etc/unbound/forward.conf
include: /usr/local/etc/unbound/lan-zones.conf
include: /usr/local/etc/unbound/control.conf
include: /usr/local/etc/unbound/conf.d/*.conf            <---目录下放特定文件
先看看问题三是什么事,因为完整版配置文件里的说明也很完整,不用查来查去费时间。
我感觉还是三那句注释掉并打开

代码: 全选

auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
这样也是可以解析的,还更牛一点看起来,drill 出来一段码。
但是有时就会没有返回结果?这个我也不知道啥问题我就把常用的网址这样放

代码: 全选

/usr/local/etc/unbound/lan-zones.conf

local-zone: "freebsdchina.org." redirect
local-data: "freebsdchina.org. 300000 IN A 103.47.136.28"
local-zone: "ubuntu.org.cn." redirect
local-data: "ubuntu.org.cn. 600000 IN A 192.157.249.221"
local-data: "ubuntu.org.cn. 600000 IN A 198.71.84.64"
local-data: "ubuntu.org.cn. 600000 IN A 192.157.242.155"
local-data: "ubuntu.org.cn. 600000 IN A 198.71.86.201"
local-zone: "pkg0.twn.freebsd.org." redirect
local-data: "pkg0.twn.freebsd.org. 380000 IN A 140.113.168.171"
就快了。

比较完整的配置

代码: 全选

/etc/resolv.conf
search .
nameserver 127.0.0.1
nameserver 你的其他dns

/etc/unbound/unbound.conf
server:
        num-threads: 2
        interface: 0.0.0.0
        prefer-ip6: no
        do-ip4: yes
        do-ip6: no
        do-tcp: yes
        do-udp: yes
        tcp-upstream: no
        access-control: 127.0.0.0/8 allow
        access-control: 你的网段 allow
        chroot: /var/unbound
        username: unbound
        directory: /var/unbound
        pidfile: /var/run/unbound.pid
        root-hints: "/var/unbound/named.cache" #wget https://www.internic.net/domain/named.cache
        hide-identity: yes
        hide-version: yes
        minimal-responses: yes
        module-config: "iterator"
        auto-trust-anchor-file: /var/unbound/root.key
include: /var/unbound/forward.conf
include: /var/unbound/lan-zones.conf
include: /var/unbound/control.conf
include: /var/unbound/conf.d/*.conf

/var/unbound/forward.conf
forward-zone:
	name: "lan"
	forward-addr: 局域网网关
forward-zone:
	name: "."
	forward-addr: 其他dns
	
/var/unbound/lan-zones.conf
server:
	# Unblock reverse lookups for LAN addresses
	unblock-lan-zones: yes
	insecure-lan-zones: yes

/var/unbound/control.conf
remote-control:
	control-enable: yes
	control-interface: /var/run/unbound.ctl
	control-use-cert: no

/var/unbound/conf.d/accelerated-domains.china.unbound.conf #自动生成

/var/unbound/conf.d/g.conf #发到其他dns
forward-zone:
  name: "twitch.tv."
  forward-addr: 其他dns
  
学习二、(小技巧)
a、才发现我特别傻,一直用su。也有sudo啊,

代码: 全选

/usr/local/etc/sudoers
配置可以用的用户或组,保存后直接就能用了。

改变默认shell

代码: 全选

chpass -s /bin/csh 用户名  <--超级用户执行
普通用户自己执行chsh -s shell 说是可以但为啥记录不下来?我还就奇怪了su就可以补全命令,原来su默认是csh,普通默认是sh,这不是开玩笑么。

b、xterm
修改设置xterm默认窗口位置和大小,显中文啥的

代码: 全选

~/.Xdefaults
xterm*faceName: DejaVu Sans Mono:antialias=True:pixelsize=13
xterm*faceNameDoublesize:WenQuanYi Zen Hei Mono:antialias=True:pixelsize=13
xterm.*.geometry:130x30+8+8

复制,其他程序粘贴

代码: 全选

XTerm*selectToClipboard: true
c、类似这些东西好像放在这里才起作用,放在rc.conf就不行。

代码: 全选

/boot/loader.conf
autoboot_delay="3"
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
zfs_load="YES"
acpi_asus_load="YES"
kern.vty=vt
kern.vt.fb.default_mode="1366x768"
fuse_load="YES"
coretemp_load="YES"      <----最起码这个就不行
nvidia-modeset_load="YES"
i915kms_load="YES"
还能解决,启动时出现的

代码: 全选

kernel: Failed to add WC MTRR for [0xc0000000-0xcfffffff]
这个错误

d、fvwm
字体应该用

代码: 全选

fc-list | grep "WenQuanYi"

得到正确名称然后写成类似这样,就正常了

代码: 全选

DefaultFont     Font "xft:WenQuanYi Zen Hei:encoding=UTF-8"

而不是

代码: 全选

-wenquanyi-*-medium-r-normal-*-16-*-*-*-*-*-*-*
进系统默认锁定num_lock键

代码: 全选

exec numlockx &
NUM_LOCK和fvwm快捷键冲突

代码: 全选

IgnoreModifiers L25
调音量

代码: 全选

key up A 4 exec mixer vol +2 voll
key down A 4 exec mixer vol -2 voll
e、笔记本盖盖休眠

代码: 全选

/boot/loader.conf
acpi_asus_load="YES"     <---选自己合适的牌子,acer貌似就是它的山寨感觉

/etc/sysctl.conf
hw.acpi.lid_switch_state=S3
f、compton

代码: 全选

backend ="glx";
Kodi全屏不能

代码: 全选

glx-use-copysubbuffermesa = false; 
glx-no-rebind-pixmap = false; 
g、虚拟机
qemu找不到kqemu这个模块,编译还没搞,速度非常慢,还是装了 VirtualBox,按手册装就得了。让我惊讶的是win7安装只用了4分钟,这下基本上啥都能用了。
复制winiso到bsd机器时还发生个小插曲,我一看台式机里filezilla里有bsd的连接直接就开了
目录是这个 /private/var/root 我说看这bsd多牛,sftp还给个虚拟空间,传吧,速度咋这么慢,传完了,回来咋也找不到!后来冥思苦想我k收的那个是ipad啊,我给它们分的ip后面俩数一样。

经过这些天的测试,感觉上FreeBSD可以作桌面了。

还是装了个ubuntu server(换源后速度比freebsd快得多啊,羡慕嫉妒很高兴啊),有些linux程序在BSD下要装一堆东西,感觉不清纯。

---最近发现freebsd源也快起来了啊。台湾源软件可能同步的比较晚,如果想用最新的还是原装源最新。
3系统
3系统
这样就好多了

另外我的机器vbox的光驱和硬盘在设置那里需要分别在两个控制器下面。

h、挂载iso文件

代码: 全选

sudo mdconfig -a -t vnode -f  ***.iso
如果不指定会从md0开始往后排md1...
sudo mount -t cd9660 /dev/md1 /mnt/u
i、chromium

代码: 全选

chrome --proxy-server=192.168.20.1:8888
具体man,貌似所有的都支持,图形界面设置它只能读系统。switchyomega好像也不能管下载插件那里,能显示但不能下载,要下载还得命令打开。


问题四、
双显卡但只能用intel的,n卡可以装驱动,进x后,也可以开n卡配置程序,但是硬件管理那里核心赫然i915。win还要用就不在bios禁用了,注释掉n卡的id就不启用它了。intel 3d也开不了,难道是kde4的毛病?
暂时的解决方法:删除nvidia驱动,glxgears可以打开但kde里用OpenGL还是开不了?fvwm用compton glx特效了。就着样吧,kde我也准备删了。因为freebsd我只用终端浏览器文件管理器这三个而已。
并且啊,fvwm解决了我kde最变态的一个问题,就是外放音量比耳机小。
我的桌面
我的桌面
我的桌面

这个问题看起来解决了很大一部分,但需要开在loader.conf中linux,不清纯了。
1、首先intel集显,驱动最好在usr/port里编译一下drm-kmod那个驱动。
2、xorg.conf里nvidia有关的仍然全部注释掉

代码: 全选

#Section "Device"
#       Identifier  "Card0"
#       Driver      "nvidia"
#       BusID       "PCI:1:0:0"
#       Option      "dri" "3"
#EndSection
3、/boot/loader.conf里开

代码: 全选

linux_enable="YES"
4、到https://github.com/pouya-eghbali/freebsd-nvidia-optimus 下载相应驱动,像我的老机就下390的
pkg install -f 强安,会有一个冲突,强安。
5、/etc/rc.conf

代码: 全选

kld_list="linux64.ko nvidia.ko /boot/modules/i915kms.ko"
optimus_enable="YES" #好像没啥用,之后还需要手动开一下
6、该重启就重启,然后
终端执行sudo service optimus onestart
出现

代码: 全选

~ % 
X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
Build Operating System: FreeBSD 12.1-RELEASE-p10 amd64 
Current Operating System: FreeBSD freefree 12.2-RELEASE FreeBSD 12.2-RELEASE #0 r340719M: Thu Oct 29 18:36:47 CST 2020     root@freefree:/usr/obj/usr/src/amd64.amd64/sys/FREEKERNEL amd64
Build Date: 03 October 2020  12:55:27PM
 
Current version of pixman: 0.40.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.8.log", Time: Mon Nov  2 09:27:32 2020
(++) Using config file: "/usr/local/etc/X11/optimus.x.conf"
(==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
就开启了。

测试了下

代码: 全选

20sanguo@freefree:~ % glxgears   <------intel显卡  
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
312 frames in 5.0 seconds = 62.208 FPS
301 frames in 5.0 seconds = 60.162 FPS
301 frames in 5.0 seconds = 60.162 FPS
^C
20sanguo@freefree:~ % optirun glxgears    <----n卡
5876 frames in 5.0 seconds = 1175.045 FPS
5976 frames in 5.0 seconds = 1195.134 FPS
5957 frames in 5.0 seconds = 1191.277 FPS
现在知道咋用独显了不,就是在需要的应用前加optirun
比如
optirun smplayer
当然还得看后面的程序支持否。
除了需要开linux支持,近乎完美。
当然,开了独显必然会带来温度的升高,cpu占用律的提升。
sudo service optimus stop #不用的时候关了就行了。

学习三、 IPFW
先简单粗暴来一条

代码: 全选

ipfw add fwd 192.168.20.1,8888 tcp from any to 'drop啥的.com'
就可以了,当然20.1,8888是我路由器神秘端口,都可以在BSD完成,慢慢来。

具体用起来需要先执行

代码: 全选

sysctl net.inet.ip.forwarding=1
放到/etc/sysctl.conf里也行
然后

代码: 全选

ipfw set 65200 add fwd 192.168.20.1,8888 tcp from any to 你想要得网址
然后

代码: 全选

ipfw 65200 add fwd 192.168.20.1,8888 tcp from any to 你想要加得网址
也可以这样

代码: 全选

ipfw 65200 add fwd 192.168.20.1,8888 tcp from any to 有些公司的连续ip.0/24
就正常了
上传也行
上传也行
不过还有更简单的,建个表啊,往表里加减东西

代码: 全选

ipfw table fclist add ip段.0/24或者ip
ipfw set 0 table fclist add ip段.0/24或者ip      -------往里添
ipfw table fclist list                   ----------看看表里有啥

ipfw add fwd 192.168.20.1,8888 tcp from any to 'table(fclist)'          -------把表添加到防火墙

ipfw set 0 table fclist add 往里添ip段.0/24或者ip    ---------以后执行往里加,上面那句不用再执行。
这些东西成功的关键在于dns需要正确,所以用自己的dns,但是unbound里貌似没有类似dnsmasq ipset这样的东西,而手册里对于python-script也没有相应的说明暂时就是手动加到表,应该还有更简单的方法。

问题五、
换了块笔记本内置网卡,原网卡不支持5g和蓝牙,换的intel 6235,win10下都正常。BSD下还是只能2.4G,怪我没有查一下,唉,等等12出来看看能不能支持吧。

5g搞定了

代码: 全选

http://freebsd.1045724.x6.nabble.com/Can-t-seem-to-use-5GHz-APs-with-Intel-wireless-td6261385.html
rc.conf
create_args_wlan0="country AM regdomain FCC4"     <------把这行删掉,这个应该是装系统时自动添加的
蓝牙好像在vbox的win7里能获取到一个蓝牙设备暂时用不了,估计还是驱动的问题。
编译了下内核,ubt0出来了,但是按照手册用不了。可以搜到其他蓝牙设备,怎么用还在研究。

可以了,连蓝牙耳机

代码: 全选

先安装virtual_oss,然后编辑

/boot/loader.conf
ng_ubt_load="YES"

rc.conf
hcsecd_enable="YES"
bluetooth_enable="YES"

执行
#hccontrol -n ubt0hci inquiry   
#hccontrol -n ubt0hci remote_name_request 搜出的蓝牙mac 0 0 0
把mac地址和名称放到
/etc/bluetooth/hcsecd.conf   密码有的0000 有的1234 试试
#service hcsecd restart
#hccontrol -n ubt0hci write_authentication_enable 1
#hccontrol -n ubt0hci create_connection 要连蓝牙的mac地址
#sysctl hw.snd.basename_clone=0
#virtual_oss -C 2 -c 2 -r 44100 -b 16 -s 1024 -R /dev/null -P /dev/bluetooth/要连蓝牙的mac地址 -d dsp
vlc声音选dsp播放,就行了。

又搞定一个桌面问题。

问题六、

代码: 全选

#freebsd-update -r 12.1-RELEASE upgrade
出现

代码: 全选

Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 11.2-STABLE from update4.FreeBSD.org... failed.
Fetching metadata signature for 11.2-STABLE from update1.FreeBSD.org... failed.
Fetching metadata signature for 11.2-STABLE from update2.FreeBSD.org... failed.
No mirrors remaining, giving up.
这样解决

代码: 全选

https://srad.jp/~ribbon/journal/559048/

#env UNAME_r=11.2-RELEASE freebsd-update -r 12.1-RELEASE upgrade

Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 11.2-RELEASE from update2.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... 
freebsd-update后pkg出现

代码: 全选

Error message: `ld-elf.so.1: Shared object "libarchive.so.6" not found, required by "pkg"`
这样

代码: 全选

pkg-static install -f pkg
就行了。

昨天更新到12.2想着有经验没啥问题了,更新、编译内核很容易,但桌面进不去了

Xorg提示

代码: 全选

[ 10416.928] (EE) No devices detected.
[ 10416.928] (EE)
Fatal server error:
[ 10416.928] (EE) no screens found(EE)
[ 10416.928] (EE)
这个提示说明驱动有问题,我是intel显卡。这样解决

代码: 全选

#sudo portsnap fetch update
#cd /usr/ports/graphics/drm-fbsd12.0-kmod
#sudo make && make reinstall
重新编译安装一下drm-kmod就行了,真奇怪pkg update竟然没有更新到这个。

学习四
zfs

livecd里加载硬盘中的zfs分区

代码: 全选

https://serverfault.com/questions/848114/mount-freebsd-encrypted-zfs-from-live-cd-and-find-the-root-partition

#cd /tmp/
# mkdir mounted
# geli attach /dev/ada0p3
# zpool import -f -R /tmp/mounted zroot
#zfs mount zroot/ROOT/default
为啥搞这些呢?因为freebsdupade后,其实没已经问题了,但我又手贱nextboot了,就进不去了,一直在开机按F1那,只要一按F1,必把freebsd这块硬盘的分区表搞乱,好在我在win下有备份,恢复了几十次后,用livecd的boot文件夹替换了硬盘上的boot文件夹,loader.conf里开zfs,就活过来了。

并且啊,3D也不行了。
这样

代码: 全选

sudo pkg install -f drm-fbsd12.0-kmod
大概是这个,也许还有,就是把drm相关的重装一下到/boot/modules/里
然后

代码: 全选

/etc/rc.conf添加,放到zfs下面应该就行
kld_list="/boot/modules/i915kms.ko"
3D就回来了。
回复