系统安装记录 install OS
上个系统很乱,基本系统是lfs7.7,上面应用都是基于lfs7.9,基本系统是才接触lfs时搭建的,打包保存后一直没怎么使用过,到lfs7.10快出来的时候有段时间有空就拿出来跑了一下,安装了一些软件,
所以这个系统没有任何规划总体就是拼凑出来的(比如尝试了从ext4转换到btrfs,甚至中间误删除过系统重要文件),现在还是换下系统吧,顺便将一些以前没有完成的事做掉
PS:误删的是pkg-config目录下的所有文件(按照查看的教程应该是删除临时目录下pkg-config里面的所有文件?!为什么要删这个目录???,最后删错目录了),这对编译来说完全就是灾难性的,
后来通过btrfs的快照恢复过一些,重新安装了一些软件恢复过一些,其他的是等到编译软件报错时再处理的
首先是分区, 由于采用btrfs,分区格式化操作就十分简单了
#之前挂了三个子卷,安装系统前将两个子卷及快照都删了
[root@myOS 23:49:08 sources]# btrfs subvolume list /
ID 262 gen 95727 top level 5 path lfs
#好久没玩btrfs了,错误创建子卷
[root@myOS 23:49:10 sources]# mkdir /lfs
[root@myOS 23:49:40 sources]# btrfs subvolume create /lfs_8
Create subvolume '//lfs_8'
[root@myOS 23:50:33 sources]# btrfs subvolume list /
ID 262 gen 95730 top level 5 path lfs
ID 324 gen 95730 top level 262 path lfs_8
#删除刚才误创建的子卷
[root@myOS 23:50:38 sources]# btrfs subvolume delete /lfs_8
Delete subvolume (no-commit): '//lfs_8'
[root@myOS 23:51:04 sources]#
[root@myOS 23:51:07 sources]# btrfs subvolume delete -C /lfs_8
ERROR: cannot access subvolume /lfs_8: No such file or directory
#上面第一步已经删除子卷了,第二步错误用法
[root@myOS 23:51:11 sources]# btrfs subvolume list /
ID 262 gen 95730 top level 5 path lfs
[root@myOS 23:51:13 sources]#
#创建新的子卷用来安装新系统
[root@myOS 23:51:14 sources]# mount -t btrfs /dev/sda2 /lfs
[root@myOS 23:51:33 sources]# ls -l /lfs/
total 0
drwxr-xr-x 1 root root 172 Apr 2 23:51 lfs
[root@myOS 23:51:38 sources]#
#这里的挂载看着文件名很揪心,我创建挂载点时没考虑太多
[root@myOS 23:51:38 sources]# btrfs subvolume create /lfs/lfs_8
Create subvolume '/lfs/lfs_8'
[root@myOS 23:52:01 sources]# btrfs subvolume list /
ID 262 gen 95732 top level 5 path lfs
ID 325 gen 95732 top level 5 path lfs_8
[root@myOS 23:54:47 sources]# mount -v -t btrfs -o subvol=/lfs_8 /dev/sda2 /mnt/lfs
mount: /dev/sda2 mounted on /mnt/lfs.
好了, 系统分区及挂载完成,下面就可以正式安装系统了
2017年2月底lfs8.0就出来了,虽然是大版本号更新,但是具体内容没有太大变化,至少安装过程还是一样地
基础系统的安装花费四个小时的时间,这其中我已经尽量避免做软件安装时的测试了,如果加上测试时间,另算
基础系统安装,完全按照手册进行即可, 这里需要主要的是宿主机的环境一定要在手册规定的范围内,否则可能出现各种奇怪问题
主要考虑 binutils和glibc两个版本对不对就差不错了
ld --version
ldd --version
由于我已经有可以启动的系统了,采用的引导器是grub, 原则上来说我现在不需要安装grub了
这里再说一下grub的安装, 我安装时一般选择 i386 pc模式(传统bios) + x86_64 efi模式(新的uefi),而这两个如果需要同时安装 configure的时候好像有问题, 我是采用先安装一个之后清空编译环境重新安装另一个,达到安装两个模式
安装基本到第六步走完就结束了, 第七步的配置适当进行就可以了 第八步的内核配置及引导按照往常进行
基本系统安装结束可以考虑继续blfs了
首先的问题是需要网络连接
我的有线网卡内核自带驱动,比较好解决(之前安装系统都是先插上网线安装的)
这次我打算直接使用无线网卡 (bcm43228), 我的这个无线网卡内核其实也是自带驱动b43驱动可以使用,但是b43驱动经常无缘无故掉线,很烦,不如直接wl驱动
所以在有网络环境的时候先下载好 wpa_supplicant 及 broadcom 的驱动程序 dhcp程序可以考虑之后安装也行
安装好无线网卡驱动 利用ip配置好ip地址, 写好dns地址, 设置好路由 就可以ping百度看下能不能正常上网了, 网络环境依个人情况而定,大伙的和我并不一样,不详讲
我所安装的组件
- wayland 想尽快进入图像界面可以考虑先不安装xwayland支持,那样就少很多依赖可以快速进入图形化系统 就可以愉快的复制粘贴了
- awesome 这是我使用的windos manager, 4.x版本和之前的3.x版本改动很大, 感觉现在就是一个完整的图形环境了
- mpfc 音乐播放器
- mpv 视频播放器
- fcitx 输入法程序这个blfs里面好像没有, blfs里面有ibus,所以简单的话可以直接考虑使用ibus
- google-chrome chrome57版本的flash挺坑的,可以参考chromium的启动脚本添加 --paapo-path 等参数启动(启用flash后cpu占用轻松达到25%), blfs8里面其实自带了chromium, 看到SBU达到90我就放弃了,渣本估计需要接近5个小时才能编译完成
- wps 金山的软件,不喜欢,人品都被败光了,只是为了测试安装试下
- 其他的一些必须的软件, 比如解压就可直接使用的Telegram等
遇到的坑
- 因为我打算完全禁用nvidia显卡(鸡肋,甚至鸡肋都算不算的东西,如果不是焊死在主板上,早就拿下来了),安装软件的时候无脑进行,导致安装了 libvdpau这个库文件,最后导致ffmpeg及mplayer默认使用vdpau的模块,在我电脑上播放视频犹如
幻灯片,最后去掉这个库文件,重新编译ffmpeg mplayer mpv gst等软件才完全剔除这个影响 - fcitx,安装时无脑,就安装了个fcitx就认为可以输入汉字了,调了好久发现没装输入法啊,我只装了一个输入法框架而已,安装libgooglepinyin后可以正常调用输入法(怕libpinyin依赖太多,就没装, sunpinyin依赖不是很多可以考虑)
- google-chrome 之前讲了启动脚本的问题,现在还有一个问题是google-chrome好像调用某个系统调用经常失败,导致系统日志里面都是 audit chrome。。。。, 无奈,没搜到好的解决办法,把内核的audit功能关了,眼不见心不烦,顺便还能减小100K的内核大小
- 还是显卡的问题,之前禁用不完整,导致nvidia一直是全功率运行的,发热量巨大,笔记本放在哪不动风扇都呼呼的转,参考这个解决Hybrid graphics
Fully Power Down Discrete GPU
You may want to turn off the high-performance graphics processor to save battery power, this can be done by installing the acpi_call package.
Tip: For kernels not in the Official repositories, the acpi_call-git-dkmsAUR is an alternative. See also DKMS.
Once installed load the kernel module:
# modprobe acpi_call
With the kernel module loaded run the following:
# /usr/share/acpi_call/examples/turn_off_gpu.sh
This script will go through all the known data buses and attempt to turn them off. You will get an output similar to the following:
Trying \_SB.PCI0.P0P1.VGA._OFF: failed
Trying \_SB.PCI0.P0P2.VGA._OFF: failed
Trying \_SB_.PCI0.OVGA.ATPX: failed
Trying \_SB_.PCI0.OVGA.XTPX: failed
Trying \_SB.PCI0.P0P3.PEGP._OFF: failed
Trying \_SB.PCI0.P0P2.PEGP._OFF: failed
Trying \_SB.PCI0.P0P1.PEGP._OFF: failed
Trying \_SB.PCI0.MXR0.MXM0._OFF: failed
Trying \_SB.PCI0.PEG1.GFX0._OFF: failed
Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG0.PEGP._OFF: works!
Trying \_SB.PCI0.XVR0.Z01I.DGOF: failed
Trying \_SB.PCI0.PEGR.GFX0._OFF: failed
Trying \_SB.PCI0.PEG.VID._OFF: failed
Trying \_SB.PCI0.PEG0.VID._OFF: failed
Trying \_SB.PCI0.P0P2.DGPU._OFF: failed
Trying \_SB.PCI0.P0P4.DGPU.DOFF: failed
Trying \_SB.PCI0.IXVE.IGPU.DGOF: failed
Trying \_SB.PCI0.RP00.VGA._PS3: failed
Trying \_SB.PCI0.RP00.VGA.P3MO: failed
Trying \_SB.PCI0.GFX0.DSM._T_0: failed
Trying \_SB.PCI0.LPC.EC.PUBS._OFF: failed
Trying \_SB.PCI0.P0P2.NVID._OFF: failed
Trying \_SB.PCI0.P0P2.VGA.PX02: failed
Trying \_SB_.PCI0.PEGP.DGFX._OFF: failed
Trying \_SB_.PCI0.VGA.PX02: failed
See the "works"? This means the script found a bus which your GPU sits on and it has now turned off the chip. To confirm this, your battery time remaining should have increased. Currently, the chip will turn back on with the next reboot to get around this we do the following:
Note: To turn the GPU back on just reboot.
Add the kernel module to the array of modules to load at boot:
/etc/modules-load.d/acpi_call.conf
#Load 'acpi_call.ko' at boot.
acpi_call
To turn off the GPU at boot we could just run the above script but honestly that is not very elegant so instead lets make use of systemd's tmpfiles.
/etc/tmpfiles.d/acpi_call.conf
w /proc/acpi/call - - - - \\_SB.PCI0.PEG0.PEGP._OFF
The above config will be loaded at boot by systemd. What it does is write the specific OFF signal to the /proc/acpi/call file. Obviously, replace the \_SB.PCI0.PEG0.PEGP._OFF with the one which works on your system (please note that you need to escape the backslash).
待完善的地方
- 打算安装teamviewer的,这样我就基本可以实现迁移到linux上工作了(qq用手机版就行,本来也是不常用的东西,聊天有telegram及irc),可是teamviewer依赖wine才能跑,需要安装很多32位库,暂时没有解决这个问题,留待之后进行
[通过复制arch的32位库, teamviewer已经基本可以使用] - awesome及weston个性化定制,由于不是经常使用这个linux,所以个性化的定制没有进行,期待以后有时间完善这个
- 内核编译时间越来越久了,大小已经达到5.4M了,需要优化下, 其他需要使用的软件,可能因为各种原因没有安装,期待之后有时间多使用这个Linux系统吧,不要一直吃灰了
系统安装记录 install OS的更多相关文章
- Ubuntu 14.04 16.04 17.10 + Win10 双系统安装记录 + 分区大小选择办法
安装了N遍,重要的东西在此记录. 参考了 http://www.libinx.com/2017/five-steps-win10-ubuntu-dual-boot/ 忠告:为了让日后喘气能匀呼些,要选 ...
- 【bug记录】OS Lab4 踩坑记
OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在 ...
- 【bug记录】OS Lab3 踩坑记
OS Lab3 踩坑记 Lab3在之前Lab2的基础上,增加了进程建立.调度和中断异常处理.其中测试包括进程建立以及进程调度部分. 由于是第一次做bug记录,而且是调试完bug后再做的记录,所以导致记 ...
- 记录Mac OS下编译Thrift库
方法一:brew管理工具安装Homebrew是Mac开发包管理工具,类似于Linux的apt-get之类的,实它相当于开发软件界的 Appstore.借助该管理工具,可以自动化地安装软件包,它会自动安 ...
- Android记录10--android.os.NetworkOnMainThreadException异常解决办法
2013年11月1日小光棍节 有一段时间没有发表新的博客了,最近一直在忙着开发新浪微博客户端遇到很多问题比较头痛,比如说本篇博客要讲的NetworkOnMainThreadException这个异常, ...
- Deepin深度Linux系统安装记录
测试设备:小米游戏本,最新版15.6进入安装后发现黑屏,所以使用15.5安装 Deepin 15.5 官方介绍页 官方下载 百度云下载 下载后得到文件夹15.5 Release 将里面的ISO镜像文件 ...
- win7 xp 双系统安装记录
原机win7 64 增加xp x86 win7在c盘,xp装h盘 1.老毛桃pe,雨林木风gho,蓝屏,0000007b 2.通用pe.雨林木风gho,蓝屏,00000007b 3.pe设置h盘为系统 ...
- install OS from usb
https://unetbootin.github.io/ https://rufus.akeo.ie/
- mac os x 记录 转载
转载:远景网友(手机锋友t5sd3sf):http://bbs.feng.com/read-htm-tid-10434256.html 一个命令制作 OS X 原版安装U盘 1.要保证下载的原版安装包 ...
随机推荐
- GetTickCount()函数的陷阱!
开发中经经常使用GetTickCount()函数来进行间隔时间的推断.如推断某一段代码运行花了多少时间等,使用比較方便. 可是仅仅针对寻常的一些測试.近期开发一个服务程序时,也在代码中用GetTick ...
- Verilog利用$fdisplay命令往文件中写入数据
最近在做的事情是,用FPGA生成一些满足特定分布的序列.因此为了验证我生成的序列是否拥有预期的性质,我需要将生成的数据提取出来并且放到MATLAB中做数据分析. 但是网上的程序很乱,表示看不懂==其实 ...
- 事件驱动模型实例详解(Java篇)
或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...
- [译]GLUT教程 - 笔划字体
Lighthouse3d.com >> GLUT Tutorial >> Fonts >> Stroke Fonts 笔划字体是用线条生成的.跟位图字体相反,笔划字 ...
- IDEA 去掉 ALT + / 自动补全
取消掉Alt + / 自动补全 setting -> keymap -> main menu -> code -> completion -> cyclic Expand ...
- git学习之创建版本库(三)
创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...
- linux上安装Kafka
写个一篇kafka文章了.但是那都是针对性能来说的,下面看一下完整的,kafka步骤: 安装单机三个 Broker 的 Kafka 集群,使用 Kafka 集群发布和接收消息.学完本课程,对 Kafk ...
- python 求下个月的最后一天
[1]根据当前月求上个月.下个月的最后一天 (1)求当前月最后一天 (2)求前一个月的最后一天 (3)求下一个月的最后一天 学习示例与应用实例,代码如下: #!/usr/bin/python3 #-* ...
- ios json结构
NSString *itemJson = [NSString stringWithFormat:@"{\"Id\":\"%@\",\"Cha ...
- 你须知道的30个CSS选择器 »
你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...