Compare commits

...

101 Commits
main ... main

Author SHA1 Message Date
cxykevin c9c72f323e 格式化
Build and Publish / Run (push) Successful in 7m51s Details
2024-08-30 23:21:05 +08:00
ZXL-Q a670ad62d6 VMware 错别字修改 (#24)
Build and Publish / Run (push) Successful in 13m13s Details
Reviewed-on: study-area-cn/study-area-cn#24
Co-authored-by: ZXL-Q <zxlq114514@gmail.com>
Co-committed-by: ZXL-Q <zxlq114514@gmail.com>
2024-08-30 22:34:36 +08:00
cxykevin 124e4a0308 更新 src/learn_linux_basic/shell_and_shell_script/learn_shell.md
Build and Publish / Run (push) Successful in 8m28s Details
2024-08-30 10:40:12 +08:00
cxykevin d3ac3e700e 更新sh
Build and Publish / Run (push) Successful in 6m45s Details
2024-08-30 10:20:41 +08:00
cxykevin 6e25b485ff 格式化,补充内容
Build and Publish / Run (push) Has been cancelled Details
2024-08-30 10:18:15 +08:00
cxykevin 4711a45569 改错别字
Build and Publish / Run (push) Successful in 6m45s Details
2024-08-30 09:56:34 +08:00
Hmtsai 8bf629d140 完成章节:”学习Shell”
Build and Publish / Run (push) Successful in 6m28s Details
2024-08-29 13:06:59 +08:00
cxykevin c0fd2c82be 包含字体
Build and Publish / Run (push) Successful in 6m47s Details
2024-08-29 12:07:14 +08:00
cxykevin 83fa4d4b03 更新 src/SUMMARY.md
Build and Publish / Run (push) Has been cancelled Details
2024-08-29 12:05:01 +08:00
cxykevin 4a07a842f5 更新 src/learn_linux_basic/file_and_path/backup.md
Build and Publish / Run (push) Has been cancelled Details
2024-08-29 12:03:40 +08:00
cxykevin 91e766aea2 更新 src/learn_linux_basic/file_and_path/backup.md
Build and Publish / Run (push) Has been cancelled Details
2024-08-29 12:03:15 +08:00
Hmtsai 8b3c8339fc 更正部分内容
Build and Publish / Run (push) Has been cancelled Details
2024-08-29 11:58:08 +08:00
Hmtsai 7cca05c26c 新增备份相关内容
Build and Publish / Run (push) Successful in 6m17s Details
2024-08-29 11:44:39 +08:00
Hmtsai 20b6cc1b62 修改部分用词
Build and Publish / Run (push) Successful in 6m30s Details
2024-08-29 11:07:52 +08:00
cxykevin 0eba964a5a 主题小优化 (#23)
Build and Publish / Run (push) Successful in 6m15s Details
Reviewed-on: study-area-cn/study-area-cn#23
2024-08-27 22:39:25 +08:00
cxykevin f77e79a58c 删除vim的高亮
Build and Publish / Run (push) Successful in 12m17s Details
2024-08-27 20:15:44 +08:00
cxykevin baacf2a231 更新 src/learn_linux_basic/shell_and_shell_script/vim_editor.md
Build and Publish / Run (push) Successful in 6m24s Details
2024-08-27 20:07:51 +08:00
cxykevin 0fb5946b8e 完成 Vim Editor (#22)
Build and Publish / Run (push) Successful in 6m22s Details
Reviewed-on: study-area-cn/study-area-cn#22
2024-08-27 19:58:01 +08:00
cxykevin 532d6b9948 更新 src/learn_linux_basic/linux_common_sense.md
Build and Publish / Run (push) Successful in 6m11s Details
2024-08-27 19:12:06 +08:00
cxykevin d0a0eb6479 更新 src/conventions.md
Build and Publish / Run (push) Has been cancelled Details
2024-08-27 19:10:49 +08:00
cxykevin dd798247e2 更新主题 (#21)
Build and Publish / Run (push) Successful in 6m35s Details
Reviewed-on: study-area-cn/study-area-cn#21
2024-08-25 17:42:57 +08:00
cxykevin 4880cfff76 完成磁盘 (#20)
Build and Publish / Run (push) Successful in 5m51s Details
Reviewed-on: study-area-cn/study-area-cn#20
2024-08-24 21:10:50 +08:00
Hmtsai e787a0aae7 修改错别字
Build and Publish / Run (push) Successful in 5m55s Details
2024-08-21 19:24:14 +08:00
cxykevin 4c6b3b8687 完成gzip (#19)
Build and Publish / Run (push) Successful in 5m53s Details
Reviewed-on: study-area-cn/study-area-cn#19
2024-08-18 15:19:43 +08:00
cxykevin 9429325196 更新 README.md
Build and Publish / Run (push) Successful in 5m38s Details
2024-08-13 16:34:28 +08:00
cxykevin 532ff126b6 更新 src/intro.md
Build and Publish / Run (push) Has been cancelled Details
2024-08-13 16:34:00 +08:00
cxykevin 4291024933 更改badgeapi
Build and Publish / Run (push) Has been cancelled Details
2024-08-13 16:32:33 +08:00
cxykevin ff8ffa0fd1 修复懒加载菜单展开问题
Build and Publish / Run (push) Successful in 5m42s Details
2024-08-12 14:48:24 +08:00
cxykevin 37cfe1b31e 完成tar (#17)
Build and Publish / Run (push) Failing after 13m48s Details
Reviewed-on: study-area-cn/study-area-cn#17
Co-authored-by: cxykevin <cxykevin@yeah.net>
Co-committed-by: cxykevin <cxykevin@yeah.net>
2024-08-12 13:15:47 +08:00
cxykevin 8908dd550a 更新 theme/js/page.js
Build and Publish / Run (push) Successful in 5m16s Details
2024-08-12 09:09:16 +08:00
cxykevin 45b959e6ef 更新 theme/index.hbs
Build and Publish / Run (push) Waiting to run Details
2024-08-12 09:07:37 +08:00
cxykevin 55a044a670 更新 theme/js/page.js
Build and Publish / Run (push) Successful in 5m29s Details
2024-08-12 08:50:41 +08:00
cxykevin 6f2a135b4b 修复无刷新忘记更新的bug
Build and Publish / Run (push) Successful in 5m38s Details
2024-08-12 06:26:41 +08:00
cxykevin c866e5f47a 修复底部上一章下一章的bug
Build and Publish / Run (push) Waiting to run Details
2024-08-12 06:23:30 +08:00
cxykevin a7e4fa1424 修复favicon
Build and Publish / Run (push) Successful in 5m30s Details
2024-08-11 22:17:39 +08:00
cxykevin ffbb8de10d 实现“无刷新” (#16)
Build and Publish / Run (push) Successful in 5m16s Details
Reviewed-on: study-area-cn/study-area-cn#16
2024-08-11 21:10:42 +08:00
Hmtsai deddf2407c 修改部分用词
Build and Publish / Run (push) Successful in 5m27s Details
2024-08-11 16:48:42 +08:00
cxykevin 6bd928d8db 修复手机端自动展开菜单的问题 (#15)
Build and Publish / Run (push) Successful in 5m35s Details
Reviewed-on: study-area-cn/study-area-cn#15
2024-08-11 15:02:16 +08:00
cxykevin d791a0b76d SACP2: 完成大部分美化 (#14)
Build and Publish / Run (push) Successful in 5m20s Details
Reviewed-on: study-area-cn/study-area-cn#14
2024-08-10 21:39:31 +08:00
Hmtsai 837d290e8a 优化 study env 的实现细节
Build and Publish / Run (push) Successful in 5m5s Details
2024-08-09 22:17:21 +08:00
cxykevin f0081dd7ff 删除 hash.txt
Build and Publish / Run (push) Successful in 5m16s Details
2024-08-09 15:12:31 +08:00
cxykevin d16dfeb414 更新 .gitea/workflows/build.yaml
Build and Publish / Run (push) Waiting to run Details
2024-08-08 17:23:24 +08:00
studyareacn-format-bot afe0f8ca35 Auto format
Build and Publish / Build (push) Successful in 5m3s Details
2024-08-08 08:04:31 +00:00
Hmtsai 8cbd777568 规范用词
Build and Publish / Build (push) Has been cancelled Details
2024-08-08 16:03:26 +08:00
Hmtsai ae67fc3d6b 更新主题,使其符合Material Design风格
Build and Publish / Build (push) Successful in 5m5s Details
2024-08-08 15:08:32 +08:00
studyareacn-format-bot 6afcb9cdf9 Auto format
Build and Publish / Build (push) Successful in 5m3s Details
2024-08-02 03:42:05 +00:00
Hmtsai 0b0176c6fe 更新许可证
Build and Publish / Build (push) Has been cancelled Details
2024-08-01 16:20:31 +08:00
Hmtsai 6b7ffaac99 完成章节“文件权限管理”
Build and Publish / Build (push) Has been cancelled Details
2024-07-26 20:11:00 +08:00
Hmtsai 612121ebfc 增加对`~`的解释
Build and Publish / Build (push) Has been cancelled Details
2024-07-21 20:01:00 +08:00
Hmtsai 6080a4fb81 一些零碎修改
Build and Publish / Build (push) Waiting to run Details
2024-07-21 19:50:40 +08:00
cxykevin bdc9054201 调整目录并触发actions
Build and Publish / Build (push) Successful in 7m51s Details
2024-07-15 14:35:09 +08:00
studyareacn-format-bot 396ebd453c Auto format
Build and Publish / Build (push) Failing after 6s Details
2024-07-09 14:19:05 +00:00
cxykevin c467eebde9 更新 src/licenses/LICENSE-APACHE.md
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 22:15:19 +08:00
studyareacn-format-bot 8677d98450 Auto format
Build and Publish / Build (push) Successful in 5m11s Details
2024-07-09 13:47:53 +00:00
cxykevin 06b3516fb5 更新 src/licenses/LICENSE-APACHE.md
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 21:44:24 +08:00
studyareacn-format-bot 5c4eff6e96 Auto format
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 13:43:28 +00:00
cxykevin 2434caa892 更新 src/licenses/LICENSE-APACHE.md
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 21:39:56 +08:00
studyareacn-format-bot 42ece94c8d Auto format
Build and Publish / Build (push) Successful in 5m22s Details
2024-07-09 13:31:52 +00:00
cxykevin bf9564484b 更新 .gitea/workflows/build.yaml
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 21:28:11 +08:00
cxykevin 86ab8dc9d5 更新 hash.txt
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 21:24:56 +08:00
cxykevin 78af1d7d7f 更新 .gitea/workflows/build.yaml
Build and Publish / Build (push) Has been cancelled Details
2024-07-09 21:24:27 +08:00
studyareacn-format-bot e66a334a39 Auto format
Build and Publish / Format (push) Successful in 23s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-09 13:21:04 +00:00
cxykevin 58ac059c04 更新 .gitea/workflows/build.yaml
Build and Publish / Run (push) Waiting to run Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-09 21:17:39 +08:00
cxykevin 28a043a207 清理hash测试
Build and Publish / Format (push) Failing after 3m39s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-09 21:11:13 +08:00
cxykevin 47606aa822 更新 .gitea/workflows/build.yaml
Build and Publish / Format (push) Successful in 17s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 22:39:22 +08:00
studyareacn-format-bot 04af20f989 Auto format
Build and Publish / Format (push) Successful in 18s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 14:30:24 +00:00
cxykevin f1abb1094c 更新 .gitea/workflows/build.yaml
Build and Publish / Format (push) Successful in 3m27s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 22:27:00 +08:00
cxykevin a9af6c2876 更新 hash.txt
Build and Publish / Format (push) Failing after 20s Details
Build and Publish / Run (push) Failing after 16s Details
2024-07-08 22:22:27 +08:00
cxykevin 3a651072d1 更新 .gitea/workflows/build.yaml
Build and Publish / Format (push) Failing after 18s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 22:22:07 +08:00
cxykevin 64c1ad340a 添加 hash.txt
Build and Publish / Format (push) Failing after 17s Details
Build and Publish / Run (push) Failing after 16s Details
2024-07-08 22:19:28 +08:00
cxykevin 490a7533e2 更新 .gitea/workflows/build.yaml
Build and Publish / Format (push) Failing after 17s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 22:18:45 +08:00
studyareacn-format-bot eb66539f5e Auto format
Build and Publish / Run (push) Has been cancelled Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-08 13:51:37 +00:00
cxykevin efcd03befb 更新 .gitea/workflows/build.yaml
Build and Publish / Format (push) Successful in 3m25s Details
Build and Publish / Run (push) Has been cancelled Details
2024-07-08 21:48:27 +08:00
studyareacn-format-bot 3f793acf2d Auto format
Build and Publish / Run (push) Has been cancelled Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-08 13:34:40 +00:00
cxykevin 3a1073719d 更新 .gitea/workflows/build.yaml
Build and Publish / Run (push) Waiting to run Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-08 21:31:47 +08:00
studyareacn-format-bot 88df0356b6 Auto format
Build and Publish / Run (push) Has been cancelled Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-08 13:24:04 +00:00
cxykevin dd8d7aafe9 另一种黑魔法修复问题
Build and Publish / Run (push) Waiting to run Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-08 21:20:40 +08:00
cxykevin 3cd30e68cc 黑魔法解决git push返回值
Build and Publish / Run (push) Has been cancelled Details
Build and Publish / Format (push) Failing after 2m58s Details
2024-07-07 21:32:03 +08:00
studyareacn-format-bot c02292a977 Auto format
Build and Publish / Run (push) Has been cancelled Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-07 13:30:25 +00:00
studyareacn-format-bot cd1f2f329e Auto format
Build and Publish / Run (push) Waiting to run Details
Build and Publish / Format (push) Has been cancelled Details
2024-07-07 13:26:22 +00:00
cxykevin 09ce84ab4a 添加自动格式化 (#9)
Build and Publish / Run (push) Waiting to run Details
Build and Publish / Format (push) Has been cancelled Details
Reviewed-on: study-area-cn/study-area-cn#9
2024-07-07 21:11:52 +08:00
cxykevin 46669a43cf 添加 .lintmdrc
Build and Publish / Run (push) Has been cancelled Details
2024-07-07 16:55:10 +08:00
Hmtsai 73ea12e661 格式化文档
Build and Publish / Run (push) Successful in 5m7s Details
2024-07-07 08:22:53 +08:00
Hmtsai 84c7192489 更新目录与文件结构
Build and Publish / Run (push) Successful in 5m9s Details
2024-07-06 21:39:57 +08:00
Hmtsai e09a67c4c7 添加关机命令
Build and Publish / Run (push) Successful in 5m15s Details
2024-07-06 21:34:13 +08:00
Hmtsai 1f72a28fa4 优化目录结构
Build and Publish / Run (push) Successful in 5m31s Details
2024-07-06 21:23:25 +08:00
Hmtsai 343d728f15 修改目录错误
Build and Publish / Run (push) Successful in 5m31s Details
2024-07-06 21:11:42 +08:00
Hmtsai 92ca796e1d 修改贡献者名单
Build and Publish / Run (push) Has been cancelled Details
2024-07-06 21:08:47 +08:00
Hmtsai f5e5483c90 加入个人博客
Build and Publish / Run (push) Successful in 5m16s Details
2024-07-05 18:05:04 +08:00
Hmtsai 0d26d3b017 编辑约定部分
Build and Publish / Run (push) Successful in 5m13s Details
2024-07-05 17:31:36 +08:00
cxykevin 1a2ef0adaa 大调结构 (#8)
Build and Publish / Run (push) Successful in 5m23s Details
Reviewed-on: study-area-cn/study-area-cn#8
Co-authored-by: cxykevin <cxykevin@yeah.net>
Co-committed-by: cxykevin <cxykevin@yeah.net>
2024-07-04 20:46:42 +08:00
Hmtsai b6f28a51c2 Merge pull request '完成2.2.0文件与路径' (#6) from cxykevin/study-area-cn:main into main
Build and Publish / Run (push) Successful in 5m38s Details
Reviewed-on: study-area-cn/study-area-cn#6
2024-06-30 17:36:10 +08:00
cxykevin 25a2900c72 更新 src/learn_linux_basic/file_and_path.md 2024-06-30 17:29:41 +08:00
cxykevin 5bccc5a20a 更新 src/learn_linux_basic/file_and_path.md 2024-06-30 17:22:18 +08:00
cxykevin 03428efb07 更新 src/SUMMARY.md 2024-06-30 17:08:41 +08:00
cxykevin 63a0b5f9f8 添加 src/learn_linux_basic/file_and_path.md 2024-06-30 17:07:01 +08:00
cxykevin 6efcd8544d 更新 theme/index.hbs
Build and Publish / Run (push) Successful in 5m4s Details
2024-06-29 22:09:37 +08:00
cxykevin 8e269da58a 更新 .gitea/workflows/build.yaml 2024-06-29 19:31:18 +08:00
cxykevin 02a757649c 更新 README.md
Build and Publish / Run (push) Failing after 50s Details
2024-06-29 19:29:12 +08:00
cxykevin 1d633d545f 更新 .gitea/workflows/build.yaml 2024-06-29 19:27:04 +08:00
Hmtsai d4ed7b0a7a 修改贡献者
Build and Publish / Run (push) Successful in 4m40s Details
2024-06-27 21:55:45 +08:00
139 changed files with 3941 additions and 3031 deletions

28
.gitea/workflows/build.yaml Normal file → Executable file
View File

@ -17,10 +17,10 @@ jobs:
cat /etc/apt/sources.list
rm -rf /etc/apt/sources.list.d/*
echo "--- update source ---"
apt-get update
apt-get update
- name: Prepare Lftp
run: |
apt-get install lftp -y
apt-get install lftp -y
- name: Checkout
uses: https://git.hmtsai.cn/actions/checkout@v4
- name: Cache mdbook
@ -31,21 +31,39 @@ jobs:
with:
key: ${{ runner.os }}-mdbook
path: |
study-area-action-deps
study-area-action-deps
- name: Get file
if: ${{ steps.cache-mdbook.outputs.cache-hit != 'true' }}
run: |
git clone https://git.hmtsai.cn/cxykevin/study-area-action-deps
echo "Check..."
ls study-area-action-deps
ls study-area-action-deps
- name: Add permission
run: chmod +x study-area-action-deps/mdbook-linux-$(uname -m)
- name: Build mdbook
run: study-area-action-deps/mdbook-linux-$(uname -m) build
- name: Cache mapbook
uses: https://git.hmtsai.cn/actions/cache@v4
id: cache-mapbook
env:
cache-name: cache-mapbook
with:
key: mapbook
path: |
mapbook
- name: Get mapbook
if: ${{ steps.cache-mapbook.outputs.cache-hit != 'true' }}
run: |
git clone https://git.hmtsai.cn/cxykevin/mapbook
echo "Check..."
ls mapbook
- name: Build sitemap
run: |
python3 mapbook/build.py
- name: Check book
run: ls book
- name: Upload
run: |
mv book index
lftp ${{ secrets.FTP_SITE }} -u ${{ secrets.FTP_USERNAME }},${{ secrets.FTP_PWD }} -e "mirror -R index index"
lftp ${{ secrets.FTP_SITE }} -u ${{ secrets.FTP_USERNAME }},${{ secrets.FTP_PWD }} -e "mirror -R index index"

3
.gitignore vendored Normal file → Executable file
View File

@ -1 +1,4 @@
book
node
study-area-home-action-deps
study-area-action-deps

6
.lintmdrc Executable file
View File

@ -0,0 +1,6 @@
{
"rules":{
"no-empty-code": 1,
"no-long-code": 0
}
}

0
LICENSE-APACHE Normal file → Executable file
View File

0
LICENSE-MIT Normal file → Executable file
View File

9
README.md Normal file → Executable file
View File

@ -1,8 +1,10 @@
# Study Area CN
# Study Area CN
### URL : [learn.study-area.org.cn](https://learn.study-area.org.cn)
![stars](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.stars_count&style=for-the-badge&logo=gitea&label=stars&labelColor=%23F0F0F0&color=%231080FF&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)
![forks](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.forks_count&style=for-the-badge&logo=git&logoColor=%23303030&label=forks&labelColor=%23F0F0F0&color=%2350B250&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)
![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.hmtsai.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)
![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.study-area.org.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)
## 概述
这里是www.study-area.org的半克隆
@ -19,6 +21,7 @@
## 如何帮助开发?
如果您想要协助我们的开发,请参阅[百科](https://git.hmtsai.cn/study-area-cn/study-area-cn/wiki)
如果你对本项目做出了贡献,就请在`/src/contributors.md`中写上你的名字吧!
如果你对本项目做出了贡献,就请在`/src/contributors.md`中写上你的名字吧!

19
book.toml Normal file → Executable file
View File

@ -4,3 +4,22 @@ language = "zh-cn"
multilingual = false
src = "src"
title = "Study Area CN"
[output.html]
additional-css = [
"theme/css/icons.css",
"theme/css/mdui.css",
"theme/css/highlight.min.css",
"theme/css/page.css",
"theme/css/font.css",
"theme/font/icons.woff2",
"theme/font/noto.otf",
"theme/font/sourcecodepro.woff2",
]
additional-js = [
"theme/js/mdui.global.js",
"theme/js/highlight.min.js",
"theme/js/mathjax.js",
"theme/js/tocrender.js",
"theme/js/page.js",
]

38
src/SUMMARY.md Normal file → Executable file
View File

@ -22,27 +22,30 @@
- [主板](./learn_computer_basic/motherboard.md)
- [操作系统](./learn_computer_basic/operating_system.md)
# 学习Linux基础
# 学习 Linux 基础
- [初识Linux](./learn_linux_basic/the_linux_learning_path.md)
- [漫谈Linux学习之路](./learn_linux_basic/the_linux_learning_path.md)
- [Linux的发展历程](./learn_linux_basic/the_history_of_linux.md)
- [Linux发行版](./learn_linux_basic/linux_distro.md)
- [Rocky Linux初见](./learn_linux_basic/rocky_first_met.md)
- [初识 Linux](./learn_linux_basic/the_linux_learning_path.md)
- [漫谈 Linux 学习之路](./learn_linux_basic/the_linux_learning_path.md)
- [Linux 的发展历程](./learn_linux_basic/the_history_of_linux.md)
- [Linux 发行版](./learn_linux_basic/linux_distro.md)
- [Rocky Linux 安装](./learn_linux_basic/install_rocky_linux/install_rocky_linux_intro.md)
- [在 VMWare Workstation 上安装](./learn_linux_basic/install_rocky_linux/install_in_vmware.md)
- [在 VirtualBox 上安装](./learn_linux_basic/install_rocky_linux/install_in_vbox.md)
- [在你的电脑(实体机)上安装](./learn_linux_basic/install_rocky_linux/install_in_your_pc.md)
- [安装 Rocky Linux](./learn_linux_basic/install_rocky_linux/install_rocky_linux.md)
- [文件与路径]()
- [文件权限管理]()
- [文件目录管理]()
- [磁盘分区以及文件系统]()
- [gzip与xz]()
- [tar打包软件]()
- [备份]()
- [Shell与Shell Script]()
- [Vim编辑器]()
- [学习Shell]()
- [Linux 常识](./learn_linux_basic/linux_common_sense.md)
- [文件与路径](./learn_linux_basic/file_and_path/file_and_path.md)
- [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md)
- [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md)
- [在 VMWare Workstation 上创建虚拟磁盘](./learn_linux_basic/file_and_path/diskpart_and_filesystem/create_disk_on_vmware.md)
- [在 VirtualBox 上创建虚拟磁盘](./learn_linux_basic/file_and_path/diskpart_and_filesystem/create_disk_on_vbox.md)
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md)
- [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md)
- [备份](./learn_linux_basic/file_and_path/backup.md)
- [Shell与Shell Script](./learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md)
- [学习Shell](./learn_linux_basic/shell_and_shell_script/learn_shell.md)
- [Job]()
- [Vim编辑器](./learn_linux_basic/shell_and_shell_script/vim_editor.md)
- [Shell Script基本语法]()
- [条件判断语句]()
- [循环]()
@ -54,7 +57,6 @@
- [程序、线程和进程]()
- [什么是程序]()
- [线程和进程]()
- [Job]()
- [进程与线程的管理]()
- [特殊的进程和文件]()
- [SELinux]()
@ -64,5 +66,5 @@
- [SELinux错误的处理]()
- [系统服务的管理]()
- [Systemd与init]()
- [systemctl的使用]()
- [service和target]()
- [systemctl的使用]()

12
src/contributors.md Normal file → Executable file
View File

@ -1,19 +1,21 @@
# 贡献者名单
原站作者
## 原站作者
- netman
团队成员
## 团队成员
- hmtsai
- [hmtsai](https://blog.hmtsai.cn)
- cxykevin
- undefined
- 路人甲
- undefined(域名贡献者)
- [路人甲](https://en.lurenapp.uk)
## 第一章:学习电脑
- 东北大学 张送柱(@Hmtsai 的计算机老师)
- ZXL-Q
## 第二章Linux 基础
> 每个子名单排名不分先后

22
src/conventions.md Normal file → Executable file
View File

@ -1,9 +1,27 @@
# 约定
## 内容
章节之间可能会出现「笔者」的部分类似于配置的信息不一致的问题,这是因为「笔者」不是一个人,而是指代整个贡献这列表中的所有直接编辑过本书的人,所以会出现该问题,敬请谅解。
在本教程中,快捷键使用以下格式表示:
`Ctrl`键使用`^`(如 `^C`)或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。
它们的排列顺序是这样的:`C-M-S-<Other Key>`。
你可能会看到这种内容:`<Esc>:q!<Enter>`,其中 `<按键名>` 表示按下对应的按键(包括上面的快捷键)。
例如上面的内容,就表示:
1. 按一下键盘上的 `[Esc]`
2. 输入 `:q!`
3. 再按一下 `[Enter]`
## 授权
本文中如有转载文章,均已与原站取得授权,如有疑问请联系 “<rarmicrozip@outlook.com>
本站对一些文章进行了适当的修改和删减,以适合当下的环境
且转载文章会在末尾处注明作者与出处。
本站对一些文章进行了适当的修改和删减,以适合当下的环境。
本站原创文章若无特别说明均在 [MIT](./licenses/LICENSE-MIT.md) 与 [Apache2](./licenses/LICENSE-APACHE.md) 的双重许可下发布,转载请遵守相关规定。

11
src/how_to_use_studyenv.md Normal file → Executable file
View File

@ -1,8 +1,8 @@
# 如何使用学习环境?
本站提供了一个在线学习linux的环境可以执行一些简单的命令甚至可以编译一些程序。
本站提供了一个在线学习 linux 的环境,可以执行一些简单的命令,甚至可以编译一些程序。
本环境带宽有限加载可能需要5到10分钟。
本环境带宽有限,加载可能需要 5 10 分钟。
本环境基于 jslinux 搭建。所有程序运行在您的浏览器上。
@ -19,10 +19,11 @@
如果本站服务无法访问,您还可以去下面的链接:
* [JSLinux](https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33-riscv.cfg&mem=256)
* [mxt.cn](https://mxt.cn/lxojres/jslinux/index.html)
- [JSLinux](https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33-riscv.cfg&mem=256)
- [mxt.cn](https://mxt.cn/lxojres/jslinux/index.html)
> mxt使用的操作系统略微不同
> mxt 使用的操作系统略微不同
---
> study-area-cn

8
src/intro.md Normal file → Executable file
View File

@ -4,19 +4,19 @@
[![stars](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.stars_count&style=for-the-badge&logo=gitea&label=stars&labelColor=%23F0F0F0&color=%231080FF&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)](https://git.hmtsai.cn/study-area-cn/study-area-cn)
[![forks](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.forks_count&style=for-the-badge&logo=git&logoColor=%23303030&label=forks&labelColor=%23F0F0F0&color=%2350B250&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)](https://git.hmtsai.cn/study-area-cn/study-area-cn)
[![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.hmtsai.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)](https://git.hmtsai.cn/study-area-cn/study-area-cn/actions)
[![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.study-area.org.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)](https://git.hmtsai.cn/study-area-cn/study-area-cn/actions)
## 缘起
可能你对study-area(酷学园)有所耳闻,本站就是对酷学园的“半克隆”,针对过时部分进行了一些修改,并更适合当下的情况。
可能你对 study-area(酷学园)有所耳闻,本站就是对酷学园的“半克隆”,针对过时部分进行了一些修改,并更适合当下的情况。
## 愿景
本站旨在为想要学习Linux的朋友们提供一个安全的软着陆从基础开始深入浅出的讲解关于Linux、计算机的知识。让读者自己思考和创造。
本站旨在为想要学习 Linux 的朋友们提供一个安全的软着陆,从基础开始,深入浅出的讲解关于 Linux、计算机的知识。让读者自己思考和创造。
> 在这里您将看不见八卦看不见争吵没有新闻也没娱乐。本站仅能为阁下提供的就是您要学习的技术文件与心得经验的交流。本站的角色是一个网上的学习园地Study Area
这是原study-area的愿景也是我们的愿景。
这是原 study-area 的愿景,也是我们的愿景。
## 源文件

62
src/learn_computer_basic/cpu.md Normal file → Executable file
View File

@ -1,66 +1,74 @@
# 中央处理单元(CPU)
## CPU的功能
## CPU 的功能
好了﹐这里要说的是电脑的大脑。
`Central Processing Unit`(CPU) 我们翻译成中央处理器。一些专业的大型电脑其CPU可以很大(不过绝大多数以计算机集群为主)﹐但在PC上面的CPU只是比饼干还要小的一片陶瓷片。只要打开电脑﹐把风扇拿掉就可以一睹CPU的庐山真面目了。我们常问“您的机器是什么型号的啊”﹐其实问的多指CPU的型号。或许您听过什么Intel I3,I5,I9等CPU﹐他们所代表的可以说是不同型号的CPU。事实上除了Intel的CPU外还有其它牌子的CPU可供选择。比方说AMD,龙芯等等。
> 译者注: mainframe、CPU型号、品牌等为过时内容已更改或删除
`Central Processing Unit`(CPU) 我们翻译成中央处理器。一些专业的大型电脑,其 CPU 可以很大(不过绝大多数以计算机集群为主)﹐但在 PC 上面的 CPU 只是比饼干还要小的一片陶瓷片。只要打开电脑﹐把风扇拿掉,就可以一睹 CPU 的庐山真面目了。我们常问“您的机器是什么型号的啊?”﹐其实问的多指 CPU 的型号。或许您听过什么 Intel I3,I5,I9 等 CPU﹐他们所代表的可以说是不同型号的 CPU。事实上除了 Intel 的 CPU 外,还有其它牌子的 CPU 可供选择。比方说AMD,龙芯等等。
CPU的功能如何呢说来很复杂主要为五个部分
> 译者注: mainframe、CPU 型号、品牌等为过时内容,已更改或删除
CPU 的功能如何呢?说来很复杂,主要为五个部分:
1. 输入单元
用来读取给电脑处理的数据或程序
用来读取给电脑处理的数据或程序
2. 处理单元
用来执行计算、比较和判断等运算功能
用来执行计算、比较和判断等运算功能
3. 输出单元
将电脑的运算结果和处理好的数据输出
将电脑的运算结果和处理好的数据输出
4. 记忆单元
用来储存数据或程序的地方
用来储存数据或程序的地方
5. 控制单元
按作业程序指挥上述单元的运作及交换数据信道的传送
按作业程序指挥上述单元的运作及交换数据信道的传送
## 不同年代的 CPU
我们常追求最新最快的CPU但是不同年代的CPU究竟不同在哪里呢如果真要解释清楚恐怕要写一本书出来。不过下面的表格相信也可以帮助我们了解一下。
我们常追求最新最快的 CPU但是不同年代的 CPU 究竟不同在哪里呢?如果真要解释清楚,恐怕要写一本书出来。不过,下面的表格相信也可以帮助我们了解一下。
| 项目/类型 | [80486(1989)](https://baike.baidu.com/item/80486/7473784) | [Pentium(奔腾)4(2000)](https://baike.baidu.com/item/%E5%A5%94%E8%85%BE4/9113325) | [I5-6400(2010)](https://www.intel.cn/content/www/cn/zh/products/sku/88185/intel-core-i56400-processor-6m-cache-up-to-3-30-ghz/specifications.html) | [I5-10400(2019)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) | [I5-14600(2023)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) |
| :------------ | :---------: | :-------------------: | :-----------: | :------------: | :---------------: |
| 指令集架构 | x86 | x86 | x86-64 | x86-64 | x86-64 |
| 核心数 | 1 | 1 | 4 | 6 | 6P(大)+8E(小) |
| 计算速度 | 33-100 MHz | 1.3-3.8 GHz | 2.7(3.3) GHz | 2.9(4.3) GHz | P:2.7 Ghz E:2 Ghz |
| 制程 | 1000nm | 65-180nm | 14nm | 14nm | 7nm (Intel 7) |
| 项目/类型 | [80486(1989)](https://baike.baidu.com/item/80486/7473784) | [Pentium(奔腾)4(2000)](https://baike.baidu.com/item/%E5%A5%94%E8%85%BE4/9113325) | [I5-6400(2010)](https://www.intel.cn/content/www/cn/zh/products/sku/88185/intel-core-i56400-processor-6m-cache-up-to-3-30-ghz/specifications.html) | [I5-10400(2019)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) | [I5-14600(2023)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) |
| :--------- | :-------------------------------------------------------: | :------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: |
| 指令集架构 | x86 | x86 | x86-64 | x86-64 | x86-64 |
| 核心数 | 1 | 1 | 4 | 6 | 6P(大)+8E(小) |
| 计算速度 | 33-100 MHz | 1.3-3.8 GHz | 2.7(3.3) GHz | 2.9(4.3) GHz | P:2.7 Ghz E:2 Ghz |
| 制程 | 1000nm | 65-180nm | 14nm | 14nm | 7nm (Intel 7) |
> 以上CPU链接均摘自Intel官网和百度百科。</br>
> 最新数据请在 [Intel官网](https://www.intel.cn) 查看。</br>
> 以上CPU均为Intel CPUAMD CPU请在 [AMD官网](https://www.amd.com) 查看。</br>
> 以上 CPU 链接均摘自 Intel 官网和百度百科。</br>
> 最新数据请在 [Intel 官网](https://www.intel.cn) 查看。</br>
> 以上 CPU 均为 Intel CPUAMD CPU 请在 [AMD 官网](https://www.amd.com) 查看。</br>
> 说明1000 MHz = 1 GHz计算速度括号内为睿频频率。</br>
---
> 译者注: 过时内容,当前数据选自 2024 年 5 月
在1980年末﹐IBM才开始大举进军个人电脑市场。在这之前﹐苹果在1976年就推出了 Apple I 个人电脑﹐之后 Apple II 也已经成功地拥有很大数量的用户了。IBM PC使用的CPU厂商Intel其实早在1976年也推出了一款型号叫8086的CPU其后不久的8088和它很相近﹐比起现代的CPU来说它们可以说是慢得像蜗牛了最快的只有8MHzIntel相继8086和8088之后还推出了80186和80188但不是很成功。但是Intel打算将系统部件合并到CPU去的概念却对后来生产更快的CPU如80286/80386起到很重要的作用。从80386起人们就把80给去掉了直接称为x86了。当Intel在推出486其后下一代的产品时厂商将CPU型号命名为Pentium从此PII、PIII、P4等不同年代的CPU也都以Pentium命名。但在程序界中仍有不少人继续称Pentium CPU为586686的只是越来越少人坚持如此了。
1980 年末﹐IBM 才开始大举进军个人电脑市场。在这之前﹐苹果在 1976 年就推出了 Apple I 个人电脑﹐之后 Apple II 也已经成功地拥有很大数量的用户了。IBM PC 使用的 CPU 厂商 Intel 其实早在 1976 年也推出了一款型号叫 8086 CPU其后不久的 8088 和它很相近﹐比起现代的 CPU 来说,它们可以说是慢得像蜗牛了:最快的只有 8MHzIntel 相继 8086 8088 之后还推出了 80186 80188但不是很成功。但是 Intel 打算将系统部件合并到 CPU 去的概念却对后来生产更快的 CPU 80286/80386起到很重要的作用。从 80386 起人们就把 80 给去掉了,直接称为 x86 了。当 Intel 在推出 486 其后下一代的产品时,厂商将 CPU 型号命名为 Pentium从此PII、PIII、P4 等不同年代的 CPU 也都以 Pentium 命名。但在程序界中,仍有不少人继续称 Pentium CPU 586686 的,只是越来越少人坚持如此了。
AMD在2005年5月推出了速龙64位处理器。这是首个消费级的x86-64(可简称x64)架构的处理器在此之后的CPU大多都是x64架构的了。
AMD 2005 5 月推出了速龙 64 位处理器。这是首个消费级的 x86-64(可简称 x64)架构的处理器,在此之后的 CPU 大多都是 x64 架构的了。
所有年代的CPU都有一个特性向后兼容。也就是说486的CPU可以跑386的程序但不能跑“专为”586写的程序甚至现在的 I5、I7 都可以运行为386编写的程序故此许多程序员在发布程序版本的时候仍将32位的程序冠以`i386`的名字其中的i就是Intel的意思。由于 AMD 发明了64位架构于是64位的程序就被叫做`amd64`(或`x86-64`)了。
所有年代的 CPU 都有一个特性向后兼容。也就是说486 CPU 可以跑 386 的程序但不能跑“专为”586 写的程序,甚至现在的 I5、I7 都可以运行为 386 编写的程序!故此,许多程序员在发布程序版本的时候,仍将 32 位的程序冠以`i386`的名字(其中的 i 就是 Intel 的意思)。由于 AMD 发明了 64 位架构,于是 64 位的程序就被叫做`amd64`(或`x86-64`)了。
> 译者注: 补充 x64 架构的内容
## 如何发挥CPU的效率
## 如何发挥 CPU 的效率?
要真正发挥CPU的效率与其他配件的配合是密不可分的。因为他们要在同一速率上才能工作时间上必须要配合默契。当CPU完成了一个运算之后I/O也要同时将产生的运算结果传达出去也同时传给CPU下一个运算数据。这情形就像接力赛那样如果时间不吻合接力棒就会丢了。不过CPU处理数据往往要比单纯的数据交接更须时间。聪明的CPU设计工程师想出了一道绝招就是将CPU运行于比总线BUS所有系统数据的运送信道快一定倍数的速度上。这样等周边反应过来的同时CPU也率先完成运用了时至今日CPU的速度远远快过周边掉过来往往是CPU等它们了
要真正发挥 CPU 的效率,与其他配件的配合是密不可分的。因为他们要在同一速率上才能工作,时间上必须要配合默契。当 CPU 完成了一个运算之后I/O 也要同时将产生的运算结果传达出去,也同时传给 CPU 下一个运算数据。这情形就像接力赛那样如果时间不吻合接力棒就会丢了。不过CPU 处理数据往往要比单纯的数据交接更须时间。聪明的 CPU 设计工程师想出了一道绝招:就是将 CPU 运行于比总线BUS所有系统数据的运送信道快一定倍数的速度上。这样等周边反应过来的同时CPU 也率先完成运用了时至今日CPU 的速度远远快过周边,掉过来往往是 CPU 等它们了)。
据说CPU在生产的时候都是一样的之后厂家经过测试按照尽可能稳定情况下的最高速度原则来定型号的。有些用家买了低速的CPU回来然后经过改变CPU电压、频率以求更快的速度﹐这就是所谓的“超频”了。不过阁下看到这里可别忙着去修改自己的电脑哦否则要有什么元件损坏作者可概不负责的哦
据说CPU 在生产的时候都是一样的,之后厂家经过测试,按照尽可能稳定情况下的最高速度原则来定型号的。有些用家买了低速的 CPU 回来,然后经过改变 CPU 电压、频率以求更快的速度﹐这就是所谓的“超频”了。不过,阁下看到这里可别忙着去修改自己的电脑哦,否则要有什么元件损坏,作者可概不负责的哦~
现在的CPU一般会有睿频功能相当于CPU自带的“超频”可以智能调整电压和频率不过睿频相比一般的超频是十分安全的不会搞坏你的CPU。
现在的 CPU 一般会有睿频功能,相当于 CPU 自带的“超频”,可以智能调整电压和频率,不过睿频相比一般的超频是十分安全的,不会搞坏你的 CPU。
> 译者注: 删除过时的计算CPU速度的内容并更改标题
> 译者注: 删除过时的计算 CPU 速度的内容,并更改标题
---
> 原文: [netman](http://www.study-area.org/compu/compu_cpu.htm)</br>
> study-area-cn

11
src/learn_computer_basic/input_and_output.md Normal file → Executable file
View File

@ -16,26 +16,27 @@
当我们买了电脑回家,第一件事情要做的不是插上电源然后按开关,而是先帮电脑装上输入输出设备。如果有机会,不妨看看电脑的背后,您就会发现有很多的接口,他们的规格是不一样的,所以也无需要担心接错了。不信您试试就知道了,当然不要硬来哦~
然而,有些设备的类型还是会有所不同的。 比如键盘的接口就有两种AT过时 和 PS/2现在还多了个 USB )。怎么分别呢?上面要是有标记当然好办,要不然数数那些孔的数目也可以知道。通常 AT 会是 5 孔PS/2 却有 6 孔准确说是7孔只不过那个方孔仅是用来作固定用的且接口直径比AT要小很多。鼠标的接口也有分 SERIAL串口过时 和 PS/2 以及 USB 等型。 PS/2 的接口跟键盘的是一样的如果没有标记的话就要开机才知道了如果您还在使用PS/2的设备并且机器告诉您诸如 Keyboard Error 的信息,关机后把它们掉过来接就是了。
然而,有些设备的类型还是会有所不同的。 比如键盘的接口就有两种AT过时 和 PS/2现在还多了个 USB )。怎么分别呢?上面要是有标记当然好办,要不然数数那些孔的数目也可以知道。通常 AT 会是 5 孔PS/2 却有 6 孔(准确说是 7 孔,只不过那个方孔仅是用来作固定用的),且接口直径比 AT 要小很多。鼠标的接口也有分 SERIAL串口过时 和 PS/2 以及 USB 等型。 PS/2 的接口跟键盘的是一样的,如果没有标记的话,就要开机才知道了,如果您还在使用 PS/2 的设备,并且机器告诉您诸如 Keyboard Error 的信息,关机后把它们掉过来接就是了。
现在的电脑大部份都标识得非常清楚,而且还有颜色配合。 这样接起设备来就更轻松容易了。 万一还是不知到怎么接,千万别乱来,最好仔细看说明书或打电话请较厂商或朋友啰。
惯例上,我们把带针的接口叫做“公”,而把带孔的那端叫做“母”,相信这样很容易分辨吧?至于为什么要这样称呼?相信不用多解释吧! ^_^
惯例上,我们把带针的接口叫做“公”,而把带孔的那端叫做“母”,相信这样很容易分辨吧?至于为什么要这样称呼?相信不用多解释吧! ^\_^
再看看电脑背后还有好多的接口,它们都是给输入输出设备用的(除了靠近风扇的那个(有些是两个)黑黑大大的是给电源用的)。
下面就简单介绍一下:
- 通常 PS/2 母插头都是一对的,很容易分辨。
- 另外有两个(可能不止两个)小小的扁扁的方孔那就是USB接口。
- 另外有两个(可能不止两个)小小的扁扁的方孔,那就是 USB 接口。
- SERIAL串口 插头有时候是两个 9 针的公接口(但也有时候是一个 9 针,另外一个长长的 25 针的),现在在家用电脑上几乎见不到了。
- 在一些老电脑中,另外一个长长的 25 孔的母插头叫“并口”,通常较老的打印机就是接到那里的。
- 有一个 15 孔分三行排列的母插头,就是我们说的 VGA 接口,把屏幕接到这里就对了。
>注:现在的大部分不算过于落后的电脑都拥有HDMI(即下条所说的接口),从一般情况下来讲,应优先使用HDMI接口而并非VGA
> 注:现在的大部分不算过于落后的电脑都拥有 HDMI(即下条所说的接口),从一般情况下来讲,应优先使用 HDMI 接口而并非 VGA
- 现在有了 HDMI扁长左上右上两个缺口 和 DP右上一个缺口 接口,在一些较新的电脑上可能会有,也是连接屏幕的。
- 要是还有网络卡的话,您会看到一个比 MODEM俗称“猫”连接电话线上网拨号上网已经过时接头稍大一点的 RJ45 母接头。 通常网线就是接到那上面的。接上之后就可以联网了呢。
假如您还加了些其他的插卡的话您还会看到更多的接口但已经很难在这里指出了。不过有用一种比较旧的SCSI接口跟并行都是25孔母接口的那就要非常小心了不然接错了有可能会损坏装置呢。不过现在要找到这么旧的 SCSI 卡还真不容易呢!
假如您还加了些其他的插卡的话,您还会看到更多的接口,但已经很难在这里指出了。不过有用一种比较旧的 SCSI 接口跟并行都是 25 孔母接口的,那就要非常小心了,不然接错了有可能会损坏装置呢。不过,现在要找到这么旧的 SCSI 卡还真不容易呢!
---
> 原文: [netman](http://www.study-area.org/compu/compu_io.htm)</br>
> study-area-cn

65
src/learn_computer_basic/memory.md Normal file → Executable file
View File

@ -4,79 +4,82 @@
## 内存的作用
为什么内存这么重要呢?其实,电脑真正工作的场所是在内存上面,包括所有系统的驱动程序、操作系统、工作数据、成品/半成品等等都必须先加载到内存上面才能给CPU读取。尤其对Windows或比较大型的程序要求的内存也越多。而且内存永远都只会嫌少不会嫌多的就像钱对于我来说 ^_^
为什么内存这么重要呢?其实,电脑真正工作的场所是在内存上面,包括所有系统的驱动程序、操作系统、工作数据、成品/半成品等等,都必须先加载到内存上面才能给 CPU 读取。尤其对 Windows 或比较大型的程序,要求的内存也越多。而且,内存永远都只会嫌少不会嫌多的,就像钱对于我来说 ^\_^
## 如何计算内存的容量?
内存的最小单位是位(bit)每个位可以代表1或0开或关而8个bit则组成1字节(byte)。byte可以说是电脑最基本的计算单位了再往后则每乘以1024来增加单位。也就是说
> ||||
内存的最小单位是位(bit),每个位可以代表 1 或 0开或关而 8 个 bit 则组成 1 字节(byte)。byte 可以说是电脑最基本的计算单位了,再往后则每乘以 1024 来增加单位。也就是说:
> | | | |
> | -------------: | :-: | :------- |
> | 1KB(Kilo Byte) | = | 1024Byte |
> | 1MB(Mage Byte) | = | 1024KB |
> | 1GB(Giga Byte) | = | 1024MB |
> | 以此类推…… | | |
> | 以此类推…… | | |
很早就和大家说过了电脑只认识0和1任何程序语言要交由电脑运算最终的还要换成0和1才能够让电脑读得懂。我们在键盘上敲进一个字母 `A`,真正传给电脑的是`01000001`这个byte(8bit)我们称这种字母对应方法为ASCII(America Standard Code for Information Interchange美国标准信息交换码)。通常我们以纯文字(英文)所处理的文章就是使用ASCII字母的了。
很早就和大家说过了:电脑只认识 0 1任何程序语言要交由电脑运算最终的还要换成 0 1 才能够让电脑读得懂。我们在键盘上敲进一个字母 `A`,真正传给电脑的是`01000001`这个 byte(8bit),我们称这种字母对应方法为 ASCII(America Standard Code for Information Interchange美国标准信息交换码)。通常我们以纯文字(英文)所处理的文章,就是使用 ASCII 字母的了。
究竟内存的需求量是怎样计算出来的呢如果以纯文字来算一页A4纸大约能有5000多字节包括标点和空白即5KB那么1MB就有超过二百页了。但如果要做出更漂亮的文字每个字还需要更多的内存来储存其字形字体、特殊效果、行段格式等等那么1MB也只能储存数十页有时更少。总之越漂亮越复杂的文件所需的内存也越多。
究竟内存的需求量是怎样计算出来的呢?如果以纯文字来算,一页 A4 纸大约能有 5000 多字节(包括标点和空白),即 5KB那么 1MB 就有超过二百页了。但如果要做出更漂亮的文字,每个字还需要更多的内存来储存其字形字体、特殊效果、行段格式等等,那么 1MB 也只能储存数十页,有时更少。总之,越漂亮越复杂的文件,所需的内存也越多。
下面再拿一个比较实际的例子来算算内存的使用量﹕
我们在选购显卡(Video Adapter)的时候,常常听说某卡有多少多少显存,究竟多少才够用呢﹖
先拿一个古老的单色显卡来说假设它的分辨率是640x480也就是说屏幕上横有640个显示点竖则有480个点而每个点只有两种变化亮(白/黄/绿等单色)或不亮这可用1个bit($2^{1}$)的开关来表示。那么
先拿一个古老的单色显卡来说,假设它的分辨率是 640x480也就是说屏幕上横有 640 个显示点,竖则有 480 个点,而每个点只有两种变化:亮(白/黄/绿等单色)或不亮,这可用 1 bit($2^{1}$)的开关来表示。那么
`640x480x1` bit</br>
= `307200` bit</br>
= `38400` byte</br>
= `37.5` KB</br>
= `0.036621` MB
= `307200` bit</br>
= `38400` byte</br>
= `37.5` KB</br>
= `0.036621` MB
您看只需要很少的显存就够了。然而用的如果是彩色显卡的话如果要显示简单的16色每个点就需要4bit($2^{4}=16$)来显示了,那么就需要
您看只需要很少的显存就够了。然而,用的如果是彩色显卡的话,如果要显示简单的 16 色,每个点就需要 4bit($2^{4}=16$)来显示了,那么就需要
`640x480x4` bit</br>
= `228800` bit</br>
= `153600` byte</br>
= `150` KB</br>
= `0.15` MB
= `228800` bit</br>
= `153600` byte</br>
= `150` KB</br>
= `0.15` MB
如果要显示 256(8bit) 色,则需要 `840x480x8` bit = `0.29` MB 了。
假如您的显卡可以显示 1024x768 的分辨率和 32bit 颜色(目前市面上的最低水准)的话,您最少需要`1024x768x32` bit = `3` MB 的RAM。而现在市面上的显卡还有自己的程序处理功能(如3D加速AI计算加速),那么则需要更多的显存了。
假如您的显卡可以显示 1024x768 的分辨率和 32bit 颜色(目前市面上的最低水准)的话,您最少需要`1024x768x32` bit = `3` MB 的 RAM。而现在市面上的显卡还有自己的程序处理功能(如 3D 加速AI 计算加速),那么则需要更多的显存了。
不过,请您要分清楚的是:这里以显存为例子,并不是电脑系统上面的内存,而是显卡本身的(虽然某些核心或板载显卡会共享电脑的内存)。同时,这里虽然只作为一个计算例子而已,不过也适合计算一个 BMP 图像文件的大小
> 注bmp 图像和 png 等图像不同,没有经过压缩,文件大小就是实际的分辨率大小,而 png 图像通常小于同分辨率的 bmp。
## 内存的管理
不同的操作系统对内存的管理也不相同下面以传统的DOS来看看内存的分配情形。由于传统设计的限制和向后兼容的考虑DOS主要运用的是内存的前1MB。而且真正工作的区域也只是前面的640K然而哪怕早期的Windows也已经打破了这个限制了
不同的操作系统,对内存的管理也不相同,下面以传统的 DOS 来看看内存的分配情形。由于传统设计的限制和向后兼容的考虑DOS 主要运用的是内存的前 1MB。而且真正工作的区域也只是前面的 640K然而哪怕早期的 Windows 也已经打破了这个限制了)。
| 0-640KB | 640-</br>768KB | 768-</br>832KB | 832-</br>896KB | 896KB-</br>1MB | 1MB-</br>16MB/4G |
| ------- | --------- |---------- | ---------- | ----------- | ---------- |
| &ensp;&ensp;&ensp;基本内存&ensp;&ensp;&ensp; | 显存</br>预留 | 适配器</br>内存 | EMS</br>Window | 主板BIOS</br>内存 | &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;扩展内存&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp; |
| 0-640KB | 640-</br>768KB | 768-</br>832KB | 832-</br>896KB | 896KB-</br>1MB | 1MB-</br>16MB/4G |
| -------------------------------------------- | -------------- | --------------- | -------------- | ------------------ | -------------------------------------------------------------------------------------------------------- |
| &ensp;&ensp;&ensp;基本内存&ensp;&ensp;&ensp; | 显存</br>预留 | 适配器</br>内存 | EMS</br>Window | 主板 BIOS</br>内存 | &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;扩展内存&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp; |
离开了内存电脑一点东西都做不到但如果RAM给扰乱了或是超出了范围电脑也会不工作通常电脑的宕机或蓝屏(out of memory)就是这样形成的。
离开了内存,电脑一点东西都做不到,但如果 RAM 给扰乱了或是超出了范围,电脑也会不工作,通常电脑的宕机或蓝屏(out of memory)就是这样形成的。
一般来说,当一个程序被启动的时候,所有其必须运用的数据都会先加载到内存上面,当程序被关闭的时候,也将所占用的空间腾空出来好给其它程序使用。但有些被称为“驻留程序(后台程序)”的程序即使是“关闭”了依然还会存留在RAM里面。不过这种程序为数不多且都是些经常要用到的一些程序(大部分系统程序)。另外有些电脑病毒也是这样躲在RAM里面而将继续开启的文件感染。
一般来说,当一个程序被启动的时候,所有其必须运用的数据都会先加载到内存上面,当程序被关闭的时候,也将所占用的空间腾空出来好给其它程序使用。但有些被称为“驻留程序(后台程序)”的程序,即使是“关闭”了依然还会存留在 RAM 里面。不过,这种程序为数不多,且都是些经常要用到的一些程序(大部分系统程序)。另外,有些电脑病毒也是这样躲在 RAM 里面而将继续开启的文件感染。
好的操作系统有较完善的内存管理能避免因内存错误而当机的能力也比较好。通常我们在Windows尤其是Windows95一类的较老的操作系统上面看到什么 `'Illegal operation'`(非法指令emm学习C++的可能会遇到过)之类的信息,就多是因为内存错误而引起的。幸运的话,用 Ctrl+Alt+Del 打开任务管理器将受影响的程序结束掉还可以继续工作然而有时除了关机就别无它途更糟糕的是连错误信息都没有就不动了。但相同的情形如果在一个Unix或Linux系统上面它们对内存的管理非常棒。就算本机的键盘不能操作您还可以从另外的机器使用telnet或ssh进去然后将问题程序结束(kill)掉也还可以继续工作未必一定要关机的。不过现在的Windows也做到了这一点。
好的操作系统有较完善的内存管理,能避免因内存错误而当机的能力也比较好。通常我们在 Windows尤其是 Windows95 一类的较老的操作系统)上面看到什么 `'Illegal operation'`(非法指令emm学习 C++的可能会遇到过)之类的信息,就多是因为内存错误而引起的。幸运的话,用 Ctrl+Alt+Del 打开任务管理器将受影响的程序结束掉,还可以继续工作;然而有时除了关机就别无它途,更糟糕的是连错误信息都没有就不动了。但相同的情形,如果在一个 Unix Linux系统上面它们对内存的管理非常棒。就算本机的键盘不能操作您还可以从另外的机器使用 telnet ssh 进去然后将问题程序结束(kill)掉也还可以继续工作,未必一定要关机的。不过,现在的 Windows 也做到了这一点。
## 内存的分类
凡是能利用电子性能来作记录的元件都可以称为内存(Memory)也分为只读存储器即ROM(Read Only Memory)和随机储存内存(这也就是上面大多数所提到的的内存)RAM(Random Access Memory)。
凡是能利用电子性能来作记录的元件都可以称为内存(Memory),也分为只读存储器即 ROM(Read Only Memory)和随机储存内存(这也就是上面大多数所提到的的内存)RAM(Random Access Memory)。
其实几乎所有的主板和扩展卡(包括显卡等)及其它设备都有它们的ROM主要是记录一些控制程序和协议等也有各自的RAM来储存数据。
其实几乎所有的主板和扩展卡(包括显卡等)及其它设备都有它们的 ROM主要是记录一些控制程序和协议等也有各自的 RAM 来储存数据。
而我们通常说到的电脑内存就多指系统的RAM早期的RAM都是直接焊接在主板上面的而现在RAM已经模块化成为内存条便于更换。不过某些设备例如某些型号的笔记本电脑和所有手机内存还集成在主板上甚至CPU内部。假如您翻看前面CPU的叙述不同年代的CPU其最大内存地址也是不同的。x86的CPU的最大内存地址是大约4GB但x86-64架构的CPU的最大内存地址是大约64TB($2^{46}$Byte)。
而我们通常说到的电脑内存就多指系统的 RAM早期的 RAM 都是直接焊接在主板上面的,而现在 RAM 已经模块化成为内存条,便于更换。不过,某些设备,例如某些型号的笔记本电脑和所有手机,内存还集成在主板上甚至 CPU 内部。假如您翻看前面 CPU 的叙述,不同年代的 CPU 其最大内存地址也是不同的。x86 CPU 的最大内存地址是大约 4GB x86-64 架构的 CPU 的最大内存地址是大约 64TB($2^{46}$Byte)。
RAM的速度是以ns纳秒nanoseconds`1000000ns = 1ms`做单位以数据的储存速度为标准数值越低越快。以前的SIMM有些是70ns十分古老的DIMM最快都可以到10ns了。而现在主流的DDR4 的RAM速度就更快了(没有找到确切的数据,但据说传输速度达到了 17-25GB/s)。同时为配合CPU的外频速度也需要不同外频速度的RAM才能发挥性能。
RAM 的速度是以 ns纳秒nanoseconds`1000000ns = 1ms`)做单位,以数据的储存速度为标准,数值越低越快。以前的 SIMM 有些是 70ns十分古老的 DIMM 最快都可以到 10ns 了。而现在主流的 DDR4 的 RAM速度就更快了(没有找到确切的数据,但据说传输速度达到了 17-25GB/s)。同时,为配合 CPU 的外频速度,也需要不同外频速度的 RAM 才能发挥性能。
>以目前写者现在使用的内存来说 2666MHz * 128bit双通道 / 8位到字节单位转换 = 42.656GB/s。当然这只是理论速度实际发挥还要看内存控制器
> 以目前写者现在使用的内存来说 2666MHz \* 128bit双通道 / 8位到字节单位转换 = 42.656GB/s。当然这只是理论速度实际发挥还要看内存控制器
ROM虽然说是只读的但现在的主板甚至显卡的ROM多数是可以重复刷写的也就是通过程序可以对里面的内容进行更新。不过如果自己升级固件就要非常小心了尤其是在升级过程的一半断电的话可就难堪了。比如很久以前的CIH病毒就可以进入到ROM里面去改写数据以致机器打不开。如果拿去修理有些奸商会趁机叫您将主板换掉其实只要有适当设备将数据重新写进ROM就可以救回的了再不然买一个新的ROM换掉也可以。
ROM 虽然说是只读的,但现在的主板甚至显卡的 ROM 多数是可以重复刷写的,也就是通过程序可以对里面的内容进行更新。不过,如果自己升级固件就要非常小心了,尤其是在升级过程的一半断电的话可就难堪了。比如很久以前的 CIH 病毒,就可以进入到 ROM 里面去改写数据,以致机器打不开。如果拿去修理,有些奸商会趁机叫您将主板换掉,其实只要有适当设备,将数据重新写进 ROM 就可以救回的了,再不然,买一个新的 ROM 换掉也可以。
然而RAM有一共同特性就是有电才能维持记忆如果电源关掉了里面所有的数据都会回复到全部为正或负。如果打开台式机的机器盖子去看看主板的话上面应该都有颗钮扣电池它就是用来维持主板时钟和CMOSComplementary Metal-Oxide Semiconductor用来储存和维护一些机器的基本设定数据的工作的。一旦机器很久没用重启的时候或许会显示警告或者开不起来可能就是CMOS的电池用完了,在重新插拔或更换电池后以前的设定也就消失掉了此时只能再进入BIOSBasic Input Output System在厂家预设的基础上进行修改后才能让机器回复工作。有时候如果忘记了BIOS的密码也可以通过取出电池或通过跳针将原有的设定清除掉再重新设定。不过现在的CMOS大部分已经采用了非易失性存储器断电不会丢失数据。所以主板上的电池只剩下了维持时钟工作的功能。不过为了保留传统大部分厂商的主板也保留了扣下电池清除BIOS配置的功能只是已经不能清除密码了。
然而RAM 有一共同特性,就是有电才能维持记忆,如果电源关掉了,里面所有的数据都会回复到全部为正或负。如果打开台式机的机器盖子去看看主板的话,上面应该都有颗钮扣电池,它就是用来维持主板时钟和 CMOSComplementary Metal-Oxide Semiconductor用来储存和维护一些机器的基本设定数据的工作的。一旦机器很久没用重启的时候或许会显示警告或者开不起来可能就是 CMOS 的电池用完了,在重新插拔或更换电池后,以前的设定也就消失掉了,此时只能再进入 BIOSBasic Input Output System在厂家预设的基础上进行修改后才能让机器回复工作。有时候如果忘记了 BIOS 的密码,也可以通过取出电池或通过跳针将原有的设定清除掉,再重新设定。不过现在的 CMOS 大部分已经采用了非易失性存储器,断电不会丢失数据。所以主板上的电池只剩下了维持时钟工作的功能。不过为了保留传统,大部分厂商的主板也保留了扣下电池清除 BIOS 配置的功能,只是已经不能清除密码了。
---
> 原文: [netman](http://www.study-area.org/compu/compu_mem.htm)</br>
> study-area-cn

36
src/learn_computer_basic/motherboard.md Normal file → Executable file
View File

@ -6,12 +6,12 @@
## 主板的芯片组
如果您留意到电脑广告上的主板Intel的通常都是以XBC等字母开头的。 究竟这型号怎么来的呢?其实这型号是主板上面的一块芯片我们通常称为桥片的型号,就好像我们称呼 CPU 型号为电脑型号一样。 同样的桥片通常都是由CPU的厂家生产的比如英特尔的CPU就组搭配英特尔的桥片...
如果您留意到电脑广告上的主板Intel 的通常都是以 XBC 等字母开头的。 究竟这型号怎么来的呢?其实这型号是主板上面的一块芯片我们通常称为桥片的型号,就好像我们称呼 CPU 型号为电脑型号一样。 同样的,桥片通常都是由 CPU 的厂家生产的,比如英特尔的 CPU 就组搭配英特尔的桥片...
> 译者注:
> 其实这桥片的名字很形象,它实际上就是整个系统硬件的“桥”,要想深入了解,就请继续往下看吧!
这桥片的功能可大了,它几乎就是整个系统的信息交通指挥官。 它负责将I/O和 RAM 的要求和数据传送给 CPU也负责将 CPU 的命令和数据传给它们。 比如 CPU 要将信息传给, 就负责该把这信息送到正确地址了。 注意,其实每一个设备都有自己地址的,比如打印口 LPT1 通常是 0x378;通讯口 COM1 通常是 0x3F8 等等。 CPU 只是给出地址,但怎么传达却是桥片负责。
这桥片的功能可大了,它几乎就是整个系统的信息交通指挥官。 它负责将 I/O 和 RAM 的要求和数据传送给 CPU也负责将 CPU 的命令和数据传给它们。 比如 CPU 要将信息传给, 就负责该把这信息送到正确地址了。 注意,其实每一个设备都有自己地址的,比如打印口 LPT1 通常是 0x378;通讯口 COM1 通常是 0x3F8 等等。 CPU 只是给出地址,但怎么传达却是桥片负责。
## 如何挑选主板﹖
@ -19,39 +19,40 @@
### 1.处理器
当然是指这主板支持的 CPU 类型了。 比如此主板是给E5还是14th Core用的而且不同类型的CPU使用的电压也不同比如有些是2.8v有些则是3.3v或3.5v等等的分别。 有些主板可以通过调整 跳线 来适合不同的 CPU 电压要求。
当然是指这主板支持的 CPU 类型了。 比如此主板是给 E5 还是 14th Core 用的?而且不同类型的 CPU 使用的电压也不同,比如有些是 2.8v,有些则是 3.3v 3.5v 等等的分别。 有些主板可以通过调整 跳线 来适合不同的 CPU 电压要求。
### 2.处理器插槽
不同的处理器有不同的插槽规格比如E5v4所使用的是LGA201114th Core使用的是LGA1700也有其他的插槽,您购买时可要注意一下。
不同的处理器有不同的插槽规格,比如 E5v4 所使用的是 LGA201114th Core 使用的是 LGA1700也有其他的插槽,您购买时可要注意一下。
### 3.内存支持
如今主流的内存类型也就DDR3DDR4DDR5这些了。DDR3在一些比较老旧的平台上还看得到新的电脑基本都是DDR5了。DDR4因为市场保有量很大所以目前市面上还有得卖。这些插槽和协议可是互不兼容的您挑选的时候要注意。
如今主流的内存类型也就 DDR3DDR4DDR5 这些了。DDR3 在一些比较老旧的平台上还看得到,新的电脑基本都是 DDR5 了。DDR4 因为市场保有量很大,所以目前市面上还有得卖。这些插槽和协议可是互不兼容的,您挑选的时候要注意。
> 注原来还有叫「DDR3L」的它使用的电压要低一些在笔记本上有时候会见到如果插到了标准DDR3槽位可能会把内存连主板一起送走还是要小心为好。
> 注原来还有叫「DDR3L」的它使用的电压要低一些在笔记本上有时候会见到如果插到了标准 DDR3 槽位,可能会把内存连主板一起送走,还是要小心为好。
### 4.总线类型
emm...恐怕这东西也不是个容易说清楚的问题。简单来说一般电脑常见的总线有两种类型PCI和PCIe。这些东西都是用来插一些扩展设备的如网卡、RAID卡、显卡等等。这俩玩意儿长得一样基本上只是协议不同现在用的最多的还是PCIePCI都已经少见了
emm...恐怕这东西也不是个容易说清楚的问题。简单来说一般电脑常见的总线有两种类型PCI PCIe。这些东西都是用来插一些扩展设备的如网卡、RAID 卡、显卡等等。这俩玩意儿长得一样,基本上只是协议不同,现在用的最多的还是 PCIePCI 都已经少见了
PCIe分为好几个版本还有x1x4等通道之分一般来说版本越新通道越多速度越快。
PCIe 分为好几个版本,还有 x1x4 等通道之分,一般来说,版本越新,通道越多,速度越快。
|版本|PCIe 1.0|PCIe 2.0|PCIe 3.0|PCIe 4.0|PCIe 5.0|
|--------|---------|--------|--------|--------|--------|
|x1|250MB/s|500MB/s|984.6MB/s|1.969GB/s|3.9GB/s|
|x4|1GB/s|2GB/s|3.938GB/s|7.877GB/s|15.8GB/s|
|x8|2GB/s|4GB/s|7.877GB/s|15.754GB/s|31.508GB/s|
|x16|4GB/s|8GB/s|15.754GB/s|31.508GB/s|63GB/s|
>其实Nvme本质上就是PCIe x4最新的PCIe 5.0 x4速度已经达到将近16GB每秒了实在是太快了
| 版本 | PCIe 1.0 | PCIe 2.0 | PCIe 3.0 | PCIe 4.0 | PCIe 5.0 |
| ---- | -------- | -------- | ---------- | ---------- | ---------- |
| x1 | 250MB/s | 500MB/s | 984.6MB/s | 1.969GB/s | 3.9GB/s |
| x4 | 1GB/s | 2GB/s | 3.938GB/s | 7.877GB/s | 15.8GB/s |
| x8 | 2GB/s | 4GB/s | 7.877GB/s | 15.754GB/s | 31.508GB/s |
| x16 | 4GB/s | 8GB/s | 15.754GB/s | 31.508GB/s | 63GB/s |
> 其实Nvme 本质上就是 PCIe x4最新的 PCIe 5.0 x4 速度已经达到将近 16GB 每秒了,实在是太快了
### 5.BIOS (Basic Input Output System)
在电脑刚刚启动的时候BIOS一定比操作系统先工作起来顾名思义BIOS管理的就是电脑最基本的IO设备了。包括系统日期、显示模式、硬盘类型、系统启动顺序,以及一些内存的设置。如果这些东西设置不正确的话你的电脑极有可能没办法启动操作系统或者十分不稳定。BIOS的作用就是将不标准的硬件设备整合提供一个标准的接口给系统使用。
在电脑刚刚启动的时候BIOS 一定比操作系统先工作起来顾名思义BIOS 管理的就是电脑最基本的 IO 设备了。包括系统日期、显示模式、硬盘类型、系统启动顺序,以及一些内存的设置。如果这些东西设置不正确的话你的电脑极有可能没办法启动操作系统或者十分不稳定。BIOS 的作用就是将不标准的硬件设备整合,提供一个标准的接口给系统使用。
现在的 BIOS 还多了一些 Nvme、APM (Advanced Power Management高级电源管理),以及 PCIe 拆分等较新的功能。
今天我们的BIOS基本都是主板厂商深度定制的产品了而且还有了UEFI的支持以前传统的BIOS现在叫做Legacy BIOS现在的基本都是UEFI BIOS了。
今天我们的 BIOS 基本都是主板厂商深度定制的产品了,而且还有了 UEFI 的支持,以前传统的 BIOS 现在叫做 Legacy BIOS现在的基本都是 UEFI BIOS 了。
### 6.内置设备
@ -66,5 +67,6 @@ PCIe分为好几个版本还有x1x4等通道之分一般来说版本
好了,现在您应该也对主板有了一个大致的了解了,接下来就让我们来学习 **操作系统** 的知识吧!
---
> 原文: [netman](http://www.study-area.org/compu/compu_mb.htm)</br>
> study-area-cn

31
src/learn_computer_basic/operating_system.md Normal file → Executable file
View File

@ -1,6 +1,6 @@
# 操作系统Operating SystemOS
终于来到我们平时最常接触的部分——操作系统了以前使用的DOS、Windows 98、XP和现在的Windows 7、Windows 10及 Windows 11都属于操作系统Opereating System。不过却不要误会操作系统就只有微软Microsoft其实有很多其它系统都比Microsoft的操作系统更强大、更稳定只是由于他们的功能和行应用场合不同一般人较少接触到而已。或许您听说过Unix、Linux、FreeBSD、MacOS等名字其实它们也是操作系统哦
哇!终于来到我们平时最常接触的部分——操作系统了!以前使用的 DOS、Windows 98、XP和现在的 Windows 7、Windows 10 及 Windows 11都属于操作系统Opereating System。不过却不要误会操作系统就只有微软Microsoft其实有很多其它系统都比 Microsoft 的操作系统更强大、更稳定,只是由于他们的功能和行应用场合不同,一般人较少接触到而已。或许您听说过 Unix、Linux、FreeBSD、MacOS 等名字,其实它们也是操作系统哦~
## 操作系统的角色
@ -24,44 +24,44 @@
> 用户程序 --> 操作系统 --> 硬件
操作系统本身就是一个大型程序它就负责直接和硬件沟通。而我们通常指的程序大多指应用程序applications简称APP手机上的APP就是这个意思比如Word、Excel、Chrome、微信等等。程序是必须安装在操作系统上面的而且是可以卸载或移除的就好像是买了台汽车回来您可以把里面的音响都拿掉换新的进去一样。以前Microsoft被美国政府状告法庭说其违反商业公平原则罪状之一就是将IE加进Windows98里面有强迫使用者使用IE之嫌而对其它的浏览器不公平。因为您不能把IE从Windows98中拿走总不成我把CD音响拿掉汽车就开不起来的道理吧不过即使是到了Windows11的时候微软也只是屏蔽了IE的入口不能完全移除因为IE还被很多软件调用着不过这是题外话了。
操作系统本身就是一个大型程序它就负责直接和硬件沟通。而我们通常指的程序大多指应用程序applications简称 APP手机上的 APP 就是这个意思),比如 Word、Excel、Chrome、微信等等。程序是必须安装在操作系统上面的而且是可以卸载或移除的就好像是买了台汽车回来您可以把里面的音响都拿掉换新的进去一样。以前 Microsoft 被美国政府状告法庭,说其违反商业公平原则,罪状之一就是将 IE 加进 Windows98 里面,有强迫使用者使用 IE 之嫌,而对其它的浏览器不公平。因为您不能把 IE Windows98 中拿走:总不成我把 CD 音响拿掉,汽车就开不起来的道理吧?(不过即使是到了 Windows11 的时候微软也只是屏蔽了 IE 的入口,不能完全移除,因为 IE 还被很多软件调用着)不过这是题外话了。
## 揭开操作系统的神秘面纱
不知道大家有没有听过DOSDisk Operating System。它可以说是Windows的前身也是由微软开发的。DOS系统没有我们现在常用的图形界面就是一个黑底的上面有着许多文字的界面。你不能使用鼠标只能通过键盘敲击命令复杂的进行操作。不过DOS非常的小只有5M左右。不过现在的Windows动辄几个GBWindows11多版本安装映像甚至大于5GB相比以前的DOS真的非常大了。
不知道大家有没有听过 DOSDisk Operating System。它可以说是 Windows 的前身也是由微软开发的。DOS 系统没有我们现在常用的图形界面,就是一个黑底的上面有着许多文字的界面。你不能使用鼠标,只能通过键盘敲击命令复杂的进行操作。不过 DOS 非常的小,只有 5M 左右。不过现在的 Windows动辄几个 GBWindows11 多版本安装映像甚至大于 5GB相比以前的 DOS 真的非常大了。
我们在安装任何软件游戏,包括操作系统前最好了解一下系统要求(System Requirement)
DOS 6.22
- 512KB RAM
- 8088早于前文提到的80286或更先进的处理器
- 至少 5MB 的硬盘空间 (推荐5-10MB)
- 8088早于前文提到的 80286或更先进的处理器
- 至少 5MB 的硬盘空间 (推荐 5-10MB)
- 软盘
- EGA/VGA 显示器/显卡
- 鼠标(可选)
> 相信各位几乎找不到不支持DOS的系统要求的电脑了吧
> 相信各位几乎找不到不支持 DOS 的系统要求的电脑了吧
Windows 11:
- 4GB RAM
- 1 GHz 以上的处理器
- 64GB 的硬盘空间 &ensp;&ensp;&ensp;&ensp;&ensp;~~_吐槽实际15G足够_~~
- 64GB 的硬盘空间 &ensp;&ensp;&ensp;&ensp;&ensp;~~_吐槽实际 15G 足够_~~
- 支持 UEFI 安全启动的主板 &ensp;&ensp;&ensp;~~_吐槽可以绕过_~~
- TPM 2.0 支持 &ensp;&ensp;&ensp;&ensp;&ensp;~~_吐槽也可以绕过满足Windows10要求即可_~~
- 720P 以上的显示器DX12以上支持的显卡
- TPM 2.0 支持 &ensp;&ensp;&ensp;&ensp;&ensp;~~_吐槽也可以绕过满足 Windows10 要求即可_~~
- 720P 以上的显示器DX12 以上支持的显卡
- 网络连接 &ensp;&ensp;&ensp;~~_吐槽家庭版必须用来激活可以绕过_~~
我们称Windows的界面为GUIGrahpic User Interface其功能也是充当翻译罢了又一层界面真正操作系统需要的还是命令行command line。GUI让那些不会或懒得用命令行的使用者可以对操作系统进行指令输入其作用一如操作系统为我们和硬件之间担当翻译一样。比如您用鼠标按“此电脑我的电脑”和您在命令提示符cmd.exe下打“explorer”并回车的结果是一样的。不过时至今日的Windows系统也很难分清楚命令行和GUI输入的界限了。
我们称 Windows 的界面为 GUIGrahpic User Interface其功能也是充当翻译罢了又一层界面真正操作系统需要的还是命令行command line。GUI 让那些不会或懒得用命令行的使用者可以对操作系统进行指令输入其作用一如操作系统为我们和硬件之间担当翻译一样。比如您用鼠标按“此电脑我的电脑”和您在命令提示符cmd.exe下打“explorer”并回车的结果是一样的。不过时至今日的 Windows 系统,也很难分清楚命令行和 GUI 输入的界限了。
无可否认的是GUI的确是非常好用的东西比如用鼠标一拖一放来复制档案比起用DOS的copy加一堆路径和选项方便多和进步多了。个人电脑能有今天这么快的普及GUI的确是功不可没。GUI已经将操作系统包装的漂漂亮亮方便用户使用。
无可否认的是GUI 的确是非常好用的东西,比如用鼠标一拖一放来复制档案,比起用 DOS copy 加一堆路径和选项方便多和进步多了。个人电脑能有今天这么快的普及GUI 的确是功不可没。GUI 已经将操作系统包装的漂漂亮亮方便用户使用。
## 操作系统和应用程序的关系
我们平时想要用Word打打报告、玩电脑游戏、还要连上网和朋友们聊天这些可以说是应用程序的功能。
不过现在的操作系统功能都会包含了越来越多的应用功能它们之间的界定也更加模糊所以现在的操作系统可以说是一个包而非单纯的OS了。
应用程序一定要在先装好了操作系统之后才可以安装而且也有不同的版本给不同的平台platform即操作系统的构架。很明显﹕给Windws98用的Office2000就硬是不可能装在Window3.1上面更不要说装在Linux上面使用了。而且应用程序只能在操作系统准备妥当之后才能使用在开机的过程之中操作系统先必须先于应用程序被加载启动。
我们平时想要用 Word 打打报告、玩电脑游戏、还要连上网和朋友们聊天,这些可以说是应用程序的功能。
不过现在的操作系统功能都会包含了越来越多的应用功能,它们之间的界定也更加模糊,所以现在的操作系统可以说是一个包而非单纯的 OS 了。
应用程序一定要在先装好了操作系统之后才可以安装而且也有不同的版本给不同的平台platform即操作系统的构架。很明显﹕给 Windws98 用的 Office2000 就硬是不可能装在 Window3.1 上面,更不要说装在 Linux 上面使用了。而且,应用程序只能在操作系统准备妥当之后才能使用,在开机的过程之中,操作系统先必须先于应用程序被加载启动。
## 选择操作系统
@ -69,8 +69,9 @@ Windows 11:
在学习操作系统的时候,应该抱着开放的态度,不要墨守成规和先入为主。不要站在一个操作系统的角度去看另外的操作系统,这样是不公平的。别忘记一点,就是:不管何种操作系统,都是服务我们的工具而已。工若善其用,必先利其器。请好好了解您的操作系统吧。
不过我们在“学习Linux”章节会谈到一个Linux发行版在后面会解释简单来说就是对操作系统的一个小的封装Rocky Linux。
不过我们在“学习 Linux”章节会谈到一个 Linux 发行版在后面会解释简单来说就是对操作系统的一个小的封装Rocky Linux。
---
> 原文: [netman](http://www.study-area.org/compu/compu_os.htm)</br>
> study-area-cn

91
src/learn_computer_basic/storage_device.md Normal file → Executable file
View File

@ -2,11 +2,11 @@
好了到这里相信我们都知道电脑是怎样运作的了它会吃会拉输入和输出它还有脑子CPU才能工作若是没有记忆Memory就等于白痴
但是其中的RAM要没电就什么都打回原形。虽然我们可以在屏幕或是打印机上看到结果不过我们还希望把这些结果给储存起来供以后需要再提取又或者将程序和其他数据储存起来就不用每次输入都要忙着敲键盘或动用其他的输入设备了…… OK这里要说的储存设备就是这么用的了。
但是,其中的 RAM 要没电就什么都打回原形。虽然我们可以在屏幕或是打印机上看到结果,不过,我们还希望把这些结果给储存起来供以后需要再提取,又或者将程序和其他数据储存起来,就不用每次输入都要忙着敲键盘或动用其他的输入设备了…… OK这里要说的储存设备就是这么用的了。
## 定义
凡是能够反映数据特征的无须靠电源维持的方法来储存电脑数据的媒介我们一律可以称之为储存设备。最常见的储存设备是U盘移动硬盘等等。然而最经常用到的却是藏在机器里面的硬盘。我们一般看不到它而且也最好别去碰它因为硬盘可以说是最容易坏的电脑零件之一了天啊﹗我们竟将数据放在上面。不过到现在硬盘的故障率已经大大降低了。但是数据丢失的风险还是有的。所以 **“数据备份”** 这种意识,是作为一个信息人的最基本的素养。
凡是能够反映数据特征的无须靠电源维持的方法来储存电脑数据的媒介,我们一律可以称之为储存设备。最常见的储存设备是 U 盘,移动硬盘等等。然而,最经常用到的却是藏在机器里面的硬盘。我们一般看不到它,而且也最好别去碰它,因为硬盘可以说是最容易坏的电脑零件之一了(天啊﹗我们竟将数据放在上面?!)。不过到现在,硬盘的故障率已经大大降低了。但是,数据丢失的风险还是有的。所以 **“数据备份”** 这种意识,是作为一个信息人的最基本的素养。
## 如何安装?
@ -16,36 +16,37 @@
1. 机械硬盘HDD
从实物上看,硬盘只是一个丑丑的金属块。在其肚子下面有密密麻麻的一大堆电子元件(这些东西都不要碰哦),现在通常使用 SATA 接口。
从实物上看,硬盘只是一个丑丑的金属块。在其肚子下面有密密麻麻的一大堆电子元件(这些东西都不要碰哦),现在通常使用 SATA 接口。
2. 固态硬盘SSD
固态硬盘通常比机械硬盘要小的多,形式也多样。通常有 条型的电子元件裸露M.2硬盘(裸露的电子元器件不要碰哦) 和 方形的一般拥有规整外壳SATA硬盘。
固态硬盘通常比机械硬盘要小的多,形式也多样。通常有 条型的电子元件裸露 M.2 硬盘(裸露的电子元器件不要碰哦) 和 方形的一般拥有规整外壳 SATA 硬盘。
硬盘接口分为以下几种:
1. SATA
这是我们最常见的接口我们见到的绝大部分的机械硬盘和一部分的固态硬盘都是这种接口。这种硬盘体型一般比较大通常为3.5寸或2.5寸。您会看到一排金手指,中间有一个**两边向上突起,中间分开的凹槽**,把金手指分为左右两个部分,短的是数据线,长的部分就是电源了。
这是我们最常见的接口,我们见到的绝大部分的机械硬盘和一部分的固态硬盘都是这种接口。这种硬盘体型一般比较大,通常为 3.5 寸或 2.5 寸。您会看到一排金手指,中间有一个**两边向上突起,中间分开的凹槽**,把金手指分为左右两个部分,短的是数据线,长的部分就是电源了。
再看看硬盘的侧面没有螺丝孔的其中一面在SATA接口上长的部分就是电源。那些从电源箱引出来的电源线就是接到这里的不用担心您会接错正负极因为安反了是插不进去的记住防呆设计不犯傻不要大力出奇迹
再看看硬盘的侧面(没有螺丝孔的其中一面),在 SATA 接口上,长的部分就是电源。那些从电源箱引出来的电源线就是接到这里的,不用担心您会接错正负极,因为安反了是插不进去的(记住,防呆设计不犯傻!不要大力出奇迹!)。
然后在另外一端,短的接头就是数据排线接口了。排线的接头有个凹进去的方块,那样的话要是掉反了方向是插不进去的(又是防呆!)。
然后在另外一端,短的接头就是数据排线接口了。排线的接头有个凹进去的方块,那样的话要是掉反了方向是插不进去的(又是防呆!)。
> 对于部分光驱来说安装方式和 SATA 硬盘相同。
> 对于部分光驱来说安装方式和SATA硬盘相同。
2. M.2
M.2 的接口相比SATA很短因此硬盘的体积也很小。您会在一排金手指上看见一个或两个缺口有的在左有的在右。不同协议的硬盘有着不同的缺口选购时请参考您的电脑主板。
M.2 的接口相比 SATA 很短,因此硬盘的体积也很小。您会在一排金手指上看见一个或两个缺口,有的在左,有的在右。不同协议的硬盘有着不同的缺口,选购时请参考您的电脑主板。
你只需要斜着把硬盘(有贴纸的面朝上)插进主板上的接口,不需要数据线,然后压下去(不用担心压坏了),如果有盖子把盖子装上。拧上螺丝(不用拧到头,有的有快拆设计,不需要拧螺丝,只需要轻轻一压就好了,还有另一种需要旋转一下螺丝位上的小手柄的)。
你只需要斜着把硬盘(有贴纸的面朝上)插进主板上的接口,不需要数据线,然后压下去(不用担心压坏了),如果有盖子把盖子装上。拧上螺丝(不用拧到头,有的有快拆设计,不需要拧螺丝,只需要轻轻一压就好了,还有另一种需要旋转一下螺丝位上的小手柄的)。
3. SAS SAS属于企业级硬盘接口我们基本见不到。此处不再说明。
3. SAS SAS 属于企业级硬盘接口,我们基本见不到。此处不再说明。
4. PCIE 同上。
5. IDE IDE是老式硬盘接口此处不再说明。[原链接](http://www.study-area.org/compu/compu_storage.htm)
5. IDE IDE 是老式硬盘接口,此处不再说明。[原链接](http://www.study-area.org/compu/compu_storage.htm)
老式的IDE硬盘在电源接口和数据线接口之间还会有一些跳针但在新电脑上已经消失了。这里不再说明。
老式的 IDE 硬盘在电源接口和数据线接口之间还会有一些跳针,但在新电脑上已经消失了。这里不再说明。
## 如何计算容量?
@ -53,20 +54,21 @@
- 机械硬盘
如果你将机械硬盘打开(千万别在您自己的硬盘上这样做﹗因为硬盘是密封的,并且盘片需要在无尘环境下运作,一旦打开你的数据就会变成一面读不出来数据的镜子!)您会发现里面有一堆同轴的金属碟,所有的数据都是记录在这些光滑的金属碟表面之上。磁盘通常都有两面,每一面都有其一个各自的磁头。
如果你将机械硬盘打开(千万别在您自己的硬盘上这样做﹗因为硬盘是密封的,并且盘片需要在无尘环境下运作,一旦打开你的数据就会变成一面读不出来数据的镜子!)您会发现里面有一堆同轴的金属碟,所有的数据都是记录在这些光滑的金属碟表面之上。磁盘通常都有两面,每一面都有其一个各自的磁头。
然后将金属磁盘旋转磁头不移动的在表面相对所画出来的一圈可以说是一个磁道Track。那么从圆心向外以一定距离进行测量将所有表面上的相同圆周的磁道从上到下叠起来抽象地看就是一个磁柱Cylinder了。
然后将金属磁盘旋转磁头不移动的在表面相对所画出来的一圈可以说是一个磁道Track。那么从圆心向外以一定距离进行测量将所有表面上的相同圆周的磁道从上到下叠起来抽象地看就是一个磁柱Cylinder了。
然后也是由圆心开始在同一表面上分别画出无数条半径然后每两条半径所分割的磁道我们称为扇区Sector。每一扇区通常可携带512byte(0.5KB)的数据。
然后也是由圆心开始在同一表面上分别画出无数条半径然后每两条半径所分割的磁道我们称为扇区Sector。每一扇区通常可携带 512byte(0.5KB)的数据。
现今制造技术的不断提高,机械硬盘的磁盘越来越薄,磁头也越来越小,那么磁盘就可以越装越多(相对的是可擦写表面越来越多),甚至一块硬盘能够达到 10T而且表面的密度也不断提高和读写精度越来越高相对的是 Track 和 Sector 也越来越多),所以硬盘容量也越来越大。
现今制造技术的不断提高机械硬盘的磁盘越来越薄磁头也越来越小那么磁盘就可以越装越多相对的是可擦写表面越来越多甚至一块硬盘能够达到10T而且表面的密度也不断提高和读写精度越来越高相对的是Track和Sector也越来越多所以硬盘容量也越来越大。
- 固态硬盘
如果你看见过M.2硬盘或者打开的SATA硬盘你应该会看到上面密密麻麻的电子元器件。固态硬盘就是靠这些元器件进行存储的。
如果你看见过 M.2 硬盘或者打开的 SATA 硬盘,你应该会看到上面密密麻麻的电子元器件。固态硬盘就是靠这些元器件进行存储的。
其中你应该能看见许多较大的黑色芯片。其中有一个正方形的那个是硬盘的主控负责管理整个硬盘。数量较多其他较大的长方形的的就是存储芯片闪存你的数据都被存放到了这里。U盘通常也就是这种构造。
其中你应该能看见许多较大的黑色芯片。其中有一个正方形的那个是硬盘的主控负责管理整个硬盘。数量较多其他较大的长方形的的就是存储芯片闪存你的数据都被存放到了这里。U 盘通常也就是这种构造。
固态硬盘同样有扇区等等,只不过大多都是主控模拟出来的,不再具有实际意义了。
固态硬盘同样有扇区等等,只不过大多都是主控模拟出来的,不再具有实际意义了。
好了如果以上数据Cylinder/Heads/Sector都知道的话要求出硬盘容量就易如反掌了。公式是
@ -74,62 +76,65 @@
磁头数量 * 磁柱数量 * 扇区数量 = 硬盘容量
```
电脑的BIOS会自动获取硬盘的配置和容量无需像很早以前一样手动填写了。
电脑的 BIOS 会自动获取硬盘的配置和容量,无需像很早以前一样手动填写了。
现今的制造技术的不断提高机械硬盘的磁盘越来越薄磁头也越来越小那么磁盘就可以越装越多而且表面的密度也不断提高和读写精度越来越高相对的是Track和Sector也越来越多所以硬盘容量也越来越大。
现今的制造技术的不断提高,机械硬盘的磁盘越来越薄,磁头也越来越小,那么磁盘就可以越装越多,而且表面的密度也不断提高和读写精度越来越高(相对的是 Track Sector 也越来越多),所以硬盘容量也越来越大。
而固态硬盘由最开始的SLC发展出了MLC、TLC、QLC等技术。这些技术可以让一个存储单元存下更多Bit的数据SLC是1位MLC是2位TLC是3位QLC是4位。这些技术使用存储寿命和读写速度换来了固态硬盘价格的降低和容量的提高。
而固态硬盘由最开始的 SLC发展出了 MLC、TLC、QLC 等技术。这些技术可以让一个存储单元存下更多 Bit 的数据SLC 1 MLC 2 TLC 3 QLC 4 位。这些技术使用存储寿命和读写速度换来了固态硬盘价格的降低和容量的提高。
## 格式化和分区
任何磁盘都要先经过格式化才可以使用因为不同的文件系统使用的格式也不同。但一块硬盘在刚生产出来的时候磁盘的表面可以说是空白一片要进行低级格式化简称低格Low Level Format机械硬盘需要写上track和sector固态硬盘需要写上固件之后才可以使用通常厂家在出厂的时候已经为我们做好了但是进行低格通常需要专业的工具/软件才可以。
任何磁盘都要先经过格式化才可以使用因为不同的文件系统使用的格式也不同。但一块硬盘在刚生产出来的时候磁盘的表面可以说是空白一片要进行低级格式化简称低格Low Level Format机械硬盘需要写上 track sector固态硬盘需要写上固件之后才可以使用通常厂家在出厂的时候已经为我们做好了但是进行低格通常需要专业的工具/软件才可以。
平时我们常说的格式化多指高级格式化High Level Format只是给已经初始化的硬盘上再建构一些供文件系统使用的逻辑块同时还会建立文件系统如`FAT`/`NTFS`/`exFAT`/`ext`、引导(开机)扇区、以及每个逻辑磁盘的根目录等等。
不过在硬盘的低格和高格之间我们还不能少了一个工序﹕分区Partition建立磁盘分区表Disk Partition Table。常用的分区表有MBR和GPT。不用担心选择好分区表以后是可以转换的
不过在硬盘的低格和高格之间我们还不能少了一个工序﹕分区Partition建立磁盘分区表Disk Partition Table。常用的分区表有 MBR GPT。不用担心选择好分区表以后是可以转换的
分区表就是在一个完整的磁盘上,分割开数个逻辑区域。就算您只想将整个磁盘拿来做单一的分区,也必须要有一个单一的分区需要建立。
- MBR分区表是一种较老的分区表格式被绝大部分电脑所支持极少数过于新的电脑不支持MBR引导操作系统。MBR最多允许分 4 个实分区。如果想要分更多的区怎么办那答案就是使用逻辑分区。逻辑分区不限制数量。但是分区最大只能是2TB在当时人们做梦都不会想到现在有10TB的硬盘。MBR分区可以支持Legacy引导和UEFI引导。
- GPTGUID是一种新兴的分区格式。在大部分较新的电脑上被支持并作为首选项。但是在Windows XP及以前Windows的系统都无法读取GPT分区表。GPT没有实分区和逻辑分区的区分因为GPT最多支持256个分区但是谁会用那么多呢。GPT分区只支持UEFI引导。
- MBR 分区表是一种较老的分区表格式,被绝大部分电脑所支持(极少数过于新的电脑不支持 MBR 引导操作系统。MBR 最多允许分 4 个实分区。如果想要分更多的区怎么办?那答案就是使用逻辑分区。逻辑分区不限制数量。但是分区最大只能是 2TB在当时人们做梦都不会想到现在有 10TB 的硬盘。MBR 分区可以支持 Legacy 引导和 UEFI 引导。
- GPTGUID是一种新兴的分区格式。在大部分较新的电脑上被支持并作为首选项。但是在 Windows XP 及以前 Windows 的系统都无法读取 GPT 分区表。GPT 没有实分区和逻辑分区的区分,因为 GPT 最多支持 256 个分区但是谁会用那么多呢。GPT 分区只支持 UEFI 引导。
不过以小弟愚见,最好还是分割数个磁盘,自有其好处﹕
1. 方便管理比如可以将磁盘分割为bootsystemdata等分区(Windows基本别想了),这样相同种类的文件都可以集中在一起,整齐易理。(不过现在由于文件夹的优化,已经比分区方便多了)
2. 减少损失要是因为系统故障如升级失败等原因并且必须重新格式化的话将system或boot分区格式化就可以了你的data还不至于跟着消失。PSlinux确实方便很多只要保留home目录Windows的注册表和system也一起灰飞烟灭了
3. 可安装多个操作系统。利用分区我们可以在同一硬盘上面安装多个操作系统比如Windows 7、Windows 10、UbuntuLinux的发行版之一等等。虽然有些系统可以安装在同一个分区里面但毕竟是不可取的。而且不同的操作系统使用不同的文件系统Windows使用NTFSLinux使用ext/xfs也不可能都使用同一分区。
1. 方便管理,比如可以将磁盘分割为 bootsystemdata 等分区(Windows 基本别想了),这样相同种类的文件都可以集中在一起,整齐易理。(不过现在由于文件夹的优化,已经比分区方便多了)
2. 减少损失,要是因为系统故障(如升级失败)等原因并且必须重新格式化的话,将 system boot 分区格式化就可以了,你的 data 还不至于跟着消失。PSlinux 确实方便很多,只要保留 home 目录Windows 的注册表和 system 也一起灰飞烟灭了)
3. 可安装多个操作系统。利用分区,我们可以在同一硬盘上面安装多个操作系统,比如 Windows 7、Windows 10、UbuntuLinux 的发行版之一等等。虽然有些系统可以安装在同一个分区里面但毕竟是不可取的。而且不同的操作系统使用不同的文件系统Windows 使用 NTFSLinux 使用 ext/xfs也不可能都使用同一分区。
然而大容量的硬盘也给分区带来不便比如有些朋友在安装多系统的时候由于将一些操作系统的开机目录安装在1024磁柱后面就会碰到找不到那个系统的情形了。不过新的BIOS已解决这个问题了。
然而大容量的硬盘也给分区带来不便,比如有些朋友在安装多系统的时候,由于将一些操作系统的开机目录安装在 1024 磁柱后面,就会碰到找不到那个系统的情形了。不过,新的 BIOS 已解决这个问题了。
当初MS-DOS在使用FAT(16)文件系统的时候为了增加读写的速度引入了一个叫簇cluster的概念一个簇往往是有好几个sector来组成的。因为一般的文件大小都超过0.5K一个sector的容量如果以簇作为最小分配单位的话那么在读写的时候就可以顺着一次过读写多个连续的sector比起逐个逐个的sector读写要快些。
当初 MS-DOS 在使用 FAT(16)文件系统的时候为了增加读写的速度引入了一个叫簇cluster的概念一个簇往往是有好几个 sector 来组成的。因为一般的文件大小都超过 0.5K(一个 sector 的容量),如果以簇作为最小分配单位的话,那么在读写的时候就可以顺着一次过读写多个连续的 sector比起逐个逐个的 sector 读写要快些。
在以前硬盘容量比较少的情况之下这样的方法的确比较见效不过在后来硬盘容量大幅度增加之后FAT16由于自身的设计已经不能一次性分配超过2G容量了。而且由于簇空间也不是全部都利用尽其浪费也很惊人越是大容量越是厉害。在Windows95之后所推出的FAT32文件系统可以提供更多的分配单位也就能管理更大的容量了不过还是因为自身缺陷不能分配超过4G的容量。
在以前硬盘容量比较少的情况之下这样的方法的确比较见效不过在后来硬盘容量大幅度增加之后FAT16 由于自身的设计已经不能一次性分配超过 2G 容量了。而且由于簇空间也不是全部都利用尽,其浪费也很惊人,越是大容量越是厉害。在 Windows95 之后所推出的 FAT32 文件系统,可以提供更多的分配单位,也就能管理更大的容量了,不过还是因为自身缺陷,不能分配超过 4G 的容量。
再之后的NTFSNT Files SystemWindowsNT文件系统将簇体积基本上降低到一定的sector单位常见的单位是4KB所以通常叫4K对齐所利用的空间也就更有效。NTFS可以支持更大的文件理论可达2TB。
再之后的 NTFSNT Files SystemWindowsNT 文件系统),将簇体积基本上降低到一定的 sector 单位(常见的单位是 4KB所以通常叫 4K 对齐所利用的空间也就更有效。NTFS 可以支持更大的文件,理论可达 2TB。
以下是一些常见文件系统的兼容表:
| 项目 | NTFS | exFat | ext2/3/4 | xfs |
| 项目 | NTFS | exFat | ext2/3/4 | xfs |
| -------------- | ---- | ----- | -------- | ------- |
| Windows 兼容性 | 好 | 好 | 不支持 | 不支持 |
| Linux 兼容性 | 中 *i*| 中 *i* | 好 | 好 |
| MacOS 兼容性 | 不支持 | 好 | 不支持 | 不支持 |
| Windows 兼容性 | 好 | 好 | 不支持 | 不支持 |
| Linux 兼容性 | 中 _i_| 中 _i_ | 好 | 好 |
| MacOS 兼容性 | 不支持 | 好 | 不支持 | 不支持 |
> _i_: Linux 内核仅支持读取,写入需要使用第三方软件包。但除了 Ubuntu 以外的大部分发行版已经自带 ntfs 和 ExFAT 的驱动。
> *i*: Linux内核仅支持读取写入需要使用第三方软件包。但大部分发行版已经自带不过Ubuntu并没有自带exfat支持。
---
> 无论如何使用UEFI启动时其EFI分区必须是FAT(32)格式的。
> 无论如何,使用 UEFI 启动时,其 EFI 分区必须是 FAT(32)格式的。
## 虚拟内存/内存盘
储存设备就好比是电脑的仓库。不过除了用来保存数据之外还可以当RAM用哦
储存设备,就好比是电脑的仓库。不过除了用来保存数据之外,还可以当 RAM 用哦~
或许您也听过什么“虚拟内存”Virtual Memory”这词了吧这究竟怎么样的东东呢理论上电脑工作的地方都在内存上面但有时候程序太大或同时开的程序太多就很容易超过了内存的容量了这样系统就无法工作就会导致“蓝屏死机”。
为解决这一问题我们就在硬盘上面划出一个地盘用来储存超出内存容量的部份通常是那些暂时还不处于工作状态的数据。如果电脑需要处理那些数据的时候然后再从硬盘上把数据抄到RAM里面同时也将另外一些暂时不处理的数据搬到硬盘上面这个动作叫做SWAP。如果RAM的体积小电脑就整天都忙着这样搬过来搬过去效率就大打折扣了。这就是为什么增加RAM会提高电脑的整体表现的原因了。Windows会把程序“申请”但还没有使用的内存放到SWAP中等待程序使用时才拿出来。
为解决这一问题,我们就在硬盘上面划出一个地盘,用来储存超出内存容量的部份,通常是那些暂时还不处于工作状态的数据。如果电脑需要处理那些数据的时候,然后再从硬盘上把数据抄到 RAM 里面,同时也将另外一些暂时不处理的数据搬到硬盘上面,这个动作叫做 SWAP。如果 RAM 的体积小,电脑就整天都忙着这样搬过来搬过去,效率就大打折扣了。这就是为什么增加 RAM 会提高电脑的整体表现的原因了。Windows 会把程序“申请”但还没有使用的内存放到 SWAP 中,等待程序使用时才拿出来。
和虚拟内存相反RAM Disk内存盘则是利用RAM模拟出一个虚拟磁盘。不仅读写速度快多了而且在还没有划分磁盘但又需要一些空间临时储存程序的时候就特别有用。在Win98的时候就有虚拟磁盘功能了。甚至整个操作系统RAM OS都可以被放进内存中比如说Windows PE和Linux LiveCD
和虚拟内存相反RAM Disk内存盘则是利用 RAM 模拟出一个虚拟磁盘。不仅读写速度快多了,而且在还没有划分磁盘但又需要一些空间临时储存程序的时候,就特别有用。在 Win98 的时候就有虚拟磁盘功能了。甚至整个操作系统RAM OS都可以被放进内存中比如说 Windows PE Linux LiveCD
好了,关于硬盘,暂时说到这里,接下来要讲的是电脑的一个非常重要的部件——主板。
---
> 原文: [netman](http://www.study-area.org/compu/compu_storage.htm)</br>
> study-area-cn

3
src/learn_computer_basic/what_is_computer.md Normal file → Executable file
View File

@ -16,10 +16,11 @@
## 和电脑交个朋友
学习电脑就像交朋友一样,贵在相处了解和真诚付出。 如果有一天您发现电脑不跟您合作了,可不要生它的气哦。其实它也很想帮您解决问题(这是电脑的终身使命),只是,有时侯它不能了解您(或程序)所交给它的信息而已。 比方说您在键盘上输入1+1=? ,您很有可能得到 Bad command or file name 的回应。 呵,知道老师为什么说电脑是蠢东西了吧?^_^ 更有甚者,若你把它的思维绕了,它还会发呆呢,也就是我们说的'宕机'了(千年虫 —— Y2K bug就是最好的例子了
学习电脑就像交朋友一样,贵在相处了解和真诚付出。 如果有一天您发现电脑不跟您合作了,可不要生它的气哦。其实它也很想帮您解决问题(这是电脑的终身使命),只是,有时侯它不能了解您(或程序)所交给它的信息而已。 比方说您在键盘上输入1+1=? ,您很有可能得到 Bad command or file name 的回应。 呵,知道老师为什么说电脑是蠢东西了吧?^\_^ 更有甚者,若你把它的思维绕了,它还会发呆呢,也就是我们说的'宕机'了(千年虫 —— Y2K bug就是最好的例子了
那么,我们要如何交这朋友呢?慢慢来,由基础开始。继续看下面的文章相信对您有所帮助。
---
> 原文: [netman](http://www.study-area.org/compu/compu_defi.htm)</br>
> study-area-cn

0
src/learn_linux_basic/assets/2.1.1.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

0
src/learn_linux_basic/assets/2.3.1.svg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 526 KiB

After

Width:  |  Height:  |  Size: 526 KiB

0
src/learn_linux_basic/assets/2.3.2.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

View File

@ -0,0 +1,79 @@
# 备份
## 概念
备份是计算机使用中非常重要的操作。原则上来说,进行任何重大修改(比如更新系统、更新生产环境中的软件。)之前都需要备份。
按照备份的范围来分,常用的备份方式有以下几种:
- 全量备份:指把硬盘等存储介质中的所有文件**一次性完整复制**到其他介质上。
- 增量备份:对上一次备份后的数据后修改的数据进行备份。
- 差异备份:在完整备份之后,修改备份中与当前数据有差别的数据。
- 选择性备份:仅对系统中的一部分进行备份。
按照备份的时间来分,常用的备份方式分为以下两种:
- 计划性备份:比如一周一备份、一天一备份等。
- 操作前备份:在重大操作前备份,以便在操作后出现问题时可以快速回滚,减少损失。
> 有的人可能会说:“我们自己用电脑,备份有什么意义呢?” 2017年勒索病毒WannaCry的肆虐为我们敲响了警钟。这个病毒用AES加密用户电脑上的所有文件以勒索钱财。没有人知道下一个被勒索的究竟是不是自己我们只能通过备份将损失降到最低。
## 备份软件
Linux下常用的备份工具有以下几种
- dd直接克隆整个分区。
- tar将需要备份的文件打包压缩。
- rsync可以进行增量备份、全量备份以及可以将备份传输到远程。
### `dd`命令
> 这个小节的内容,了解即可。
备份整块`sda`硬盘到`sdb`只需要以下命令。
```sh
dd if=/dev/sda of=/dev/sda
```
> 注意这里的sdb物理容量必须大于sda并且sdb上所有的文件都会被覆盖**无法找回!**
### `tar`命令
Linux中可以直接使用`tar`打包需要的文件,比如备份`/etc`
```sh
cd /
sudo tar -zcvf etc_backup.gz etc
```
## `rsync`命令
在之前的章节中,我们创建了一个新的虚拟磁盘。现在,让我们挂载它到`/mnt/backup`进行备份。
> 如果你完成了之前的课后作业那么sdb上应该有唯一的一个xfs分区占满了整个磁盘。如果你已经持久挂载了磁盘本步骤可以跳过。
```sh
sudo mkdir /mnt/backup
sudo mount /dev/sdb1 /mnt/backup
sudo mkdir /mnt/backup/etc
```
现在,我们使用`rsync`命令,将虚拟磁盘中的文件复制到新的虚拟磁盘上。
```sh
sudo rsync -avz /etc /mnt/backup/etc
```
`rsync`命令的参数如下:
- `-a`:递归模式,表示以递归方式传输文件,并保持所有文件属性。
- `-v`:显示详细输出。
- `-z`:压缩传输的数据。
- `/etc`:源文件。
- `/mnt/backup/etc`:目标文件。
`rsync`命令会自动判断源文件和目标文件是否相同,如果相同,则不会进行复制。如果不同,则会复制不同的文件。
> `rsync`命令是一个非常强大的命令,它不仅可以进行文件复制,还可以联网进行文件的同步、文件的删除等操作。如果你需要备份大量的文件,那么`rsync`命令是一个非常好的选择。

View File

@ -0,0 +1,473 @@
# 磁盘分区以及文件系统
我们之前学习了关于硬盘的知识,并且知道了在硬盘上还有着文件系统。那么就让我们来学习在 Linux 上的硬盘分区以及文件系统的知识吧!
> 本章东西较多,请做好心理准备,建议学一部分练一部分,边看边练。
## 基本知识
### 磁盘设备
我们前文提到了 Linux 上的 `/dev` 是大部分设备对应的文件,当然也包括磁盘设备。
> 在 Linux 上,不仅磁盘本身是文件,磁盘的每一个分区也都对应着一个文件。
在 Linux 上常见的磁盘设备有以下几种:
> 在下面的内容中:
>
> - `X`: 表示 `a` - `z` 的小写字母
> - `@`: 表示从 0 开始的自然数
- `/dev/sdX`: 最常见的一种磁盘类型,你通常见到的也是这种,例如 `/dev/sda`
- `/dev/sdX@` 表示这个磁盘的每一个分区。
- `/dev/nvme@n@`: 表示 NVME 上的磁盘,第一个数字表示设备名,第二个是命名空间,通常是 1例如 `/dev/nvme0n1`
- `/dev/nvme@n@p@` 表示这个磁盘的每一个分区。
- `/dev/loop@`: 被称为回环设备,为模拟出来的,通常作为 `img` 等镜像文件的挂载点,可以是一个硬盘也可以仅仅是一个分区,例如 `/dev/loop0`
- `/dev/loop@p@` 表示作为整个磁盘时的每一个分区。
- `/dev/mmblk@`: 为嵌入式的存储,这种比较少见,我们一般不会遇到。
### 文件系统
Linux 兼容大部分的文件系统(前面有提到一个表格):
| 项目 | NTFS | exFat | ext2/3/4 | xfs |
| -------------- | ---- | ----- | -------- | ------- |
| Windows 兼容性 | 好 | 好 | 不支持 | 不支持 |
| Linux 兼容性 | 中 | 中 | 好 | 好 |
| MacOS 兼容性 | 不支持 | 好 | 不支持 | 不支持 |
通常可以被 Linux 用作系统磁盘的文件系统格式的是:
- `ext2/3/4`
扩展日志文件系统,是最常见的系统磁盘的文件系统,也可以用作数据磁盘。现在 ext2/3 已经用的比较少了。
- `xfs`
一种高性能的文件系统,被 RockyLinux 等新的 Linux 发行版用作默认文件系统。
- `btrfs`
新兴的文件系统,自带了快照和压缩等十分方便的功能,不过目前还不太稳定。
还有一些其它的被 Linux 支持的格式:
- `ntfs`
是 Windows 上的默认文件系统,可以使用 `ntfs-3g` 包实现读取和写入。但是在 Linux 下有权限问题,并且不太稳定。
- `exfat/fat32`
比较老的文件系统,在 Linux 上也需要额外的包才可以写入。
还有一些特殊用途的文件系统:
- `swap`
交换分区,不可被用于存储数据,前面提到过。
## 在虚拟机上创建硬盘
我们要学习如何分区,那么就肯定要有一个硬盘。如果你按照上文的方法创建了虚拟机,请按照你使用的虚拟机软件,选择下面的文章完成创建虚拟磁盘的操作,然后再回到本篇继续学习。
1. [在 VirtualBox 上创建虚拟磁盘](./diskpart_and_filesystem/create_disk_on_vbox.md)
2. [在 VMWare Workstation 上创建虚拟磁盘](./diskpart_and_filesystem/create_disk_on_vmware.md)
## 使用命令行工具进行分区
进行分区需要具有 `root` 权限!
分区是一个非常危险的操作!进行操作前最好备份!如果你要调整系统磁盘分区,可以使用一个恢复镜像,例如一个 Linux 的安装磁盘或是 LiveCD。所以最好不要删除你安装系统的ISO文件或者是U盘
> 除了下文的 `parted``fdisk` 等工具,还有 `gdisk`(命令行)、`cfdisk`(命令行,方向键交互)、`gparted` 等工具,本文在此不过多介绍。
>
> `parted``fdisk` 已经被绝大多数 Linux 发行版包含,你通常无需额外安装。但是可能会有少部分发行版缺少其中任何一个软件包。
### parted 和 fdisk 的基本命令格式
> 下面标注有 parted 和 fdisk 的命令,表示这个命令需要在对应工具的命令行模式下执行
#### parted
parted 有两种使用模式,一种是参数模式,一种是命令行模式。这两种模式区别不大,执行的命令都是相同的。下文均以命令行模式(非交互式)下的命令为展示。
```bash
# 参数模式
parted [设备文件] [你要执行的命令]
# 命令行模式
parted [设备文件]
# 然后再输入你的命令,输入完成后和终端一样需要回车
# 可使用 'quit'('q') 命令退出
```
parted 的命令也有两种模式:交互模式和非交互模式。
- 交互模式就是输入一个命令,后面不带任何的参数,然后程序会要求你输入这个命令的每一个参数。
- 非交互模式就是把这个命令的参数都以空格的形式填写在这个命令后,你不需要填写任何内容。
#### fdisk
fdisk 只有一种模式:交互式命令行模式。
fdisk 的使用和 parted 的使用方式几乎差不多,除了命令不同。
fdisk 可以使用 `q` 退出。
注意fdisk 默认不会保存到磁盘,需要执行 `w` 命令才会真正写入磁盘。引用软件的提示: **使用写入命令前请三思**
下面的命令中 `<Enter>` 表示无需输入任何内容直接回车即可。
### 查看所有硬盘
当我们需要进行分区时,我们肯定要知道有哪些硬盘。下面的任意一个指令均可:
- `lsblk`
执行效果: ~~(个人最喜欢用的一种)~~
```text
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 800M 0 part
├─sda2 8:2 0 79.2G 0 part
└─sda3 8:3 0 845M 0 part
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 500M 0 part /boot
├─sdb2 8:18 0 524M 0 part [SWAP]
├─sdb3 8:19 0 60G 0 part /
sdc 8:32 0 238.5G 0 disk
├─sdc1 8:33 0 174.4G 0 part
├─sdc2 8:34 0 32M 0 part
└─sdc3 8:35 0 60G 0 part
sr0 11:0 1 1024M 0 rom
```
最左侧一列是设备名称,第三列是大小,第五列是设备的类型,第六列是挂载点(下面会说到)。
- `fdisk -l`
执行效果:
```text
...
Disk /dev/sdb931.51 GiB1000204886016 字节1953525168 个扇区
磁盘型号WDC WD10EZEX-22M
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理)512 字节 / 4096 字节
I/O 大小(最小/最佳)4096 字节 / 4096 字节
磁盘标签类型gpt
磁盘标识符7690BA4B-E69F-4431-B4E6-XXXXXXXXXXXX
设备 起点 末尾 扇区 大小 类型
/dev/sdb1 2048 1026047 1024000 500M EFI 系统
/dev/sdb2 1026048 2099199 1073152 524M Linux swap
/dev/sdb3 2099200 127928319 125829120 60G Linux 文件系统
/dev/sdb4 127928320 1282436494 1154508175 550.5G Microsoft 基本数据
/dev/sdb5 1282437120 1953523711 671086592 320G Linux 文件系统
...
```
每一个磁盘都会有这么一些内容,第一行有磁盘的设备文件和大小,下面是磁盘的其它信息,可以清晰看到磁盘的每一个分区的大小和类型。
- `df -h`
执行效果:
```text
文件系统 大小 已用 可用 已用% 挂载点
dev 5.7G 0 5.7G 0% /dev
run 5.7G 1.7M 5.7G 1% /run
efivarfs 128K 89K 35K 73% /sys/firmware/efi/efivars
/dev/sdb3 59G 33G 24G 59% /
tmpfs 5.7G 258M 5.5G 5% /dev/shm
...
tmpfs 5.7G 39M 5.7G 1% /tmp
/dev/sdb5 320G 35G 285G 11% /mnt/xdata
/dev/sdb1 499M 174M 326M 35% /boot
/dev/sdb4 551G 90G 461G 17% /mnt/data
```
### 创建分区表
如前面所说,我们刚刚添加了一块硬盘,需要创建一个分区表才能进行分区。创建分区表需要使用 `parted``fdisk` 命令。
parted
```bash
mklabel [gpt/mbr]
```
fdisk
```bash
g # 创建 GPT 分区表
# 或者
o # 创建 MBR 分区表
```
如果没有特殊需求建议选择 GPT 分区表。
### 创建新分区
有了分区表,我们可以开始分区了。
parted
```bash
mkpart primary [文件系统] [起始位置] [结束位置]
```
> 这里的 primary 表示分区类型一般GPT分区表下无需修改。
>
> 文件系统可以是 ext4、ext3、ext2、xfs、fat32、ntfs 等等,也可不填。
>
> 起始位置和结束位置可以写数字,表示扇区数,也可以写单位,如 1G 表示 1GB
> 也可以写百分比,如 100% 表示使用剩余的所有空间
fdisk
```bash
n # 创建新分区
p # 设置为主分区
<Enter>
<Enter> # 起始扇区号,默认会接在上一个分区后面
+[大小] # 分区大小,可以是数字,也可以是单位,如 +1G 表示 1GB
```
### 格式化分区
创建完分区后我们需要对分区进行格式化才能使用。Linux 并不像 Windows 那么贴心,会主动提示你格式化,但是也给了你更多的控制能力。
格式化要使用 `mkfs` 命令,但是格式是:
```bash
mkfs.[文件系统] [设备文件] [更多可选参数]
# 等价于
mkfs -t [文件系统] [设备文件] [更多可选参数]
```
注意文件系统和 mkfs 中间的 **“.”** ,如 `mkfs.ext4`等。
不同文件系统可以使用的参数也有些许不同。下面是一个列表:
- `mkfs.ext4`
- `-L` 可以设置卷标,可以看作磁盘的名字。
- `-N` 可以设置 inode 的大小。inode 可以看作存储文件或目录的基本信息的东西。这个参数就决定了你的最大文件的数量。
- `-F` 强制格式化,不过只有部分版本需要。
- `mkfs.vfat`
> VFat 可以看作是 `fat16`、`fat32` 等数据类型的总和,默认会自动选择格式。
- `-n` 设置卷标
- `-F [版本]` 可以设置格式化的 `fat` 文件系统的版本,如 `16`、`32` 等。
- `mkfs.exfat` 格式化成 `exfat`
- `-n` 设置卷标
- `mkfs.xfs`
- `-L` 设置卷标
- `-f` 强制格式化,会清空原有的分区
- `mkfs.btrfs`
- `-L` 设置卷标
- `-f` 强制格式化
> btrfs 可用的参数很多,许多参数是为 raid(一种可以将多块硬盘模拟成一块的方法) 准备的,这里就不一一列举了。
### 查看分区列表
分区完成后,我们可以使用 `parted``fdisk` 命令查看分区列表。
parted
```bash
print
```
fdisk
```bash
p
```
在这里我们就可以看到每个分区对应的设备文件了,一会我们要用到。
### 删除分区
如果我们不再需要一个分区,或者分区方案有误,我们可以使用 `parted``fdisk` 命令删除分区。
parted
```bash
rm [分区号]
```
fdisk
```bash
d [分区号]
```
这里的分区号可以使用上一条查看分区列表的方式查看,其实就是 `/dev/sdX@``@` 所对应的数字(在其它类型的磁盘中是 `p` 后面的数字)。
### 其它技巧
`parted``fdisk` 还有一些其它的技巧,下面列举了一小部分:
parted
```bash
resizepart [分区号] [起始位置] [结束位置] # 可以修改分区的大小
rescue [起始位置] [结束位置] # 可以查找丢失的分区
```
更多的技巧这里就不一一列举了。
## 挂载分区
创建了分区,我们该如何访问呢?答案就是挂载。
> 事实上Windows 中的C盘、D盘等盘符也是挂载的只不过 Windows 会自动为我们完成。Windows 也同样支持挂载到一个目录。
在下面,我们称挂载的目标路径为“挂载点”。挂载点通常约定俗称使用 `/mnt` 目录下的子目录(挂载整个系统时除外)
### `mount``umount` 命令
Linux 中挂载分区可以使用 `mount` 命令,卸载分区使用 `umount` 命令。
> 事实上,在图形化的文件管理器中,我们可以直接点击磁盘进行挂载(需要输入 root 密码验证身份),右面向下的箭头上面还有条横线的就是卸载按钮。
`mount` 命令的格式如下:
```bash
mount -t [文件系统] [设备文件] [挂载点]
```
> `-t` 参数可以省略Linux 会自动识别文件系统。
>
> `-o [挂载参数]` 可以设置挂载参数,下面会列举出来。
然后我们就可以使用你设置的挂载点访问磁盘了。
可以指定 `--mkdir` 参数,会在挂载的时候自动创建对应的文件夹。
`umount` 命令的格式如下:
```bash
umount [挂载点/设备文件]
```
### 自动挂载
每次开机都要手动挂载分区是一件很麻烦的事情,我们可以使用 `/etc/fstab` 文件让系统自动挂载。
如果你查看这个文件,你会看到以下内容(不同系统默认的内容可能不同):
```text
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3
UUID=25236755-bc8f-4ee4-a733-fc71ed33c408 / ext4 rw,relatime 0 1
# /dev/sda1
UUID=D0EE-69A5 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/sda2
UUID=94a6c32f-c2d2-4401-8749-689b005ac9f0 none swap defaults 0 0
```
每一行代表一个挂载点,每一列代表一个参数。每一列之间应该用 `<tab>` 和一个空格分隔。通常第一条就是你的系统。
整理起来就是这样:
| 分区的UUID | 挂载点 | 文件系统的类型 | 挂载选项 | 是否自动运行 dump | 是否自动运行 fsck |
| :-------- | :------- | :---------- | :------------ | :-------------- | :--------------- |
| UUID=XXXX | / | ext4 | rw,relatime | 0 | 1 |
| UUID=XXXX | /boot | vfat | rw,relatime...| 0 | 2 |
| UUID=XXXX | none | swap | defaults | 0 | 0 |
其中:
- `#` 开头的行是注释
- UUID 可以使用查看分区的方法查看
- 挂载点在处理 swap 的时候需要填 `none`
- 不同文件系统挂载选项不同,使用逗号分隔,以下是常见的选项:
- `defaults` 默认选项
- `ro` 只读模式
- `rw` 读写模式,默认的挂载模式
- `nofail` 忽略挂载时的错误,常用于可移动设备
- dump 是一个自动备份程序,后面会使用 crontab 实现自动备份
- fsck 是一个磁盘健康检查程序,可以自动修复错误,推荐开启,可以填写为 1
> 如果你在更改 fstab 文件的时候出现了问题,系统会卡死,稍等会陷入恢复模式,此时会提示你输入 root 密码,然后便可以使用 nano 或者 vim 命令编辑 fstab 文件,使用 `#` 临时注释掉出现问题的那一行再重启便可以正常进入系统了。
## dd 命令
在 Linux 中,有个非常好用的命令 `dd`,这个命令可以从一个文件或者磁盘复制到另一个文件或者磁盘。
基本用法如下:
```bash
dd if=[输入文件/设备] of=[输出文件/设备]
```
其中 `if``of` 后面可以填硬盘的设备文件,也可以填写一个 .img 文件的路径。`if` 后还可以填写 `/dev/zero`,这是一个特殊的设备文件,表示一直输出 0 (需要指定复制的大小,下面会说)。
> dd 命令默认不显示进度,可以通过添加 `status=progress` 参数显示进度。还可以切换到别的终端,使用 `kill -USR1 [pid]` 命令pid 可以使用 `ps -ef | grep "[你运行dd的具体命令]"` 获取,从左往右第二列就是),此时 dd 命令就会显示一个进度。`kill` 命令后面会讲到。
下面是 `dd` 命令其它常用的参数:
- `bs=[块大小]` 指定每次复制的大小,可使用单位如 `M` 等,常配合 count
- `count=[块个数]` 指定复制多少块,通常可设置 `bs=1M` 然后个数就是以 MB(MiB) 为单位的文件大小
## 回环设备
我们前面提到了像 `/dev/loop0` 这样的设备属于回环设备。
回环设备同样需要 root 才能操作。
回环设备通常指向一个镜像文件(如 img 格式)。要操作回环设备,我们需要使用 `losetup` 命令。
我们可以使用下面的命令查看空闲的loop设备这里其实还不存在对应的设备文件
```bash
losetup -f
```
会返回一个设备名,然后可以使用下面的方法进行关联:
```bash
losetup [设备文件] [你的img文件]
```
然后,我们可以使用上面的 `mount` 挂载回环设备。
要查看挂载的所有设备,可以使用
```bash
losetup -a
```
用完记得卸载(请先 `umount`
```bash
losetup -d [设备文件]
```
## 课后作业
由于这章长且十分重要,所以设置以下作业:
1. 在虚拟机中创建一个虚拟磁盘,大小大于等于系统磁盘
2. 给这个磁盘初始化分区表并且创建一个 xfs 分区,分区大小为整个磁盘的容量。
3. 尝试把这个磁盘挂载到 `/mnt/test`
4. 使用 dd 命令从 `/dev/zero` 读取,写入大小为 20MB 的空文件到 `/mnt/test/hello.img`
5. 卸载这个磁盘
6. 编辑 `/etc/fstab`,持久挂载这个磁盘到 `/mnt/backup` **(以后会用到)** 并重启
7. 使用 `losetup` 挂载刚刚创建的 `/mnt/backup/hello.img` 到一个回环设备
8. 格式化这个回环设备,并且往里写上一些留言
9. 可以把这个制作好的 img 文件发到论坛,让其它小伙伴看看你的成果
10. 你可以选择留下这个文件,也可以删除
---
> study-area-cn

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -0,0 +1,55 @@
# 在 VirtualBox 上创建虚拟磁盘
> 上级目录:[磁盘分区以及文件系统](../diskpart_and_filesystem.md)
按照上篇文件,我们接下来需要创建一个虚拟磁盘。
## 打开虚拟机
首先,打开你的 VirtualBox 并选择你的虚拟机。
![Open VM](./assets/2.2.2.vbox.1.png)
## 配置磁盘
我们打开设置
![Open Settings](./assets/2.2.2.vbox.2.png)
在左边找到 `存储`
![Choose Storage](./assets/2.2.2.vbox.3.png)
选择 `控制器: SATA`,如果你这里看不见这个选项,那么就选择 `xxx.vdi` 那一项所在的那一栏。
![Choose Item SATA](./assets/2.2.2.vbox.4.png)
然后我们点击右面添加磁盘的图标
![Add Disk](./assets/2.2.2.vbox.5.png)
选择创建
![Create Disk](./assets/2.2.2.vbox.6.png)
## 创建磁盘
我们就来到了创建磁盘的界面。
我们点击最下面的 `专家模式`
![Pro Mode](./assets/2.2.2.vbox.7.png)
然后我们设置磁盘大小,为了后面的学习,我们需要设置磁盘的大小 >= 原来的系统磁盘的大小。
![Set Size](./assets/2.2.2.vbox.8.png)
## 完成创建
我们点击 `完成`,然后会来到下面的界面。我们点击 `选择`,再点击一下 `确定`
![Finish Create](./assets/2.2.2.vbox.9.png)
恭喜你,磁盘创建完成!
---
请继续学习接下来的内容:[磁盘分区以及文件系统](../diskpart_and_filesystem.md)
---
> study-area-cn

View File

@ -0,0 +1 @@
# 在 VMWare Workstation 上创建虚拟磁盘

View File

@ -0,0 +1,47 @@
# 文件与路径
## Linux 的文件结构
按照前文,我们所说的 C 盘就是 `/` 了。那么,我们的 D 盘和 E 盘等等呢?它们则被系统放到了别的地方,你甚至可以自定义这些地方(其实 Windows 也可以,不过放得很深),不过一般被放在了 `/mnt``/run/mount` 或者 `/media/你的用户名` 下。(根据发行版和桌面环境的不同有所区别。如果你是安装上文安装的,那么应该在 `/media/你的用户名` 里面)
我们可以使用自带的文件管理器管理文件,就像 Windows 一样。
## 磁盘与挂载
你可能会发现一个东西:就是在根目录里,怎么还会有其它的磁盘呢?这是因为,在 Linux 系统下,所有的磁盘都需要挂载才能访问。而其它的磁盘必须挂载在根目录下。
之前我们说到了 Linux“一切皆文件”。我们的硬盘其实也是一个文件。其中通常 `/dev/sd+一个小写a-z字母`是你的硬盘(也有可能是 `/dev/nvmeX`X 是任意的数字) 或者 `/dev/mmcblkX`)。而分区是 `/dev/sd+一个小写a-z字母+X` nvme 比较不同),如 `/dev/sdc3`
我们可以使用 `lsblk` 命令查看所有的硬盘和分区。
但是,磁盘文件并不能直接访问,这时候我们需要挂载了。
如果你有一个桌面或者文件管理器,那么它就会自动帮你执行操作。点击一下你的磁盘就可以挂载了。
关于挂载的内容,这里就不过多讲述了,后面会提到。
### Linux 下的重要文件夹
刚装完 Linux你会看到根目录下面有一些目录都不要删
- `/boot` 存放系统启动信息
- `/dev` 大部分设备对应的文件,上文中提到了
- `/proc` 所有的进程信息(*nix 中“一切皆文件”的思想)
- `/lib` 存放所有的静态链接库和动态链接库。有时会有`lib64`
- `/etc` 存放软件配置文件(其实很乱,相当于杂项)
- `/opt` 扩展软件目录,少部分软件会装到这里
- `/tmp` 存放一些临时文件,通常被挂载到了内存
- `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。
- `/var` 可变动的文件(variable)
- `/var/mail` (本地邮件信箱)
- `/var/spool/news` (新闻组)
- `/var/run` (程序相关文件)
- `/var/lock` (程序锁相關)
- `/sys` 也是一个重要的设备目录
- `/home` 用户目录,相当于 `C:\Users`MacOS`/Users`
到这里,相信你已经掌握了 Linux 文件系统的简单结构。
---
> study-area-cn

View File

@ -0,0 +1,72 @@
# GZip 与 XZ
上篇文章中,我们介绍了 `tar` 命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 `tar` 命令可以调用 `gzip``xz` 进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 `gzip``xz` 命令本身吧。
> 这两个命令只能压缩单个文件,而不能压缩目录。
## GZip
> gzip是若干种文件压缩程序的简称通常指GNU计划的实现此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。gzip是一种在Linux系统中常见的命令行压缩工具。它使用DEFLATE压缩算法来减小文件的大小使文件更易于存储和传输。
>
> 事实上在许多软件中包括在你浏览互联网的过程中gzip已经被广泛使用。说不定你现在正在阅读的网页就是gzip压缩过的。
使用 `gzip` 命令压缩的文件的后缀和前面提到的 `.tar.gz` 一样,都是 `.gz` 结尾的压缩文件。
下面是 `gzip` 命令的一些常用选项:
- `-c`:将压缩后的数据输出到终端(但是你看不懂的乱码),而不是覆盖原始文件。通常配合后面会讲到的 `>``|` 使用。
- `-r`:递归压缩目录,包括子目录中的文件。注意:这里的递归是对每一个文件单独压缩,而不是对整个目录压缩成一个文件。
- `-v`:显示压缩或解压缩的详细信息。
- `-d`:解压缩文件。`gunzip` 命令等同于 `gzip -d`
- `-f`:强制压缩或解压缩,会覆盖原有的文件。
- `-k`:不删除原始文件。
- `-1``-9`:表示压缩等级,`-1` 表示最低压缩等级,速度快,`-9` 表示最高压缩等级,压缩率高。默认是 `-6`
> `gzip` 命令默认会删除原始文件,所以使用 `-f` 选项可以强制保留原始文件。
例如,我们可以使用以下命令来压缩一个文件:
```bash
gzip file.txt
```
这将会生成一个名为 `file.txt.gz` 的压缩文件,原始的 `file.txt` 文件将被删除。
要解压缩一个 `gzip` 压缩的文件,可以使用下面的命令:
```bash
gzip -d file.txt.gz
```
> 之前学习的 `tar` 命令的 `-z` 选项就等价于先用 tar 命令打包,再执行一遍 gzip 命令。
## XZ
> xz是一种压缩文件格式采用LZMA SDK压缩目标文件较gzip压缩文件(.gz或)小30%,较.bz2小15%。
>
> 前段时间 XZ 命令被爆出存在后门,差一点就进入了正式的发行版,这次漏洞如果成功会危害到数以万计的 Linux 设备,但成功被开源社区的人发现 ~~还是因为SSH程序启动慢了0.5秒)~~ 这也侧面体现出了XZ应用的广泛与 Linux 社区支持的安全性。
使用 `xz` 命令压缩的文件的后缀和前面提到的 `.tar.xz` 一样,都是 `.xz` 结尾的压缩文件。
`xz` 的基本选项和 `gzip` 基本一致,但是提供了以下几个提高性能的额外选项:
- `-T <线程数>` 可以使用多线程进行压缩,提高压缩速度。
- `-e` 可以使用更多的时间来提高压缩率
例如,我们可以使用以下命令来压缩一个文件:
```bash
xz file.txt
```
这将会生成一个名为 `file.txt.xz` 的压缩文件,原始的 `file.txt` 文件将被删除。
要解压缩一个 `xz` 压缩的文件,可以使用下面的命令:
```bash
xz -d file.txt.xz
```
---
> study-area-cn

View File

@ -0,0 +1,271 @@
# 文件权限管理
## 用户?用户组?
### 多用户操作系统的概念
不同于Windows这种基本上是单用户的操作系统而Linux这种Unix-like系统因为是集成了Unix概念的原因所以是实打实的多用户多任务分时操作系统。
Unix刚发明的时候电脑十分笨重且昂贵一台电脑不可能让一个用户独占必须同时分给多个用户使用。即便是最基本的电脑也能分出32个终端同时使用。这时候完善的用户与权限的管理就是十分必要的了。
Unix-like 系统的用户被组织成了一个类树状结构,看起来就像这样:
```text
All Users
|- root
| |- root
|
|- wheel
|- manager1
|- user1
```
### UID & GID
每个用户都有一个独一无二的编号,称作`UID`。每个用户组也有一个独一无二的编号,称为`GID`。
Unix-like使用UID而不是用户名区分用户如果你试着把两个账户的UID互相调换你会神奇的发现这两个用户的权限和所拥有的文件也被互换了。
UID的各个号段都已经被预先分配好了分配如下- 0 root权限最高的用户 - 1-999 系统服务保留UID下分两种 - 1-200 发行版自带软件所需帐号的UID - 201-999 用户自行创建的或用户所安装软件创建的账户的UID - 1000-60000 普通账户
除了root意外其他账户的权限基本没有区别。
GID基本就是用户组的ID此处不再赘述。
### `/etc/passwd`
所有用户的列表存储在`/etc/passwd`中这个文件在传统的Unix系统中同样存储所有用户的密码但是现在密码的存储已经分到了`/etc/shadow`中,让我们一起来看看这个两个文件的结构吧。
当你通过命令查看`/etc/passwd`的内容时,你应该会看到类似下面的内容:
```text
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
// ...
hmtsai:x:1000:1000:hmtsai:/home/hmtsai:/bin/bash
vboxadd:x:979:1::/var/run/vboxadd:/bin/false
```
> 注:查看文件更推荐使用`cat`命令,而不是各类编辑器,因为有些文件在被写入之后会出一些问题。
这个文件每行分为几个部分,格式如下:
```text
用户名:密码:UID:GID:其他信息:家目录位置:登录Shell
```
密码字段现在有三种可能性:- `x`表示密码在`/etc/shadow`中 - 留空表示密码为空,无需密码即可登录 - `!`表示该账户已经被禁用,无法登录
其他信息默认存储用户名,这个也可以存储其他信息,但是现在很少用到。
登录Shell指的是该账户登录后执行的程序默认为`/bin/bash`
你可能会发现有的用户的登录Shell是`/bin/nologin`或`/bin/false`,这代表这些用户不能登录。
> 你可以在终端里面执行`nologin`,会发现他会提示“该用户无法登录”,而`false`只是简单地返回一个错误返回值。
>
> 有关Shell的知识我们在后面会系统介绍简单来说Shell就是一个让用户交互来执行操作的程序。
### root用户
root顾名思义就是“根”它代表了Unix-like系统中的最高权限他的UID是0因为他是Unix-like系统中的第一个用户。
root有的时候也被称为“超级用户”这更表明了root在Unix-like系统中最高权限的地位。
> 虽然用root进行操作很方便但是我们还是更推荐使用其他的普通用户避免误操作导致系统GG。
## 所有者?同用户组?其他人?
### 所有者
文件的所有者默认是创建文件的人,一般来说也是对文件有最大权限的人。
所有者权限意义在于,你可以把像日记本这种较为隐私的信息设置为仅可自己读写,其他人只有读取的权限,这样就能达到防止篡改的目的。
### 同用户组
同用户组的权限设置在协同工作的时候比较有用,比如共同开发一个项目,我们就可以将这个项目文件夹的文件的权限设置为同用户组可以读写,这样就可以方便共同开发。
### 其他人
字面意思,不再赘述。
但是,由于`root`是系统的最高权限,所以`root`对所有文件都拥有读写的权限。
## 文件管理命令
### `ls`命令
之前对于`ls`只是简单介绍,接下来,我们将要仔细介绍`ls`的各个常用参数。
- `-a`参数a就是all的意思代表输出所有文件包括隐藏文件。
- `-l`参数l是long list的意思即长列表。
输出类似下面这样。
```text
总计 96
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 公共
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 模板
drwxr-xr-x 3 hmtsai hmtsai 4096 7月 9日 10:38 视频
drwxr-xr-x 3 hmtsai hmtsai 4096 7月15日 20:03 图片
drwxr-xr-x 4 hmtsai hmtsai 4096 7月10日 13:32 文档
drwxr-xr-x 2 hmtsai hmtsai 4096 7月16日 19:20 下载
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 音乐
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 桌面
```
- `-d`参数d表示direoctry表示仅列出目录不列出目录中的文件
### `less`命令
`less`用来分页查看文件内容,它从标准输入流或者指定的文件读入内容,然后分页在屏幕上显示。
> 什么是标准输入流呢?实际上就是`/dev/stdin`这个文件而已,与之对应的有标准输出和标准错误,分别是`/dev/stdout`和`/dev/stderr`.
### `chown`命令
chown命令光看名字就知道他是干什么的ch就是change嘛own自然就是owner所有者嘛。连起来就是修改所有者的意思啦
但是,光知道是干什么的可没有用,要想真正的用起来,还得知道这命令的格式之类的,接下来我们就来介绍一些常用的格式和参数吧!
```text
用法:/usr/bin/chown [选项]... [所有者][:[组]] 文件...
```
也就是如果我想要吧一个名叫`foo`的文件的所有者变为`wheel`组的`hmtsai`,我就得执行下面的命令:
```sh
chown hmtsai:wheel foo
```
如果你不想关心用户组的话,也可以直接执行:
```sh
chown hmtsai foo
```
`chown`这命令还有一些比较有意思的参数:
#### `-R`:递归操作文件或目录
> 首先,在主目录创建一些文件,来让我们继续学习这些命令。
>
> ```sh
> mkdir foo1
> cd foo1
> touch bar1
> mkdir test_chown
> cd test_chown
> touch bar2
> touch bar3
> ```
>
> 接下来,返回家目录:
>
> ```sh
> cd ~
> ```
指定`-R`选项后,将会遍历目录下的每一个文件(包括子目录下的文件),并执行指定的操作。
#### `-v`(`--verbose`)打印出更详细的信息
`-R`选项一般配合`-v`选项使用,毕竟递归操作属于较为危险的操作,最好保留详细的日志信息。
让我们观察一下这些选项会导致的结果,比如把这些文件和目录的所有者从`hmtsai`组的`hmtsai`改为`wheel`组的`hmtsai`用户试试?
```sh
chown -Rv hmtsai:wheel foo1
```
你将看见以下输出信息:
```text
'foo1/bar1' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
'foo1/test_chown/bar3' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
'foo1/test_chown/bar2' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
'foo1/test_chown' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
'foo1' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
```
> 与`chown`命令类似的还有`chgrp`命令,不过专门用于修改文件的用户组属性,这里不再赘述,可以通过`chgrp --help`来查看详细的用法。
### `chmod` 命令
`chmod`命令用于修改文件的“模式”(可以直接理解为权限)。主要有两种用法:
1. `chmod [选项]... 模式[,模式]... 文件...`
2. `chmod [选项]... 八进制模式 文件...`
#### 普通模式格式
第一种用法中的“模式”由三个部分组成,如下表:
|操作对象|操作|权限|
|--------|--------|--------|
|u,g,o|+,-|r,w,x|
这里面的u代表user所有者g代表group同用户组o代表others其他人。操作无非就是两种——增加和减少。权限三种读取写入执行。
> 文件的执行很好理解,但是目录的执行权限就比较特殊了,它代表的是“用户进入目录的权限”。但是不能进入目录不代表用户不能访问目录中的文件,用户仍然可以通过完整的路径访问文件就是了。
比如,我想要把`foo1`目录的权限设置为仅文件所有者可以执行、读取和写入,我们可以使用如下命令:
```sh
chmod go-rwx foo1
```
这时候再使用`ls -l`命令查看`foo1`目录的权限就可以看到g,o的所有权限都被取消了
```text
drwx------ 3 hmtsai wheel 4096 7月26日 18:33 foo1
```
接下来让我们考虑一个其他场景——如果我需要为不同的用户类别设置不同的权限怎么办?`chmod`的开发者们也考虑到了这个问题,于是我们可以通过逗号同时设置多个类别用户的权限。
比如,让`foo1`文件夹同用户组可以读写进入,其他人只可读取进入怎么样?
```sh
chmod g+rwx,o+rx foo1
```
再用`ls -l`命令去看,`foo1`目录的权限又变化了:
```text
drwxrwxr-x 3 hmtsai wheel 4096 7月26日 18:33 foo1
```
> 有些眼尖的同学可能会发现,目录的权限前面多了一个`d`,这是代表该权限所对应的是目录的象征,是`direoctry`的简写,很多软件也是这样区分目录和文件的!
#### 八进制模式格式
其实八进制模式也不是很难,只不过每个权限变成了三个数字相加的和,如下表所示:
|r|w|x|
|-|-|-|
|4|2|1|
八进制模式主要用于快速修改模式。比如我想让一个文件的模式变成rwxrwxrwx只需要`chmod 777 file`,而不是`chmod ugo+rwx file`。
> 为什么是421这三个数字呢这是因为他们的组合能够不重不信你试试看。
>
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。~~这个主要在懒得看模式的时候用(划掉)~~。因为比较简单,所以这里不再赘述。
#### 参数
`chmod`的参数与`chown`比较类似,于是在此不再赘述,详情可以通过`chmod --help`了解。
> 几乎所有命令都有一个`--help`参数,可以通过这个参数大概了解这个命令的用法。
## 课后任务
由于这篇的内容比较复杂,于是我们建议您完成以下任务进行练习:
- 将`foo1`文件夹的权限设置为`drwxrwxrwx`,并将完整日志打印到屏幕上。
- 将`test_chown`目录下的所有文件的权限设置为`755`,并且解释`755`在这里的含义,然后给出功能相同的使用字符模式的命令。
- 递归删除`foo1`文件夹,并且打印出`rm`命令每一步的操作。(可以参考`rm`命令的手册或者`rm --help`命令的输出)
---
> study-area-cn

View File

@ -0,0 +1,176 @@
# `tar` 打包软件
在使用Linux的过程中你可能会看见各种各样的压缩包文件比如`tar.gz`(最常见的 tar 压缩包格式)、`tar.bz2`、`tar.xz`、`tar`等等。这些文件都可以使用`tar`命令打包。
> 在linux上也有些常见的图形化压缩包管理器比如 `Ark`,但是它们远不及命令行工具的快速和稳定性。
tar压缩包都有一个显著的特征文件名中都带有一个 `.tar`tgz 等部分格式除外),但是后面的 `.gz` 等等又是什么呢其实tar 本身并不是一个压缩格式,它只是简单的把所有文件和文件夹打包到一起,而后面的 `.gz`、`.bz2`、`.xz` 等等才是压缩的格式。
> 关于其它格式的压缩包,比如`zip`、`rar`等,可以使用其它命令,比如`unzip`、`unrar`等。
绝大部分的linux发行版都预置了这个命令你通常无需额外安装直接使用便可。
## `tar` 命令
`tar`命令用于打包文件和目录,可以将多个文件和目录打包成一个文件,也可以将一个打包文件解压成多个文件和目录。
`tar`命令的基本语法如下:
```bash
tar [选项] [文件或目录]
```
下面是常见的选项:
- `-c`:创建新的压缩文件。
- `-x`:解压文件。
- `-t`:列出压缩文件中的所有文件。
- `-z`使用gzip压缩或解压 `.tar.gz` 格式)。
- `-j`使用bzip2压缩或解压 `.tar.bz2` 格式)。
- `-v`:显示操作的详细信息。
- `-f`:指定压缩包的文件名。
- `-C`:指定解压目录。
上面的内容看不懂也没关系,下面会一一介绍用法。
## 常见用法
### 打包文件为 .tar.gz
```bash
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
```
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录打包成一个名为 `archive.tar.gz` 的压缩包。
> 在 tar 中,是可以把多个 `-` 选项连用的,例如 `-z``-c` 可以写成 `-zc`(顺序无所谓),但是需要保证像 `-f` 这样带有参数的选项放在最后。除了 tar 命令很多linux的基本命令都可以这么用包括我们之前学习的 cp, ls 等命令。
### 解压 .tar.gz 文件
```bash
tar -zxvf archive.tar.gz
```
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
> 这两个用法应该和是我们平时见得最多的用法了。熟练掌握这几个用法你就可以安装绝大部分的压缩包形式的linux软件了。
## 完整用法
接下来,我们来一起看看 tar 都有什么魔力吧。
> 下面会有一个常见的参数 `-v`,表示显示操作的详细信息。它会列出操作的所有文件。如果不加上这个参数,我们就看不到任何输出。当然,你也可以省略。
首先,我们进行压缩包操作,都要有个压缩包吧,所以下面的所有命令,都要加入 `-f 你的压缩包名字` 这个选项指定操作的压缩包文件。
### 压缩格式
我们前面提到了tar只是个打包的格式并不能压缩。但是tar可以调用其它的压缩工具比如gzip、bzip2、xz等来对打包的文件进行压缩。
下面是一些常用的参数:
- `-z`使用gzip压缩或解压 `.tar.gz` 格式)。
- `-j`使用bzip2压缩或解压 `.tar.bz2` 格式)。
- `-J`使用xz压缩或解压 `.tar.xz` 格式)。
> 若列出文件,可以省略压缩格式,后面会讲到。
### 创建压缩包
要创建压缩包,我们可以使用 `-c` 选项。
例如上文的
```bash
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
```
就是创建一个名为 `archive.tar.gz` 的压缩包,使用 gzip 压缩格式。
### 列出压缩包中的文件
有了压缩包,我们该怎么验证,或者别人发来了一个压缩文件,我们怎么查看里面的内容呢?
我们可以使用 `-t` 选项。
```bash
tar -ztvf archive.tar.gz
```
上面的命令会列出 `archive.tar.gz` 压缩包中的所有文件。
### 解压压缩包
解压压缩包,我们可以使用 `-x` 选项。
例如上文的
```bash
tar -zxvf archive.tar.gz
```
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
> 值得注意的是,这个操作不会新建一个文件夹。所以在解压之前,建议先看一看压缩包内是否有一层文件夹。尤其是当前目录文件比较多时,容易把文件解压到错误的位置。
### 指定解压目录
如果我们需要改变解压的位置,我们可以使用 `-C` 选项,例如解压到新建的文件夹。
例如上文的
```bash
tar -zxvf archive.tar.gz -C ./archive
```
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
### 添加文件
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
例如上文的
```bash
tar -rvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
```
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录添加到 `archive.tar.gz` 压缩包中。
### 删除文件
如果我们需要从压缩包中删除文件,我们可以使用 `--delete` 选项。
```bash
tar -vf archive.tar.gz --delete file_or_dir
```
上面的命令会从 `archive.tar.gz` 压缩包中删除 `file_or_dir`
### 更新文件
如果我们需要更新压缩包中的文件,我们可以使用 `-u` 选项。这个选项类似于 `-r`,只不过是替换。
```bash
tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
```
> tar 的用法很多,但是常见的用法也就那么几种。多看,多用,你很快就能掌握。
## 课后作业
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。
3. 把这个文件发给小伙伴,当然也可以发到论坛里。
4. 使用 tar 命令查看并且解压这个压缩包里的文件
5. 使用 cat 命令,看看文件里写的是什么
---
> study-area-cn

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 306 KiB

View File

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 306 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 412 KiB

View File

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

Before

Width:  |  Height:  |  Size: 652 KiB

After

Width:  |  Height:  |  Size: 652 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 294 KiB

After

Width:  |  Height:  |  Size: 294 KiB

View File

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 312 KiB

View File

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View File

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 262 KiB

View File

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

View File

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 218 KiB

View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View File

Before

Width:  |  Height:  |  Size: 498 KiB

After

Width:  |  Height:  |  Size: 498 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -1,18 +1,18 @@
# 在 VirtualBox 上安装 Rocky Linux
> 上级目录:[Rocky Linux初见](../rocky_first_met.md)
> 上级目录:[Rocky Linux 初见](../rocky_first_met.md)
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux初见](../rocky_first_met.md)中有说明,此处不再赘述。
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux 初见](../rocky_first_met.md)中有说明,此处不再赘述。
## 0x00 下载并安装 VirtualBox
## 下载并安装 VirtualBox
我们要在虚拟机上安装Linux首先我们得要有个虚拟机软件。本篇文章选择了一个免费并且十分好用的虚拟机——VirtualBox。
我们要在虚拟机上安装 Linux首先我们得要有个虚拟机软件。本篇文章选择了一个免费并且十分好用的虚拟机——VirtualBox。
如果你已经安装过了,那么这一段可以直接跳过。
这里不过多介绍VirtualBox只简单介绍一下 VirtualBox(下文可能会简称vbox) 的安装和使用。
这里不过多介绍 VirtualBox只简单介绍一下 VirtualBox(下文可能会简称 vbox) 的安装和使用。
首先,我们需要使用你的浏览器去[VirtualBox官网](https://www.virtualbox.org/)(`www.virtualbox.org`)下载一份安装包。
首先,我们需要使用你的浏览器去[VirtualBox 官网](https://www.virtualbox.org/)(`www.virtualbox.org`)下载一份安装包。
你应该会看见一个全是英文的页面,不过不要害怕,即使你的英文不好,你只要跟着下面的操作来就可以了。
@ -26,11 +26,11 @@
然后我们运行安装程序(应该会在下面或者右面的下载列表,点一下就可以),又会弹出一个界面。我们此时只需要忽略所有警告无脑 `下一步`(Next) 即可。
> 注如果你已经在使用任何的Linux系统请尽可能切换到 x11 桌面环境(小白可以不用管这一条)。
> 注:如果你已经在使用任何的 Linux 系统,请尽可能切换到 x11 桌面环境(小白可以不用管这一条)。
然后我们启动 vbox进行下一步安装。
## 0x01 新建虚拟机
## 新建虚拟机
软件我们有了,接下来我们要给虚拟机注入灵魂——操作系统了
@ -39,7 +39,7 @@
启动软件后,我们会看到如下界面:
![Home Page](./assets/2.4.vbox.1.png)
> 注本界面为linux下截图可能会因操作系统和软件版本而有略微不同
> 注:本界面为 linux 下截图,可能会因操作系统和软件版本而有略微不同
然后我们选择 `新建` 一个虚拟机
![New VM](./assets/2.4.vbox.2.png)
@ -82,7 +82,7 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
(截至本篇编写时Intel最新的酷睿还是13代2024.6)
```
然后勾选上`启用 EFI` (在vbox6可能会存在bug使用vbox6的建议升级一下)
然后勾选上`启用 EFI` (在 vbox6 可能会存在 bug使用 vbox6 的建议升级一下)
![Set VM Hardware](./assets/2.4.vbox.6.png)
@ -91,14 +91,14 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
我们只需要关心画红框的磁盘大小。
如果你的磁盘空间足够那么你开多少都行一般开40GB就够了。
如果你的磁盘空间足够,那么你开多少都行,一般开 40GB 就够了。
不过即使你的硬盘空间再紧张这个数也不能低于10GB。~~(不过ISO镜像都超过10GB了)~~
不过即使你的硬盘空间再紧张,这个数也不能低于 10GB。~~(不过 ISO 镜像都超过 10GB 了)~~
接下来点击`完成`就大功告成啦!
![Finish](./assets/2.4.vbox.8.png)
## 0x02 设置网络
## 设置网络
先不要急性子启动虚拟机,这样启动的虚拟机是没有网络的。
@ -120,19 +120,19 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
至此,我们终于可以启动虚拟机了!
## 0x03 启动虚拟机
## 启动虚拟机
然后我们点击绿色的`启动`按钮
![Start VM](./assets/2.4.vbox.13.png)
稍等片刻会弹出一个新的窗口你会看到一片黑上面还有着文字那就是GRUB了。
稍等片刻,会弹出一个新的窗口,你会看到一片黑,上面还有着文字,那就是 GRUB 了。
![GRUB](./assets/2.4.vbox.14.png)
---
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装。
## 0x04 安装增强功能
## 安装增强功能
> 注:请安装完系统再进行本段内容
@ -158,4 +158,5 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
然后重启虚拟机,大功告成
---
> study-area-cn

View File

@ -1,64 +1,62 @@
# 在 VMWare Workstation 上安装
> 上级目录:[Rocky Linux初见](../rocky_first_met.md)
> 上级目录:[Rocky Linux 初见](./install_rocky_linux_intro.md)
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux初见](../rocky_first_met.md)中有说明,此处不再赘述。
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux 初见](./install_rocky_linux_intro.md)中有说明,此处不再赘述。
## 0x00 下载并安装 VMWare Workstation Pro
## 下载并安装 VMWare Workstation Pro
假设说你要安装Linux的话,你需要一个虚拟机软件,本部分将使用VMWare Workstation Pro,一款十分好的多平台虚拟机软件.
假设说你要安装 Linux 的话,你需要一个虚拟机软件,本部分将使用 VMWare Workstation Pro一款十分优秀的跨平台虚拟机软件。
> 当然,[VirtualBox](install_in_vbox.md)也一样
假如说你已经安装过了,你完全可以跳过这一段。
假如说你已经安装过了,你完全可以跳过这一段.
> 这里可能有朋友问VMWare Workstation Pro不是付费的吗?你这样难道想让我们去用盗版?
>
> 这点不用担心,因为在 VMware 被博通 Broadcom 收购了之后,博通就宣布 VMWare WorkStation Pro 的 17.5.2 版本对个人用户免费&ensp;~~(什么资本家大发慈悲)~~,所以盗版的事情各位大可不必担心。
这里可能有朋友问,VMWare Workstation Pro(下文简称VMWW)不是付费的吗?你这样难道想让我们去用盗版?
原本你应该去注册一个博通的账号并且去到 Broadcom Support Portal 搞一大堆麻烦事情,但是我相信各位的精力是有限的,所以说这里直接贴出提取到的下载链接`https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.5.2/23775571/windows/core/VMware-workstation-17.5.2-23775571.exe.tar`
这点不用担心,因为在VMware被博通Broadcom收购了之后,博通就宣布VMWW的17.5.2版本对个人用户免费&ensp;~~(什么资本家大发慈悲)~~,所以盗版的事情各位大可不必担心.
在你下载下来之后是一个 tar 文件,如果说你的电脑没有可以解压这种格式的软件,那请你去下载一个名为 7-Zip 的软件 `https://7-zip.org/a/7z2407.exe` 然后安装,记得关联格式。
原本来说,你应该去注册一个博通的账号并且去到Broadcom Support Portal搞一大堆麻烦事情,但是我相信各位的精力是有限的,所以说这里直接贴出提取到的下载链接`https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.5.2/23775571/windows/core/VMware-workstation-17.5.2-23775571.exe.tar`
在您下载下来之后是一个tar文件,如果说您的电脑没有可以解压这种格式的软件,那请您去下载一个名为7-Zip的软件`https://7-zip.org/a/7z2407.exe`然后安装,记得关联格式.
在解压出来之后,我们就可以运行安装程序,先Next,同意完协议并Next后记得勾选一下`安装键盘驱动`(如下图)
在解压出来之后,我们就可以运行安装程序,先 Next同意完协议并 Next 后记得勾选一下 `安装键盘驱动`(如下图)
![Keybord Driver](./assets/2.4.vmware.1.png)
然后就可以一路Next下去了,安装完成后会有一次重启,在重启完毕后,我们该启动VMWW,进行下一步安装了.
然后就可以一路 Next 下去了,安装完成后会有一次重启,在重启完毕后,我们该启动 VMWare WorkStation Pro进行下一步安装了。
>假如说这里有朋友发现VMWW的页面是英文的,打开VMWW的`快捷方式`,在目标后面添加一个" --locale zh_CN"之后重启VMWW就好了.
> 假如说这里有朋友发现 VMWare WorkStation Pro 的页面是英文的,打开 VMWare WorkStation Pro 的`快捷方式`,在目标后面添加一个 ` --locale zh_CN`之后重启 VMWare WorkStation Pro 就好了。
## 0x01 新建虚拟机
## 新建虚拟机
很好,现在您已经拥有了一个趁手的工具,那就该干点什么,也就是注入灵魂——操作系统了
软件我们有了,接下来我们要给虚拟机注入灵魂——操作系统了。
不过在开始安装系统前,我们需要新建一个`虚拟机`.
不过在开始安装系统前,我们需要新建一个 `虚拟机`
启动软件后,我们会看到像这样的页面:
启动软件后我们会看到像这样的页面:
![Home Page](./assets/2.4.vmware.2.png)
然后点击 `创建新的虚拟机` ,您会看到这样的界面:
然后点击 `创建新的虚拟机`,你会看到这样的界面:
![New VM Page](./assets/2.4.vmware.3.png)
保持典型不变,点击下一步,点击`安装程序光盘映像文件(iso)(M)`,然后点击游览,找到你镜像下载到的位置,选中镜像,然后打开:
保持典型不变,点击下一步,点击 `安装程序光盘映像文件(iso)(M)`,然后点击浏览,找到你镜像下载到的位置,选中镜像,然后打开:
![Choose ISO Img](./assets/2.4.vmware.3.png)
接着点击下一步,填写`虚拟机的名字`还有`虚拟机的安装位置`(这一步记得选一个剩余空间比较大的分区)
接着点击下一步,填写 `虚拟机的名字` 还有 `虚拟机的安装位置`(这一步记得选一个剩余空间比较大的分区)
![Set VM](./assets/2.4.vmware.5.png)
现在开始设置`虚拟磁盘`,这相当于您电脑的储存空间,这里直接引用隔壁VBox安装的话:
现在开始设置 `虚拟磁盘`,这相当于你电脑的储存空间,这里直接引用隔壁 VBox 安装的话:
如果你的磁盘空间足够那么你开多少都行一般开40GB就够了。
如果你的磁盘空间足够,那么你开多少都行,一般开 40GB 就够了。
不过即使你的硬盘空间再紧张这个数也不能低于10GB。~~(不过ISO镜像都超过10GB了)~~
不过即使你的硬盘空间再紧张,这个数也不能低于 10GB。~~(不过 ISO 镜像都超过 10GB 了)~~
![Set Virtual Disk](./assets/2.4.vmware.6.png)
然后我们就来到了配置设置页面,现在点击`自定义硬件`,还是引用Vbox安装的话:
然后我们就来到了配置设置页面,现在点击`自定义硬件`,还是引用 Vbox 安装的话:
我们可以根据需要填写`内存大小`和`处理器`(处理器核心数)。如果你还不知道这两个是什么意思,请回看上一大章节。
@ -71,42 +69,40 @@
如果你的电脑内存是 4GB
那么你应该填写 `2048MB`(2GB) 为系统留出足够空间
如果你的电脑内存是 8GB
这时你填写 `6144MB`(6GB) 即可。如果你希望同时在主机干点别的的话,填`4096MB`(4GB) 即可
如果你的电脑内存 > 8GB
这时你填多少都可以,只不过最好各留出最少 4G(4096MB) 的内存
例如笔者的电脑是 12GB(49152MB),那么就可以填写 `8192MB`(8GB)
这时你填写 `4096MB`(6GB) 即可。
一般来说,分配实体机内存的一半即可。
CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电脑至少2核起步。
如果你在使用13代或以上的Intel酷睿那么你填写你的大核心(P核)的数量就行。
(截至本篇编写时Intel最新的酷睿还是13代2024.6)
CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电脑至少 2 核起步。
如果你在使用 13 代或以上的 Intel 酷睿,那么你填写你的大核心(P核)的数量就行。
(截至本篇编写时 Intel 最新的酷睿还是 13 2024.6)
```
对于写者来说,设置完之后的页面如下:
对于写者来说设置完之后的页面如下:
![VM Settings](./assets/2.4.vmware.7.png)
最后关闭设置页面,点击`完成`,虚拟机就大功告成了!(如果你勾选了`创建后启动此虚拟机`那么则会自动启动)
最后关闭设置页面,点击`完成`,虚拟机就大功告成了!(如果你勾选了 `创建后启动此虚拟机` 那么则会自动启动)
## 0x03 启动虚拟机
## 启动虚拟机
假如说您在上一部勾选了`创建后启动此虚拟机`的话,您的虚拟机应该现在已经启动了,但是以防万一,这里还是讲解一下如何在VMWW里启动虚拟机:
假如说你在上一部勾选了 `创建后启动此虚拟机` 的话,你的虚拟机应该现在已经启动了,但是以防万一,这里还是讲解一下如何在 VMWare WorkStation Pro 里启动虚拟机:
第一步,选中`虚拟机`:
第一步选中`虚拟机`:
![Select VM](./assets/2.4.vmware.8.png)
第二步,点击`开启此虚拟机`:
第二步点击`开启此虚拟机`:
![Start VM](./assets/2.4.vmware.9.png)
等一会后,会出现一个类似这样的页面,这里直接选中第一项然后回车就可以了:
等一会后,会出现一个类似这样的页面,这里直接选中第一项然后回车就可以了:
![Boot](./assets/2.4.vmware.10.png)
---
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装.
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装。
---
> study-area-cn
> study-area-cn

View File

View File

@ -1,33 +1,33 @@
# 安装 Rocky Linux
按照上面的步骤,我相信你应该已经配置完了你的虚拟机/实体机进入了GRUB界面。
按照上面的步骤,我相信你应该已经配置完了你的虚拟机/实体机,进入了 GRUB 界面。
![GRUB](./assets/2.4.install.1.png)
## 0x00 引导并进入安装页面
接下来我们需要使用键盘的上下方向键选中GRUB菜单的第一项才能进入安装。
接下来,我们需要使用键盘的上下方向键选中 GRUB 菜单的第一项,才能进入安装。
![GRUB Choose](./assets/2.4.install.2.png)
记住选择完了不要在那里干等着GRUB还没有那么智能你得按一下 回车`[Enter]` 让GRUB明白你选择的是哪一项。
记住选择完了不要在那里干等着GRUB 还没有那么智能,你得按一下 回车`[Enter]` 让 GRUB 明白你选择的是哪一项。
之后是一段启动过程了启动过程不会等很长时间2-3分钟就能完成。
之后是一段启动过程了启动过程不会等很长时间2-3 分钟就能完成。
![System Starting](./assets/2.4.install.3.png)
然后是选择语言。如果你是在虚拟机安装的,语言一般都会自动选择。直接按右下角蓝色按钮继续即可。
![Choose Language](./assets/2.4.install.4.png)
如果默认语言是英文怎么办?你可以在左侧列下方输入`Chinese`点击第一个蓝色项目在右边也点击第一个简体中文在中国香港和中国台湾的小伙伴分别点第3个和第2个此时你的语言应该就变成了中文。
如果默认语言是英文怎么办?你可以在左侧列下方输入`Chinese`,点击第一个蓝色项目,在右边也点击第一个(简体中文,在中国香港和中国台湾的小伙伴分别点第 3 个和第 2 个),此时你的语言应该就变成了中文。
接下来我们就来到了安装界面。
![Install Page](./assets/2.4.install.5.png)
我们在接下来的步骤需要填写以下项目:
* 软件选择
* 安装目标位置
* root密码
* 创建用户
- 软件选择
- 安装目标位置
- root 密码
- 创建用户
![Install Page Items](./assets/2.4.install.6.png)
@ -35,7 +35,7 @@
软件选择部分相对较简单。
如果你是虚拟机或者准备拿来当作主力电脑,那么就选`工作站`,如果你是用于搭建网页,就选`带 GUI 的服务器`(不推荐GUI增加工作负荷)或`服务器`(命令操作上手难度较大不过可以配合web面板并且要有两台电脑)
如果你是虚拟机或者准备拿来当作主力电脑,那么就选`工作站`,如果你是用于搭建网页,就选`带 GUI 的服务器`(不推荐GUI 增加工作负荷)或`服务器`(命令操作,上手难度较大,不过可以配合 web 面板,并且要有两台电脑)
如果你选择了`工作站`,那么推荐把右面的`GNOME 应用程序`勾上,包含了文本编辑器等一大堆功能(非必选)。
@ -51,7 +51,7 @@
> 在安装前请确保格式化并删除了你硬盘的所有分区!(虚拟机不用管)
如果你不需要安装Windows或者你在虚拟机里安装请参考下面的方案。
如果你不需要安装 Windows或者你在虚拟机里安装请参考下面的方案。
![Disk Page](./assets/2.4.install.8.png)
我们只需要在`本地标准磁盘`点击勾选我们的磁盘(已经钩了就不用再点),然后点`完成`即可。
@ -69,17 +69,17 @@
### 单硬盘多系统
> 新手请勿尝试!系统容易无法引导!请至少准备一个急救盘(WinPE推荐WePE确保即使引导配置错误也能够修复)
> 新手请勿尝试!系统容易无法引导!请至少准备一个急救盘(WinPE推荐 WePE确保即使引导配置错误也能够修复)
这是三种里面最难的情况了。
//TODO: 待补充...
## 0x03 设置root密码/新建帐号
## 0x03 设置 root 密码/新建帐号
接下来我们设置用户名和密码。
首先设置Root密码。这个用户具有系统的最高权利可以管理系统的一切事物哪怕删除系统运行`rm -rf /*`(开个玩笑,请勿执行)都可以。
首先设置 Root 密码。这个用户具有系统的最高权利,可以管理系统的一切事物,哪怕删除系统运行`rm -rf /*`(开个玩笑,请勿执行)都可以。
我们输入两次密码即可。如果你在你的服务器上使用,最好取消勾选`锁定Root账户`,然后点击确定返回。如果你发现确定点一次没有用,那么是你的密码过于简单,请再点一次确认或更改您的密码。
@ -98,11 +98,12 @@
我们再看一下配置完毕的页面:
![Before Install](./assets/2.4.install.12.png)
点击`开始安装`开始你的Linux学习之路
点击`开始安装`,开始你的 Linux 学习之路!
接下来你可以去泡杯茶或去干点别的事情。安装过程会耗费大约30分钟到1小时。请耐心等待……
接下来,你可以去泡杯茶或去干点别的事情。安装过程会耗费大约 30 分钟到 1 小时。请耐心等待……
---
...... 一小时以后 ......
---
@ -111,7 +112,7 @@
安装完成!
安装完成后请在虚拟机的配置中卸载你的ISO文件实体机请拔出你的U盘然后点击重启。
安装完成后,请在虚拟机的配置中卸载你的 ISO 文件,实体机请拔出你的 U 盘,然后点击重启。
## 0x05 首次登录
@ -139,4 +140,5 @@
//TODO:待补充...
---
> study-area-cn

View File

@ -1,10 +1,10 @@
# Rocky Linux 初见
# Rocky Linux 安装
既然我们的标题是`Rocky Linux 初见`,那么我们肯定要亲自动手安一遍系统。
既然我们要学习 Linux,那么我们肯定要亲自动手安一遍系统。
不过安系统并不是一个难事,有了前面的铺垫,其实自己也是可以搞明白的。
> 开始安装前请确保你有着充足的时间1-2个小时并确保不会断电安装系统比较耗费时间
> 开始安装前请确保你有着充足的时间1-2 个小时)并确保不会断电,安装系统比较耗费时间
---
@ -18,16 +18,16 @@
在你的电脑安装 ---------
```
1. 0x00 下载ISO
2. 0x01 以下三种安装方式任选其一
1. 下载 ISO
2. 以下三种安装方式任选其一
* [在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)
* [在 VirtualBox 安装](./install_rocky_linux/install_in_vbox.md)
* [在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)
- [在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)
- [在 VirtualBox 安装](./install_rocky_linux/install_in_vbox.md)
- [在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)
3. 0x02 [安装 Rocky Linux](./install_rocky_linux/install_rocky_linux.md)
3. [安装 Rocky Linux](./install_rocky_linux/install_rocky_linux.md)
## 下载ISO
## 下载 ISO
下面是 Rocky Linux 的官网:
@ -35,7 +35,7 @@
下面是几个可以直接下载 ISO 文件的链接:
> ISO文件较大(`10GB`左右),建议使用专业的下载工具,如`IDM`(Windows下收费软件)~~`迅雷`~~(有服务器加速,较快,但是有广告等问题)`Motrix`(跨平台开源,不过较慢)~~PCL(一个某游戏启动器,不过下载文件超级快)~~ 等
> ISO 文件较大(`10GB`左右),建议使用专业的下载工具,如`IDM`(Windows 下收费软件)~~`迅雷`~~(有服务器加速,较快,但是有广告等问题)`Motrix`(跨平台开源,不过较慢)~~PCL(一个某游戏启动器,不过下载文件超级快)~~ 等
>
> [官方](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-dvd.iso) (国内不推荐,网速较慢,某雷可以忽略,但官方有提供[种子文件](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-dvd.torrent))
>
@ -75,17 +75,20 @@ OS 2: Windows 11
1. VMWare Workstation Pro
这是一款常见的企业级虚拟机软件。自从被博通收购后,产品对个人用户免费。
优点: 有完整的官方文档支持,新手教程多
缺点: 不开源,异常问题较难解决,被博通收购后下载链接很难找并且需要登录
这是一款常见的企业级虚拟机软件。自从被博通收购后,产品对个人用户免费。
优点: 有完整的官方文档支持,新手教程多
缺点: 不开源,异常问题较难解决,被博通收购后下载链接很难找并且需要登录
2. VirtualBox
这是一款开源免费的虚拟机软件,由 Oracle 维护。
优点: 社区支持强大,开源,自定义程度高
缺点: 新手使用会略微有些难度(不过也很简单)
这是一款开源免费的虚拟机软件,由 Oracle 维护。
优点: 社区支持强大,开源,自定义程度高
缺点: 新手使用会略微有些难度(不过也很简单)
- **[在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)**
- **[在 VirtualBox 上安装](./install_rocky_linux/install_in_vbox.md)**
- **[在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)**
* **[在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)**
* **[在 VirtualBox 上安装](./install_rocky_linux/install_in_vbox.md)**
* **[在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)**
---
> study-area-cn

View File

@ -0,0 +1,161 @@
# Linux 常识
当你照着上面的教程,费尽千辛万苦,历经千难万险,终于安装上 Rocky Linux 后,你肯定会有一个问题:我 C 盘呢?
其实Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。
> 注意以下操作若无特殊说明输入命令均在终端Terminal下操作可以按下 C-M-T 呼出。
## Linux 路径的格式
> 注文件夹Folder和目录Directory实际上是一个东西。只不过我们在图形界面下更习惯叫文件夹终端命令行下更喜欢叫目录。
Linux 中目录的分隔符是`/`,而非 Windows 中的`\\`。
Linux 中,每个文件夹下,都有两个特殊的目录,就是`.`和`..`
1. `.` 代表当前所在的文件夹
2. `..` 代表上一级文件夹,而 `/` 的上级文件夹就是它自己
> 这块似乎有一点不太好懂,我们通过实际的例子解释一下:
> 假设我们当现在目录`/foo/bar`下,那么`/foo/bar/.`就等同于`/foo/bar``/foo/bar/..`,就等同于`/foo`
如果一个路径以`/`开头,那代表这个目录是从根目录开始的,根目录就相当于 Windows 上的 C 盘,是存放系统的位置。
> 注:在 Windows 下也有一个隐藏的根目录,不过我们几乎访问不到也访问不了
而你所看到的主文件夹(或者是用户目录),位于 `/home/你的用户名`Linux 中 root 用户比较特殊,就是`/root`),相当于 `C:\Users\你的用户名`MacOS`/Users/你的用户名`)。在这里你可以放置你的个人文件和代码。
> 实际上,`/`只是一块硬盘的挂载点,后面会讲到
除了这些之外,还有一个路径,是永远指向你的家目录的,这就是`~`。
假设你的用户名是`hmtsai`,那么`~`是等同于`/home/hmtsai`的。
## 基本操作
### `ls` 列出文件
`ls`,顾名思义,就是 list列出当前目录下的文件他的基本使用方法也很简单
```bash
ls <目录>
```
这个命令就会列出那个目录下的文件。如果没有参数ls 默认列出当前目录下的文件。你应该还能看见颜色,不同颜色就代表了文件(夹)的不同类型。
`ls` 还有一些其它的参数,比如输入 `ls -al` 就可以看见纵向排列的文件详细信息了,输入文件名就可以筛选出那个文件夹内/文件本身。
### `pwd` 打印工作目录
`pwd`,名字拆解出来,就是 print work directory。也就是打印工作目录这个命令可以让我们快速了解到我们当前所在的目录。
> 工作目录work directory可以简单的理解为用户当前所在的目录在以后讲解 shell 的时候会进一步讲解这些概念。
使用方法也很简单:
```bash
pwd
```
这样就会输出当前的工作目录。
### `cd` 切换目录
cd更好理解了就是 change directory切换目录的意思。
使用方法更简单了:
```bash
cd <目录>
```
这样,就会把当前的工作目录切换到指定的目录了。
> 一般情况下,只执行`cd`是和`cd ~`等价的。
### `mkdir` 新建文件夹
我们刚学习使用 Windows 时,除了开机,第一件事应该就是新建文件夹了。
这个命令的意思就是字面上的make directory新建文件夹。
你可以使用下面的命令:
```bash
mkdir <目录名>
```
另外,如果你想一次性创建多层目录,那么可以使用 `mkdir -p <多层目录>`,例如 `mkdir -p learn/linux/study`
### `mv` 移动文件
那我们的重命名,剪切,复制,粘贴去哪了呢?在 Linux 命令行中,其实没有剪切。
```bash
mv <你想移动的目录> <目标或新的名字>
```
我们可以使用上面的命令移动或者重命名一个目录(是的,它们是一个命令)。
> 在同一磁盘内移动速度很快,但是跨磁盘就不一定了
### `cp` 复制文件
而复制也是一个道理:
```bash
cp <你想复制的文件或目录> <新文件或目录的名字>
```
### `rm` 删除文件
都有复制了,怎么能没有删除呢?
> 删除危险性较高,不要删除根目录或者其它重要目录!回车前再三确认!
```bash
rm <你想删除的文件>
```
另外,删除文件夹的操作有点不一样:
```bash
rm -r <你想删除的文件夹>
```
在`r`后面加上`f`就是强制删除了,而 `rm -rf /*` 就是强制删除根目录下所有的文件。以后看到这串命令不要被骗了!
> 如果你真的想尝试,那么请一定在虚拟机下!搞坏系统作者可不负责!
### `nano`简单的文档编辑器
![Nano 的界面](./assets/2.5.1.png)
`nano`实际上就是被誉为“神之编辑器”的 Emacs 编辑器的极限精简版,所有的基本操作都被标在了界面的下方
```text
^G 帮助 ^O 写入 ^F 搜索 ^K 剪切 ^T 执行命令 ^C 位置 M-U 撤销 M-A 设置标记 M-] 至括号 M-B 上一个
^◂ 向后 ^◂ 前一个字 ^X 离开 ^R 读档 ^\ 替换 ^U 粘贴 ^J 对齐 ^/ 跳行 M-E 重做 M-6 复制
^B 向前搜索 M-F 下一个 ▸ 向前 ^▸ 后一个字
```
> 以后,我们会学习一款使用更广泛的编辑器:`Vim`(被誉为“编辑器之神”)。
### `poweroff`关机
很多同学刚使用 Linux 的时候,最大的问题就是:怎么关机?
实际上关机很简单,只需要键入:
```shell
sudo poweroff
```
回车执行之后会提示你输入密码,直接输入就可以了,输入的时候是没有回显的,不用担心,输入完直接回车即可。
> 关于`sudo`是什么意思,这个在以后我们讲解权限的时候会提到,你现在就理解为是用来获取系统的最高权限的意思就 ok 了。
### `man`用户手册
man是 manual手册的意思你可以通过简单地输入 `man <命令>`来使用。

35
src/learn_linux_basic/linux_distro.md Normal file → Executable file
View File

@ -6,19 +6,19 @@
如果你不是理解以上的内容,那么请跟随我往下看:
我们前文提到了`Linux Kernel`。Linux Kernel只是一个操作系统的核心甚至连一个能够操作的界面都没有。而我们常常提到的`Linux`通常指Linux发行版而发行版就相当于在Linux Kernel外面添加了诸多软件可以让Linux“开箱即用”(我们有时说的`OOBE`就是“开箱即用体验”的意思)。
我们前文提到了`Linux Kernel`。Linux Kernel 只是一个操作系统的核心,甚至连一个能够操作的界面都没有。而我们常常提到的`Linux`通常指 Linux 发行版,而发行版就相当于在 Linux Kernel 外面添加了诸多软件,可以让 Linux“开箱即用”(我们有时说的`OOBE`就是“开箱即用体验”的意思)。
这些发行版附带了很多来自 GNU 的开源软件,所以这类发行版也被称为`GNU/Linux 发行版`。
Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`、`awk`、`bash`,甚至最简单的`ls`、`cp`,都来自于 GNU。
Linux 基本命令中的极大部分都来自 GNU 项目中的 coreutils,如 `cat`、`grep`、`awk`、`bash`,甚至最简单的`ls`、`cp`,都来自于 GNU。
> 当然 GNU 工具并不是唯一的选择,常见的还有嵌入式的`busybox`等。
如果没有这些工具,你甚至连一个只能敲命令的黑框框(tty)都见不到。
> 目前唯一常用的的非 GNU/Linux 发行版是 Android AOSP就是我们平常用的安卓手机(准确来说AOSP只是个基础)。
> 目前唯一常用的的非 GNU/Linux 发行版是 Android AOSP就是我们平常用的安卓手机(准确来说 AOSP 只是个基础)。
>
> AOSP使用了非常复杂的方法把内核独立出来包括 glibc 等东西都重写了一遍,从而无需遵守内核和 GNU 各个组件的 GPL 开源协议。(不过这事一直都有争议)
> AOSP 使用了非常复杂的方法把内核独立出来,包括 glibc 等东西都重写了一遍,从而无需遵守内核和 GNU 各个组件的 GPL 开源协议。(不过这事一直都有争议)
用我们前面的比喻:内核就是一辆汽车的引擎,而软件就是汽车的其它部分,这两者缺一不可。而发行版就是直接给你了一辆完整的汽车,你可以直接开走。
@ -26,22 +26,22 @@ Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`
## 有哪些 Linux 发行版
说到Linux发行版那可真的是成千上万了。有一个项目 [Linux Distribution Time Line](https://github.com/FabioLolix/LinuxTimeline) 展示了大多数Linux发行版之间的关系。不过这里面的绝大多数我们听都没听说过。
说到 Linux 发行版,那可真的是成千上万了。有一个项目 [Linux Distribution Time Line](https://github.com/FabioLolix/LinuxTimeline) 展示了大多数 Linux 发行版之间的关系。不过这里面的绝大多数我们听都没听说过。
完整的图片在[文章结尾](#linuxdistributiontimeline)
笔者在下面总结了一些常见发行版:
![Distros](./assets/2.3.2.png)
* `RedHat` 使用 rpm/yum 管理软件包的一款发行版,有良好的企业级支持,但是 Enterprise 需要付费(衍生无需)。
* `CentOS` 之前服务器最常用的 Linux 发行版(CentOS 7&8),不过现在已部分停止开发,使用人数较少
* `RockyLinux` 新兴的 RedHat 系发行版可以作为CentOS的继任者在服务器端使用也可用于桌面系统
* `Debian` 使用 dpkg/apt 管理软件包,操作简单,功能易学丰富,也适合作为服务器系统
* `Ubuntu` 最受欢迎的桌面Linux发行版笔者初入Linux选择的就是本系统。Ubuntu还有Server服务器版本,不过不是很好用
* `Deepin` 国产的一款Linux系统使用独有的DDE桌面开箱即用界面美观但是bug较多,且性能要求较高
* `ArchLinux` 使用独有的 pacman 管理软件包有庞大的AUR支持。新手上手难度极高默认只有命令行界面但定制性也极高但是系统为滚动更新较不稳定容易“滚挂”指更新软件包导致系统无法启动等问题被网友戏称为“邪教”
* `Manjaro` 一款基于 ArchLinux 的带有图形界面的发行版,新手较为友好
* `SteamOS` 一款默认被用在 SteamDeck 上的专为游戏设计的操作系统,对游戏的兼容性较好
- `RedHat` 使用 rpm/yum 管理软件包的一款发行版,有良好的企业级支持,但是 Enterprise 需要付费(衍生无需)。
- `CentOS` 之前服务器最常用的 Linux 发行版(CentOS 7&8),不过现在已部分停止开发,使用人数较少
- `RockyLinux` 新兴的 RedHat 系发行版,可以作为 CentOS 的继任者在服务器端使用,也可用于桌面系统
- `Debian` 使用 dpkg/apt 管理软件包,操作简单,功能易学丰富,也适合作为服务器系统
- `Ubuntu` 最受欢迎的桌面 Linux 发行版,笔者初入 Linux 选择的就是本系统。Ubuntu 还有 Server 服务器版本,不过不是很好用
- `Deepin` 国产的一款 Linux 系统,使用独有的 DDE 桌面,开箱即用界面美观,但是 bug 较多,且性能要求较高
- `ArchLinux` 使用独有的 pacman 管理软件包,有庞大的 AUR 支持。新手上手难度极高,默认只有命令行界面,但定制性也极高,但是系统为滚动更新,较不稳定,容易“滚挂”(指更新软件包导致系统无法启动等问题),被网友戏称为“邪教”
- `Manjaro` 一款基于 ArchLinux 的带有图形界面的发行版,新手较为友好
- `SteamOS` 一款默认被用在 SteamDeck 上的专为游戏设计的操作系统,对游戏的兼容性较好
还有一些比较小众的发行版,如`NixOS`、`Alpine Linux`,这里不一一说明了。
@ -54,7 +54,7 @@ Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`
长期使用可以优先选 Ubuntu小白可以尝试 Deepin软件包格式方便好找自带应用商店。
如果你有足够的基础和一定英文能力(其实大学四六级应该就够了)喜欢折腾那么ArchLinux是你的不二之选占用小可定制性极强。无论如何Archlinux不应被安装在追求稳定的服务器上。
如果你有足够的基础和一定英文能力(其实大学四六级应该就够了),喜欢折腾,那么 ArchLinux 是你的不二之选占用小可定制性极强。无论如何Archlinux 不应被安装在追求稳定的服务器上。
如果你不打算安装在实体机上,那么还是推荐 `RockyLinux`
@ -62,15 +62,16 @@ Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`
## 注释
1摘自linux.cn
1摘自 linux.cn
## 附录
### LinuxDistributionTimeLine
> (2024.6.6构建)
> (2024.6.6 构建)
![Linux Distribution Time Line](./assets/2.3.1.svg)
---
> study-area-cn

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

View File

@ -0,0 +1,179 @@
# 学习 Shell。
## 概念
Shell也称为壳在计算机中指“为用户提供用户界面”的软件通常指的是命令行界面的解析器。一般来说这个词是指操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序也就是程序和用户交互的层面。因此与之相对的是内核英语Kernel内核不提供和用户的交互功能。[1]
但是,在 Linux 中,我们通常所讲的 Shell 是指命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。
Shell 也指代一种命令语言,由这种语言编写的脚本称为 Shell Script。
Shell 命令语言的标准为参考 AT&T 的 ksh 和 GNU 计划的 Bourne Again Shell (bash) 制定的 The Open Group Base Specifications Issue 6 中的 [2.Shell Command Language](https://pubs.opengroup.org/onlinepubs/9690949599/utilities/xcu_chap02.html)。
本章我们将学习 Shell 的基本使用。
## 快捷键
Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键:
- `C-C`:终止当前进程。
- `C-Z`:暂停当前进程。
- `C-D`退出当前Shell实际上是发送一个 `EOF` 文件结束字符)。
- `C-L`:清屏。
> 其中 `C-C``C-D` 是十分重要的两个快捷键,十分常用。
在 Bash 中,还有一些特殊的快捷键,它们继承自 GNU Emacs 编辑器,用于快速移动光标以及编辑文本:
- `C-A`:移动光标到行首。
- `C-E`:移动光标到行尾。
- `C-B`:向左移动光标。
- `C-F`:向右移动光标。
- `C-K`:删除从光标位置到行尾的文本。
- `C-U`:删除从光标位置到行首的文本。
- `C-W`:删除光标左侧的单词。
- `C-Y`:粘贴之前删除的文本。
> 这部分只需要了解即可
## 命令
命令分为内部命令和外部命令,内部命令是 Shell 自带的命令,外部命令是 Shell 外部的可执行程序。
一条 Shell 的指令的标准格式为:
```bash
command [options] [arguments]
```
其中,`command` 是命令的名称,`options` 是命令的选项,`arguments` 是命令的参数。
它的格式不一定必须遵守,但是通常遵守这个格式会带来更好的可读性(用什么工具采用什么方式对什么文件做什么)。
但是,有一个例外,就是指定输出,这时,我们推荐將指定输出的选项以及参数放在文件明后面。
例如,`ls` 命令用于列出当前目录下的文件和文件夹,它的选项可以是 `-l`、`-a` 等,参数可以是文件名或目录名。
## 变量
Shell 中的变量分为环境变量和用户变量环境变量是Shell启动时自动设置的变量用户变量是用户自定义的变量。
用户变量可以通过 `export` 命令设置为临时环境变量,例如:
```bash
export GREET="Hello, World!"
```
然后我们在这个 Shell 里启动一个新的 Shell仍然可以在环境中找到这个变量。
```bash
bash -c 'echo $GREET'
```
> `export` 声明的变量只在当前环境下有效,如果你开启了个新的终端或者重启,那么这个环境就无效了
用户变量可以通过 `declare` 命令声明,例如:
```bash
declare USER_GREET="Hello, Shell"
```
变量可以通过 `${}``$` 符号来引用,例如:
```bash
echo ${GREET}
echo $USER_GREET
```
> 当变量的前后有别的内容紧挨着,那么只能使用 `${}`
## 特殊的环境变量
Shell 中有一些特殊的环境变量,它们在 Shell 启动时自动设置,例如:
- `$HOME`:当前用户的主目录。
- `$PATH`:可执行文件的搜索路径。
- `$SHELL`当前Shell的名称。
- `$PWD`:当前工作目录。
- `$USER`:当前用户的用户名。
其中最重要也是最常用的就是 PATH它决定了Shell在执行命令时搜索可执行文件的路径。当我们发现明明安装了某个软件但是找不到可执行文件的时候应该首先检查 PATH 的设置。如果你熟悉 Windows你会发现 Windows 的 PATH 是一串由分号分隔的路径。而 Linux 下的路径使用的是 `:` 冒号分隔。
> 在 Windows 中的 PATH 中有一条路径是 `.` 就是当前目录,而 Linux 中默认是不会搜索当前目录的。如果你在当前目录有一个 `run.sh`,那么你必须要使用 `./run.sh` 才能执行。
## 管道
Shell 中的管道是链接两个命令的方式,管道遵守下面的格式。
```bash
command1 | command2
```
`command1` 的输出将会作为 `command2` 的输入提供,例如:
```bash
ls -a | grep "test"
```
这个命令将会列出当前目录下的所有文件,然后使用 `grep` 命令过滤出文件名包含"test"的文件。
## 输出重定向
Shell 中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。
```bash
command > file
```
`command` 的输出将会被重定向到 `file` 中,例如:
```bash
ls -a > files.txt
```
这个命令将会列出当前目录下的所有文件,然后使用 `>` 符号将输出重定向到 `files.txt` 中。
## 输入重定向
Shell 中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。
```bash
command < file
```
`command` 的输入将会被重定向到 `file` 中,例如:
```bash
cat < files.txt
```
这个命令将会读取 `files.txt` 中的内容,然后使用 `cat` 命令输出到标准输出中。
## 将命令的输出作为参数
让我们想像这个场景:有一个文件有一个文件名列表,我们想要获取这些文件的详细信息,这怎么实现呢?
运算符 `$()` 可以将命令的输出作为参数,它的标准格式如下:
```bash
command1 $(command2)
```
`command2` 的输出将会作为 `command1` 的参数。
实现前文的场景所需的命令如下:
```bash
ls -l $(cat files.txt)
```
这个命令将会读取 `files.txt` 中的文件名列表,然后使用 `ls -l` 命令获取这些文件的详细信息。
## 课后作业
1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt`
2. 使用 `cat` 读取所有文件的内容。
## 参考
- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell)

View File

@ -0,0 +1 @@
# Shell 与 Shell Script

View File

@ -0,0 +1,198 @@
# Vim 编辑器
> 在 Vim 中所有的键位注意区分大小写,所有大写的命令都需要按下 `Shift` 键,例如 `V` 表示为 `S-v`
不知道你有没有听说过 Bram 发明的 Vim 编辑器,有这么一个梗,就是:
> 如何产生一串随机字符串?答:让新手退出 Vim。
你应该能看出 Vim 的操作是多么“反人类”了吧。事实上,在 Vim 发明的时候,电脑上还没有鼠标,所有的操作只能靠命令完成的(可以想一想 tty。所以Vim 的设计理念就是让用户通过键盘完成所有的操作。
但是,我们如果要通过终端远程管理一台 Linux 服务器,那么必须使用像 Vim 这样的终端编辑器。Vim 的功能比前文的 Nano 强大许多,如果你熟悉了 Vim那么你的速度可能远远超过那些使用其它编辑器的人。
> Vim 的前身是 Vi本文的绝大部分命令同样适用于 Vi。几乎所有的 Linux 发行版都自带 Vi 或是 Vim 其中之一,不用担心是否安装了 Vim。其实 Windows 上也可以安装 Vim。
>
> 如果你在 Vim 中困住了,只需要按下 `<Esc>:q!<Enter>` 就可以退出 Vim 了
## 启动 Vim
Vim 的启动十分简单,只需要在终端输入 `vim` 即可。
```bash
vim [文件名]
```
文件名是可选的。如果文件存在Vim 就会打开这个文件如果文件不存在Vim 就会创建这个文件。
然后你会看到如下界面:
![Vim](./assets/2.3.2.1.png)
## Vim 的使用
首先,我们进入 Vim会发现我们并不能像 Nano 一样直接打字。这是因为 Vim 默认处于“命令模式”,我们需要按下对应的按键可以进入到不同的模式。记住:无论在任何时候,按下 `Esc` 键都可以回到命令模式。
下面是一张 Vim 的键位图:
![Vim Keymap](./assets/2.3.2.2.png)
如果看不懂也没关系,下面我们会讲解其中常用的一些功能。
### Vim 的“模式”
Vim 有一个最基本的东西“模式”在不同模式下快捷键的功能会有所不同。Vim 会在左下角提示你所在的模式。
以下是常见的模式:
- `命令模式` 这个是 Vim 启动所在的模式,以下的所有内容均在这个模式内进行。其它模式均可以使用 `Esc` 退出到命令模式。
- `编辑模式` 使用 `i` 进入,底部会提示 `-- INSERT --`(`-- 插入 --`),在这个模式下,你可以正常编辑文档,和一般的文本编辑器无异。
- `替换模式` 底部会提示 `-- REPLACE --`(`-- 替换 --`),使用 `R` 进入,这个模式与编辑模式差别不大,但是你输入的所有内容都会替换光标后的内容。
- `选择模式` 原名是“可视模式”,使用 `v` 进入,底部会提示 `-- VISUAL --`(`-- 可视 --`),你可以选择一段文本进行操作。
- `选择行模式` 使用 `V` 进入,底部会提示 `-- VISUAL LINE --`(`-- 可视 行 --`),此时所有的选择都变成了整行选择。操作没有任何区别。
- `底部命令行模式` 使用 `:`、`/`、`?` 进入(功能不同),此时整个底部都会变成命令行,以 `:``/` 等字符开头,此时可以输入命令,按下 `Enter` 就可以执行并退出。
### 移动光标
在命令模式下,我们可以使用键盘上的方向键来移动光标。但是,我们也可以使用 Vim 提供的命令来移动光标:
```text
^
k
< h l >
j
v
```
> 当你熟悉了 `hjkl` 的使用后,你会发现使用这几个命令比使用方向键快多了
### 命令行
我们输入 `:` 就可以进入命令行(和上面的底部命令行模式有点区别)了。在 Vim 中,命令行负责了许多复杂的工作。
下面是最常见的命令组合:
- `:w` 保存文件
- `:wq` 保存并退出 Vim
- `:q!` 强制退出 Vim文件未保存的情况下
> `!` 接在命令后表示强制执行一个命令
>
> 另外,在 `w` 命令后面可以接上文件保存的路径,实现另存为的功能,例如 `:w 1.txt`
其中命令行模式的其它功能我们在下面还会讲到。
### 删除与剪切
假如有一大段文字,在 Vim 中又不能像图形化一样鼠标一拖一删,那么如何快速删除呢?
在 Vim 中,我们可以单独使用 `x``d` 命令,也可以在“可视模式”(待会会讲到)下编辑。
`x` 命令可以删除光标所指的当前字符,而 `d` 命令的功能就比较复杂了。`d` 命令是一个“多字符命令”,需要在 `d` 后面输入其它的东西搭配使用。
> `d` 命令实际上是剪切,后面会说如何粘贴
下面是一些例子(均包括开头的 `d`
- `dd` 删除整行
- `dw` 删除当前单词(以空格分割)
- `d0` 删除这行从光标的位置到最前
- `d$` 删除这行从光标的位置到最后
> 在 Vim 中,很多命令例如 `x`、`d` 和后文的 `y`、`G`、`gg` 等前面都可以加一个数字,表示重复这个命令多少次,例如 `5dd` 就是删除5行包括 `hjkl` 也可以。
### 复制
前面我们说到了 `d` 的本质是剪切,那么我们如何复制呢?`y` 命令便可以复制。
> 注意Vim 的剪贴板是独立的,和系统使用的不同
`y` 命令和 `d` 命令的用法如出一辙,例如 `yy` 就是复制整行,`yw` 就是复制单词。
### 粘贴
`p` 命令代表 `parse`,就是粘贴。可以粘贴使用 `y` 复制或者 `d` 剪切的内容。
### 跳转
如果我们想要快速在文件中跳转,那么`gg` 命令和 `G` 命令是不可或缺的。
`gg` 命令可以让你快速来到文件的开头,而 `G` 命令单独使用可以来到文件尾部,
这个两个命令前面加上数字,就可以快速跳转到指定的行(`G` 命令也是从头开始数的)。
使用也非常简单,按一下就可以,前面也可以加数字。
另外,可以使用 `0` 跳转到行首和 `$` 跳转到行尾。
`d``y` 命令后面也可以接 `gg`、`G`、`0`、`$` 命令,效果就是从指定的位置选择到当前光标所在处。
### 重复上一个命令
这个命令是 `.`,没错,就是点。可以重复你的上一个命令。
### 选择模式(可视模式)
可视模式,这个名字其实有点误导人。事实上,这个模式就是选择一段文字。(事实上你如果在终端中直接使用鼠标进入的就是这个模式)
下面是在可视模式中的操作:
- 使用 `hjkl` 移动(当然方向键也可以)
- `y` 复制
- `d` 剪切
- `x` 删除
- `p` 覆盖粘贴
- `gg`、`G`、`0`、`$` 移动光标
### 查找内容
在 Vim 中,我们可以使用 `/` 进行查找,输入 `/` 然后再输入关键词。
在查找过程中,我们可以使用 `n` 查找下一个,`N` 查找上一个。
### 小技巧:使用 `:!` 快速调试 Shell 脚本
在使用 Vim 的过程中,假如我们需要调试一个 Shell那么我们就需要退出 Vim启动脚本再打开 Vim十分的麻烦。不过 Vim 提供了一个命令 `:!` 来让我们快速运行一行命令。
```text
:! [要执行的命令]
```
然后我们会跳出 Vim并看到这个命令的执行结果。如果想要回到 Vim只需要在程序结束后敲一下 `<Enter>` 便可以回到 Vim 了。
另外,我们可以单独使用 `:!` 查看执行的历史记录。
## Vim 的配置
在 Vim 中,我们可以使用 `:set (no)[配置名]` 去开关某些配置。
对于有参数的配置,可以使用 `:set [配置名]=[值]`
下面是一些常用配置:
```text
:set number "启用行号
:set autoindent "自动缩进
:set autoread "如果文件有更改自动更新文件
:set wrap "自动折行
:set encoding=utf-8 "设置显示格式,文件显示乱码可尝试调整
:set fileencoding=utf-8 "设置写入格式
:set hlsearch "高亮搜索结果
```
这些配置都是临时启用,如果每次启动时都要手动配置,属实有点麻烦。那么该怎么办呢?我们可以将配置文件写入 `~/.vimrc` 文件实现永久配置。(注意所有配置不要带冒号)
> 其实 Vim 的功能远不止如此,感兴趣的可自行了解 VimScript 相关内容。
## 课后作业
Vim 的功能十分强大,并且在维护时十分常用。下面的练习可以帮你更好掌握 Vim
> 试试看在下面的过程中,全程不使用方向键吧!
1. 使用 `touch` 新建一份 `.sh` 文件,文件名随意
2. 使用 Vim 编辑这个文件,使用 `echo` 输出一个 `helloworld`
3. 保存这个文件
4. 使用 `:!` 运行这个文件
5. 退出 Vim
6. 使用 Vim 定制你的 `~/.vimrc` 配置文件
7. 你也可以将这个配置文件发到论坛上与小伙伴交流

33
src/learn_linux_basic/the_history_of_linux.md Normal file → Executable file
View File

@ -6,39 +6,40 @@
这么昂贵的电脑,一般人自然用不起,所以就有了一个叫做批处理操作系统的东西。每个人都可以提交自己的任务到队列里,然后等待自己的程序运行后的结果。
但是批处理操作系统也不完美这玩意根本就没有交互性而且很长一段时间都是只能运行一个程序。所以在1965年BellGEMIT提出了一个叫做“Multics”的分时操作系统。
但是批处理操作系统也不完美,这玩意根本就没有交互性,而且很长一段时间都是只能运行一个程序。所以在 1965 BellGEMIT 提出了一个叫做“Multics”的分时操作系统。
什么是分时操作系统呢?简单来说,这玩意就是给每个程序一片很小的时间,让它们来回切换。程序切换的间隔很小,看起来就像是在同时运行一样。
但是由于Multics开发途中加入的功能越来越多最后形成了一个几乎无法填满的大坑于是Bell退出了开发。
但是由于 Multics 开发途中加入的功能越来越多,最后形成了一个几乎无法填满的大坑,于是 Bell 退出了开发。
> 不过最终Multics还是成功的开发出了它们的产品您可以通过访问它们的[官方网站](https://www.multicians.org/)
> 不过,最终 Multics 还是成功的开发出了它们的产品,您可以通过访问它们的[官方网站](https://www.multicians.org/)
## Linux之前Unix的往事
## Linux 之前Unix 的往事
Bell推出Multics的开发之后有两个人用回原来的系统越来越不习惯于是它们就以“研究新一代文本编辑器”为借口开始研究一个新的操作系统——Unix。
Bell 推出 Multics 的开发之后有两个人用回原来的系统越来越不习惯于是它们就以“研究新一代文本编辑器”为借口开始研究一个新的操作系统——Unix。
这两个人就是在计算机界有着重要影响的Ken Thompson和Dennis Ritchie。
这两个人就是在计算机界有着重要影响的 Ken Thompson Dennis Ritchie。
Unix本来只是Ken的一个想法他本来是没有时间来完成这个操作系统的。
Unix 本来只是 Ken 的一个想法,他本来是没有时间来完成这个操作系统的。
但是一天Ken的妻子要带着孩子去美国的西部探亲Ken就空出来有将近一个月的时间来编写Unix。最终他使用汇编语言完成了一个小小的内核与一些工具。这个内核最初没有名字但因为这个系统的简单实验室的人们就这个戏称这个系统为Unics。于是最后的名字就便成了Unix。
但是一天Ken 的妻子要带着孩子去美国的西部探亲Ken 就空出来有将近一个月的时间来编写 Unix。最终他使用汇编语言完成了一个小小的内核与一些工具。这个内核最初没有名字但因为这个系统的简单实验室的人们就这个戏称这个系统为 Unics。于是最后的名字就便成了 Unix。
Dennis Ritchie得知了这个这个计划后就开始和Ken一起将Unix使用B语言重写但是不知为何B语言编译出来的内核性能就是不好于是Dennis搞了一种全新的编程语言叫做C语言名称取自BCPL的第二个字母。他们用C语言重写了Unix内核。最终Unix称为了现象级的产品。
Dennis Ritchie 得知了这个这个计划后,就开始和 Ken 一起将 Unix 使用 B 语言重写,但是不知为何 B 语言编译出来的内核性能就是不好于是Dennis 搞了一种全新的编程语言,叫做 C 语言(名称取自 BCPL 的第二个字母)。他们用 C 语言重写了 Unix 内核。最终 Unix 称为了现象级的产品。
## AT&T收回版权Minix与Linux出现
## AT&T 收回版权Minix Linux 出现
到了Unix发布第七版的时候即System v7AT&T收回了Unix的版权第七版影响力最大的修改就是不允许将Unix的代码提供给学生。
到了 Unix 发布第七版的时候(即 System v7AT&T 收回了 Unix 的版权,第七版影响力最大的修改就是不允许将 Unix 的代码提供给学生。
这个修改可愁坏了一名叫做Android的教授他在大学里教授操作系统的课程。但因为不能向学生提供Unix的代码他的课程也几乎无法继续。“自己动手丰衣足食”于是这位教授自己写了一个叫做Minix的操作系统。用于教学工作。
这个修改可愁坏了一名叫做 Android 的教授,他在大学里教授操作系统的课程。但因为不能向学生提供 Unix 的代码,他的课程也几乎无法继续。“自己动手,丰衣足食”,于是这位教授自己写了一个叫做 Minix 的操作系统。用于教学工作。
> Minix是什么意思呢就是Mini Unix啦很小的Unix。
> Minix 是什么意思呢?就是 Mini Unix 啦!很小的 Unix。
后来Minix也很受欢迎但是 Android教授认为这个系统置用于教学用途迟迟没有增加新功能并且不允许商业用途。所以一个叫做 Torvalds Linus 的芬兰人也是自己写了一个“小小的”内核Linux Kernel遵循POSIX规范为了尽可能兼容Unix并与GNU计划的开源软件结合最终发展成了GNU/Linux并且Linux内核使用了GPLv2许可证。
后来 Minix 也很受欢迎,但是 Android 教授认为这个系统置用于教学用途,迟迟没有增加新功能,并且不允许商业用途。所以一个叫做 Torvalds Linus 的芬兰人也是自己写了一个“小小的”内核Linux Kernel遵循 POSIX 规范(为了尽可能兼容 Unix并与 GNU 计划的开源软件结合,最终发展成了 GNU/Linux并且 Linux 内核使用了 GPLv2 许可证。
> 因为篇幅限制,所以本文省略了很多东西,如果想要看看更完整的资料可以查阅[Linux考古笔记](https://tinylab-1.gitbook.io/lad-book/zh-cn/background/history)
> 因为篇幅限制,所以本文省略了很多东西,如果想要看看更完整的资料可以查阅[Linux 考古笔记](https://tinylab-1.gitbook.io/lad-book/zh-cn/background/history)
现在的 Linux 发行版就是linux内核与软件包的结合下一篇文章会详细讲述包含着很多其它GNU中的软件。你如今可以在 [kernel.org](kernel.org) 下载Linux内核也可以在GNU官网找到其它GNU软件并安装在Linux
现在的 Linux 发行版(就是 linux 内核与软件包的结合,下一篇文章会详细讲述)包含着很多其它 GNU 中的软件。你如今可以在 [kernel.org](kernel.org) 下载 Linux 内核,也可以在 GNU 官网找到其它 GNU 软件并安装在 Linux
---
> study-area-cn

53
src/learn_linux_basic/the_linux_learning_path.md Normal file → Executable file
View File

@ -1,63 +1,66 @@
# 漫谈Linux学习之路
# 漫谈 Linux 学习之路
哈哈终于到了学习Linux的时候了各位同学是不是很激动呢
哈哈,终于到了学习 Linux 的时候了,各位同学是不是很激动呢?
但是在正式实操之前,我们先来补一些理论知识,也给大家鼓鼓劲。
## 怎么学Linux
## 怎么学 Linux
说白了Linux也就是一个在普通不过的[操作系统](../learn_computer_basic/operating_system.md).
要想学好Linux就不能害怕Linux。
实际上现在的Linux已经很人性化了更何况现在的KDE和GNOME等桌面环境都已经很完善了。界面也非常好看。比如这张图片就是笔者在撰写这篇文章时的截图。
说白了Linux 也就是一个在普通不过的[操作系统](../learn_computer_basic/operating_system.md).
要想学好 Linux就不能害怕 Linux。
实际上现在的 Linux 已经很人性化了,更何况现在的 KDE GNOME 等桌面环境都已经很完善了。界面也非常好看。比如这张图片就是笔者在撰写这篇文章时的截图。
![2.1.1](./assets/2.1.1.png)
是不是也很漂亮没错现在Linux已经很漂亮日常使用一点问题都没有。您要做的只是打消自己的疑虑好好的迎接Linux让它融入你的生活。
是不是也很漂亮?没错,现在 Linux 已经很漂亮,日常使用一点问题都没有。您要做的,只是打消自己的疑虑,好好的迎接 Linux让它融入你的生活。
## 命令太多我记不住,怎么办?
实际上我们没有人会特意记命令。有个人开玩笑就说
> 直接用Linux就好了啊没有人用Windows是先看"Windows 使用理论与实践"的。
> 直接用 Linux 就好了啊没有人用 Windows 是先看"Windows 使用理论与实践"的。
虽然这只是一句玩笑,但是也挺有道理的。
每天用Linux,所以总结成一句话就是:多看,多练。
每天用 Linux,所以总结成一句话就是:多看,多练。
## Windows这么好用为什么要Linux
## Windows 这么好用,为什么要 Linux
四点:稳定性,可修改性,完全控制性和系统占用
### 1.稳定性
如果你试着把Windows连续开着几天做高强度的运算任务不关机的话你很有可能会发现系统出了很多奇奇怪怪的问题比如开始菜单无法正常加载啊窗口移动时会撕裂啊。
而Linux就没有这些问题无论多长时间都几乎不用关机维护。长时间的运算任务也不会影响到系统的使用。
如果你试着把 Windows 连续开着几天做高强度的运算任务不关机的话,你很有可能会发现系统出了很多奇奇怪怪的问题:比如开始菜单无法正常加载啊,窗口移动时会撕裂啊。
Linux 就没有这些问题,无论多长时间都几乎不用关机维护。长时间的运算任务也不会影响到系统的使用。
### 2.可修改性
Linux内核本身和在Linux上使用的大部分软件都是开源软件。开源的好处就是源代码开放你可以自由修改。比如自己适配一个新硬件啊修改系统的调度策略啊精简一下内核啊。这些在Windows这种闭源操作系统上都是做不到的。
Linux 内核本身,和在 Linux 上使用的大部分软件都是开源软件。开源的好处就是源代码开放,你可以自由修改。比如自己适配一个新硬件啊,修改系统的调度策略啊,精简一下内核啊。这些在 Windows 这种闭源操作系统上都是做不到的。
### 3.完全控制性
在Linux里root是完全自由的是可以控制整个系统的它是系统里面的最高权限。
不像WindowsWindows即便你是admin系统也会控制你的行为比如删除系统文件这种操作就是完全做不到的。
有的同学可能会问那不是代表Linux不安全吗
其实这个看法也对也不对因为把系统完整的权限交给用户确实可能会造成一些不安全的行为。但是Windows是把系统的完全控制权交给微软你不知道这个系统里面有没有什么后门。所以相比把权限交给其他人还是把权限牢牢的攥在自己手里更安心。
而且由于SELinux和用户组这些东西Linux一般用户的权限都是受到限制的正常使用没有什么不安全的问题。
> SELinux这东西极大的提高了Linux的安全我们后文也会讲到。
在 Linux 里root 是完全自由的,是可以控制整个系统的,它是系统里面的最高权限。
不像 WindowsWindows 即便你是 admin系统也会控制你的行为比如删除系统文件这种操作就是完全做不到的。
有的同学可能会问:那不是代表 Linux 不安全吗?
其实这个看法也对,也不对:因为把系统完整的权限交给用户,确实可能会造成一些不安全的行为。但是 Windows 是把系统的完全控制权交给微软,你不知道这个系统里面有没有什么后门。所以相比把权限交给其他人,还是把权限牢牢的攥在自己手里更安心。
而且由于 SELinux 和用户组这些东西Linux 一般用户的权限都是受到限制的,正常使用没有什么不安全的问题。
> SELinux 这东西极大的提高了 Linux 的安全,我们后文也会讲到。
### 4.系统占用
系统占用这个没什么好解释的,给你几个数据你就明白了:
这是我的电脑在两个系统下的占用刚刚开机Windows自带GUILinuxKDE
这是我的电脑在两个系统下的占用刚刚开机Windows 自带 GUILinuxKDE
|系统|CPU|内存|
|-----|-----|-----|
|Linux|0.8%|2G/16G|
|Windows|12.1%|6G/16G|
| 系统 | CPU | 内存 |
| ------- | ----- | ------ |
| Linux | 0.8% | 2G/16G |
| Windows | 12.1% | 6G/16G |
看出来了吧Linux对于系统占用是很小的。同样的钱购买硬件Linux可以让更多的性能分配给你的应用。
看出来了吧Linux 对于系统占用是很小的。同样的钱购买硬件Linux 可以让更多的性能分配给你的应用。
这些东西,应该也解释清楚你的问题了吧?
那么接下来我们就开始正式的学习吧!
---
> study-area-cn

4
src/licenses/LICENSE-APACHE.md Normal file → Executable file
View File

@ -192,9 +192,9 @@ Copyright 2024 The Study Area CN Team
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
[www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,

Some files were not shown because too many files have changed in this diff Show More