mirror of
https://github.com/tiennm99/miti99.git
synced 2026-09-16 08:25:47 +00:00
[Add] old contents
This commit is contained in:
@@ -1 +1,2 @@
|
||||
.idea
|
||||
.hugo_build.lock
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Post: Modified Date"
|
||||
last_modified_at: 2016-03-09T16:20:02-05:00
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- Post Formats
|
||||
- readability
|
||||
- standard
|
||||
---
|
||||
|
||||
This post has been updated and should show a modified date if used in a layout.
|
||||
|
||||
All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end.
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "Post: Standard"
|
||||
excerpt_separator: "<!--more-->"
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- Post Formats
|
||||
- readability
|
||||
- standard
|
||||
---
|
||||
|
||||
All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end.
|
||||
|
||||
Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day.
|
||||
|
||||
<!--more-->
|
||||
|
||||
This post has a manual excerpt `<!--more-->` set after the second paragraph. The following YAML Front Matter has also be applied:
|
||||
|
||||
```yaml
|
||||
excerpt_separator: "<!--more-->"
|
||||
```
|
||||
|
||||
If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on.
|
||||
|
||||
I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still.
|
||||
|
||||
Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more.
|
||||
|
||||
Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights.
|
||||
|
||||
Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance.
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: "Post: Chat"
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- chat
|
||||
- Post Formats
|
||||
---
|
||||
|
||||
Abbott: Strange as it may seem, they give ball players nowadays very peculiar names.
|
||||
|
||||
Costello: Funny names?
|
||||
|
||||
Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third--
|
||||
|
||||
Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team.
|
||||
|
||||
Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third--
|
||||
|
||||
Costello: You know the fellows' names?
|
||||
|
||||
Abbott: Yes.
|
||||
|
||||
Costello: Well, then who's playing first?
|
||||
|
||||
Abbott: Yes.
|
||||
|
||||
Costello: I mean the fellow's name on first base.
|
||||
|
||||
Abbott: Who.
|
||||
|
||||
Costello: The fellow playin' first base.
|
||||
|
||||
Abbott: Who.
|
||||
|
||||
Costello: The guy on first base.
|
||||
|
||||
Abbott: Who is on first.
|
||||
|
||||
Costello: Well, what are you askin' me for?
|
||||
|
||||
Abbott: I'm not asking you--I'm telling you. Who is on first.
|
||||
|
||||
Costello: I'm asking you--who's on first?
|
||||
|
||||
Abbott: That's the man's name.
|
||||
|
||||
Costello: That's who's name?
|
||||
|
||||
Abbott: Yes.
|
||||
|
||||
Costello: When you pay off the first baseman every month, who gets the money?
|
||||
|
||||
Abbott: Every dollar of it. And why not, the man's entitled to it.
|
||||
|
||||
Costello: Who is?
|
||||
|
||||
Abbott: Yes.
|
||||
|
||||
Costello: So who gets it?
|
||||
|
||||
Abbott: Why shouldn't he? Sometimes his wife comes down and collects it.
|
||||
|
||||
Costello: Who's wife?
|
||||
|
||||
Abbott: Yes. After all, the man earns it.
|
||||
|
||||
Costello: Who does?
|
||||
|
||||
Abbott: Absolutely.
|
||||
|
||||
Costello: Well, all I'm trying to find out is what's the guy's name on first base?
|
||||
|
||||
Abbott: Oh, no, no. What is on second base.
|
||||
|
||||
Costello: I'm not asking you who's on second.
|
||||
|
||||
Abbott: Who's on first!
|
||||
|
||||
Costello: St. Louis has a good outfield?
|
||||
|
||||
Abbott: Oh, absolutely.
|
||||
|
||||
Costello: The left fielder's name?
|
||||
|
||||
Abbott: Why.
|
||||
|
||||
Costello: I don't know, I just thought I'd ask.
|
||||
|
||||
Abbott: Well, I just thought I'd tell you.
|
||||
|
||||
Costello: Then tell me who's playing left field?
|
||||
|
||||
Abbott: Who's playing first.
|
||||
|
||||
Costello: Stay out of the infield! The left fielder's name?
|
||||
|
||||
Abbott: Why.
|
||||
|
||||
Costello: Because.
|
||||
|
||||
Abbott: Oh, he's center field.
|
||||
|
||||
Costello: Wait a minute. You got a pitcher on this team?
|
||||
|
||||
Abbott: Wouldn't this be a fine team without a pitcher?
|
||||
|
||||
Costello: Tell me the pitcher's name.
|
||||
|
||||
Abbott: Tomorrow.
|
||||
|
||||
Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who?
|
||||
|
||||
Abbott: Now, that's he first thing you've said right.
|
||||
|
||||
Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT!
|
||||
|
||||
Abbott: Don't get excited. Take it easy.
|
||||
|
||||
Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play.
|
||||
|
||||
Abbott: Yeah, it could be.
|
||||
|
||||
Costello: Another guy gets up and it's a long ball to center.
|
||||
|
||||
Abbott: Because.
|
||||
|
||||
Costello: Why? I don't know. And I don't care.
|
||||
|
||||
Abbott: What was that?
|
||||
|
||||
Costello: I said, I DON'T CARE!
|
||||
|
||||
Abbott: Oh, that's our shortstop!
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: "Post: Notice"
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- Post Formats
|
||||
- notice
|
||||
---
|
||||
|
||||
A notice displays information that explains nearby content. Often used to call attention to a particular detail.
|
||||
|
||||
When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `<p></p>` element.
|
||||
|
||||
**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes.
|
||||
{: .notice}
|
||||
|
||||
**Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet.
|
||||
{: .notice--primary}
|
||||
|
||||
**Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet.
|
||||
{: .notice--info}
|
||||
|
||||
**Warning Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. [Integer nec odio](#). Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet.
|
||||
{: .notice--warning}
|
||||
|
||||
**Danger Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing](#) elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet.
|
||||
{: .notice--danger}
|
||||
|
||||
**Success Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at [nibh elementum](#) imperdiet.
|
||||
{: .notice--success}
|
||||
|
||||
Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go.
|
||||
|
||||
```html
|
||||
{% raw %}{% capture notice-2 %}
|
||||
#### New Site Features
|
||||
|
||||
* You can now have cover images on blog pages
|
||||
* Drafts will now auto-save while writing
|
||||
{% endcapture %}{% endraw %}
|
||||
|
||||
<div class="notice">{% raw %}{{ notice-2 | markdownify }}{% endraw %}</div>
|
||||
```
|
||||
|
||||
{% capture notice-2 %}
|
||||
#### New Site Features
|
||||
|
||||
* You can now have cover images on blog pages
|
||||
* Drafts will now auto-save while writing
|
||||
{% endcapture %}
|
||||
|
||||
<div class="notice">
|
||||
{{ notice-2 | markdownify }}
|
||||
</div>
|
||||
|
||||
Or you could skip the capture and stick with straight HTML.
|
||||
|
||||
```html
|
||||
<div class="notice">
|
||||
<h4>Message</h4>
|
||||
<p>A basic message.</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
<div class="notice">
|
||||
<h4>Message</h4>
|
||||
<p>A basic message.</p>
|
||||
</div>
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Post: Quote"
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- Post Formats
|
||||
- quote
|
||||
---
|
||||
|
||||
> Only one thing is impossible for God: To find any sense in any copyright law on the planet.
|
||||
|
||||
> <cite><a href="http://www.brainyquote.com/quotes/quotes/m/marktwain163473.html">Mark Twain</a></cite>
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Post: Link"
|
||||
categories:
|
||||
- Blog
|
||||
tags:
|
||||
- link
|
||||
- Post Formats
|
||||
link: https://github.com
|
||||
---
|
||||
|
||||
This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done.
|
||||
|
||||
> And this is how a quote looks.
|
||||
|
||||
Some [link](#) can also be shown.
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: "Welcome to Jekyll!"
|
||||
date: 2019-04-18T15:34:30-04:00
|
||||
categories:
|
||||
- blog
|
||||
tags:
|
||||
- Jekyll
|
||||
- update
|
||||
---
|
||||
|
||||
You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||
|
||||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||
|
||||
Jekyll also offers powerful support for code snippets:
|
||||
|
||||
```ruby
|
||||
def print_hi(name)
|
||||
puts "Hi, #{name}"
|
||||
end
|
||||
print_hi('Tom')
|
||||
#=> prints 'Hi, Tom' to STDOUT.
|
||||
```
|
||||
|
||||
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
||||
|
||||
[jekyll-docs]: https://jekyllrb.com/docs/home
|
||||
[jekyll-gh]: https://github.com/jekyll/jekyll
|
||||
[jekyll-talk]: https://talk.jekyllrb.com/
|
||||
@@ -0,0 +1,160 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-07T07:00:00+07:00
|
||||
title = "Cài đặt Archlinux trong chế độ boot UEFI"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Trước khi bắt đầu, thì mình cũng xin nói trước là mình biết nếu bạn là "dân chơi" dám thử cài Arch Linux thì hẳn bạn không phải "tay mơ" rồi, và bạn có thể tự cài mà không cần hướng dẫn của mình. Bài viết của mình chủ yếu mang mục đích là chia sẻ kinh nghiệm cài Arch của mình thôi, chứ không mang tính hướng dẫn hay giúp đỡ gỡ rối gì. Nếu bạn gặp khó khăn, hãy comment bên dưới bài viết, mình sẽ xem và hỗ trợ bạn nếu có thể. Còn nếu bạn là người mới hoặc có ý định bước vào thế giới Linux, mình khuyên bạn nên thử dùng các phiên bản dành cho người mới trước như [Ubuntu](https://ubuntu.com/) hay nếu bạn nguốn trải nghiệm sơ bộ Arch thì [Manjaro](https://manjaro.org/) cũng là một lựa chọn không tồi (base on Arch và đứng top bảng xếp hạng nhiều lần mà) trước khi bắt đầu thử Arch. Sau đây là các bước tiến hành:
|
||||
|
||||
## Tạo bộ cài
|
||||
|
||||
Ở đây mình hướng dẫn tạo bộ cài qua USB, nếu bạn dùng đĩa thì có thể tự tìm hiểu và làm.
|
||||
|
||||
Đầu tiên các bạn tải file cài đặt mới nhất tại trang chủ của Arch Linux: <https://www.archlinux.org/download/>
|
||||
|
||||
Nếu bạn dùng Windows thì sử dụng Rufus để tạo bộ cài (các bạn chọn chế độ boot BIOS mặc định là được, bộ cài sẽ nhận cả 2 chuẩn BIOS lẫn UEFI luôn, còn nếu chọn UEFI thôi thì có khi lại không được :v). Nếu bạn dùng Linux thì có thể dùng lệnh: `dd if=<đường dẫn đến file .iso> of=/dev/sdX bs=1MB` (với sdX là ổ USB) hoặc dùng GUI tools như Disks (`gnome-disks`) -> Restore Disk Image...
|
||||
|
||||
## Thiết lập mạng
|
||||
|
||||
Sau khi boot vào Live boot, bạn khởi động các service sau: `systemctl start dhcpcd`. Nếu bạn dùng mạng dây thì như vậy là được, nhưng nếu bạn dùng wifi như laptop chẳng hạn, thì chạy thêm các lệnh sau:
|
||||
|
||||
```shell
|
||||
systemctl start iwd
|
||||
iwctl
|
||||
device list
|
||||
```
|
||||
|
||||
Lúc này sẽ hiện ra tên các thiết bị wifi của bạn, giả sử là `wlan0`, nếu không phải thì thay `wlan0` ở các lệnh sau bằng tên thích hợp của máy bạn:
|
||||
|
||||
```shell
|
||||
station wlan0 scan
|
||||
station wlan0 get-networks
|
||||
```
|
||||
|
||||
Lúc này sẽ hiện ra tên các điểm truy cập wifi, giả sử như là `SSID`, kết nối bằng lệnh sau:
|
||||
|
||||
```shell
|
||||
station wlan0 connect SSID
|
||||
```
|
||||
|
||||
Lúc này sẽ yêu cầu bạn nhập mật khẩu wifi (nếu có). Sau đó bạn có thể tiếp tục các bước tiếp theo:
|
||||
Thử kết nối với internet bằng lệnh: `ping google.com -c2`
|
||||
|
||||
## Cập nhật ngày giờ hệ thống
|
||||
|
||||
`timedatectl set-ntp true`
|
||||
|
||||
## Phân vùng ổ đĩa
|
||||
|
||||
Ở đây mình dùng lệnh `fdisk`, bạn có thể dùng lệnh khác.
|
||||
**Lưu ý:** Arch Linux khuyến khích phân vùng EFI từ 260-512MiB; phân vùng SWAP từ 512MiB. SWAP là cần thiết, tuy nhiên sau khi cài mình sẽ dùng swap file nên không tạo phân vùng này.
|
||||
|
||||
```shell
|
||||
fdisk -l
|
||||
fdisk /dev/sda</code
|
||||
```
|
||||
|
||||
(Bạn gõ `m` sau đó xem trong hướng dẫn thêm nhé!)
|
||||
|
||||
### Định dạng các phân vùng
|
||||
|
||||
```shell
|
||||
mkfs.fat -F32 /dev/sda1
|
||||
mkfs.ext4 /dev/sda2
|
||||
```
|
||||
|
||||
### Mount các phân vùng
|
||||
|
||||
**Lưu ý:** Arch Linux khuyến khích mount phân vùng EFI vào mount point `/efi` thay vì `/boot/efi` như nhiều hệ điều hành khác hiện tại (chẳng hạn Ubuntu).
|
||||
|
||||
```shell
|
||||
mount /dev/sda2 /mnt
|
||||
mkdir /mnt/efi
|
||||
mount /dev/sda1 /mnt/efi
|
||||
```
|
||||
|
||||
## Tiến hành cài đặt
|
||||
|
||||
Hihi, sau nhiều bước "khởi động" thì cuối cùng cũng đến bước tiến hành cài đặt.
|
||||
|
||||
Đầu tiên chúng ta nên thiết lập mirror servers để có tốc độ mạng hiệu quả. Vì chúng ta ở Việt Nam nên dùng mirror của archlinuxvn là hiệu quả. Thực hiện các lệnh sau: `nano /etc/pacman.d/mirrorlist`. Thêm dòng sau vào trước dòng đầu tiên: `Server = http://f.archlinuxvn.org/archlinux/$repo/os/$arch`
|
||||
|
||||
Sau đó lưu (_Ctrl+O_, _Enter_) và thoát (_Ctrl+X_)
|
||||
|
||||
Cài các gói cần thiết bằng lệnh sau: `pacstrap /mnt base linux linux-firmware`
|
||||
|
||||
## Thiết lập hệ thống
|
||||
|
||||
Sau đây là các tinh chỉnh để hệ thống hoạt động.
|
||||
|
||||
### Tạo file fstab
|
||||
|
||||
Để mount các phân vùng khi khởi động: `genfstab -U /mnt >> /mnt/etc/fstab` (có thể thay `-U` bằng `-L`, nghĩa là thay vì định nghĩa bằng UUID thì định nghĩa bằng label của phân vùng)
|
||||
|
||||
#### Change root vào hệ thống mới
|
||||
|
||||
`arch-chroot /mnt`
|
||||
|
||||
#### Thiết lập time zone
|
||||
|
||||
Chúng ta ở Việt Nam sẽ chọn thành phố Hồ Chí Minh: `ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime`. Đồng bộ giờ: `hwclock --systohc`
|
||||
|
||||
#### Định dạng vùng
|
||||
|
||||
Đầu tiên nên cài đặt vim để có thể chỉnh sửa file văn bản: `pacman -S vim`. Sau đó sửa file sau: `vim /etc/locale.gen` Uncomment dòng _en_us.UTF-8 UTF-8_ (và dòng _vi_VN UTF-8_ nếu thích :v) (bạn nhấn phím _i_ để vào chế độ insert mới sửa được), lưu lại và thoát (_Esc_, sau đó gõ `:wq` sau đó chạy lệnh: `locale-gen`. Tiếp tục sửa một file khác: `vim /etc/locale.conf`. Thêm vào đây dòng sau _LANG=en_US.UTF-8_
|
||||
|
||||
#### Thiết lập tên máy tính trong mạng
|
||||
|
||||
Sửa file `/etc/hostname`, _myhostname_ vào đó (với _myhostname_ là tên bạn muốn đặt cho máy tính của bạn). Tương tự, sửa file `/etc/hosts` với các thông số như sau:
|
||||
|
||||
```shell
|
||||
127.0.0.1 localhost
|
||||
::1 localhost
|
||||
127.0.1.1 myhostname.localdomain myhostname
|
||||
```
|
||||
|
||||
#### Khởi tạo Initramfs
|
||||
|
||||
(thông thường bước này không cần thiết)
|
||||
|
||||
`mkinitcpio -P`
|
||||
|
||||
#### Đặt mật khẩu cho root
|
||||
|
||||
Gõ: `passwd`. Sau đó điền mật khẩu 2 lần.
|
||||
|
||||
#### Cài đặt microcode (tùy chọn)
|
||||
|
||||
Tùy vào bạn sử dụng CPU Intel hay AMD mà cài gói cho phù hợp. `pacman -S amd-ucode` (nếu bạn dùng AMD) hoặc `pacman -S intel-ucode` (nếu bạn dùng Intel)
|
||||
|
||||
#### Cài đặt boot loader
|
||||
|
||||
Ở đây mình dùng `grub` (khá phổ biến, nhiều tùy chọn, tùy chỉnh), và gói `efibootmgr` (mình đang cài trong chế độ UEFI mà :D):
|
||||
|
||||
```shell
|
||||
pacman -S grub efibootmgr
|
||||
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Archlinux
|
||||
```
|
||||
|
||||
Nếu bạn mount phân vùng EFI giống mình thì làm như trên, không thì đổi `/efi` thành mount point EFI của bạn. "Archlinux" trong lệnh trên có thể đổi thành cái khác nếu bạn thích, nó sẽ hiển thị trong Boot Options trong BIOS của bạn (nếu bạn không lock Boot Order, máy ThinkPad của mình có chức năng này).
|
||||
|
||||
Cập nhật GRUB: `grub-mkconfig -o /boot/grub/grub.cfg`
|
||||
|
||||
Vậy là bạn đã hoàn thành cài Arch Linux lên máy rồi đấy, giờ thì có thể reboot ngay để trải nghiệm thôi:
|
||||
|
||||
```shell
|
||||
umount -R /mnt
|
||||
reboot
|
||||
```
|
||||
|
||||
Tuy nhiên mình khuyên bạn nên làm theo các bước "hậu cài đặt" trước khi reboot để có trải nghiệm tốt nhất, vì bạn chỉ mới có các gói cơ bản trên máy thôi, nên chưa thể dùng như Desktop được đâu. Mình sẽ viết bài cho điều này sớm nhất. Hẹn gặp lại các bạn.
|
||||
|
||||
Tham khảo tại nguồn: <https://wiki.archlinux.org/index.php/Installation_guide>
|
||||
|
||||
Chúc các bạn thành công! Nếu có gặp khó khăn gì, bạn có thể comment bên dưới, mình sẽ cố gắng giúp đỡ.
|
||||
@@ -0,0 +1,79 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-08T07:00:00+07:00
|
||||
title = "'Hậu cài đặt' Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Tiếp theo bài cài đặt Arch Linux thì đây là những điều theo mình là nên làm trước khi reboot để dùng.
|
||||
|
||||
## Cài đặt giao diện cho Arch Linux
|
||||
|
||||
Sau khi hoàn tất các bước ở bài cài đặt, thì bạn đã có thể sử dụng Arch Linux rồi, tuy nhiên đó chỉ là giao diện console thôi, để cài đặt môi trường Desktop thì bạn làm như sau: (lúc này vẫn còn ở trong chế độ của `arch-chroot` nha các bạn)
|
||||
|
||||
```shell
|
||||
pacman -S xorg-server
|
||||
pacman -S cinnamon
|
||||
```
|
||||
|
||||
Ở đây mình dùng desktop environment (DE) là cinnamon; sau này các bài hướng dẫn mình cũng hướng dẫn cho cinnamon thôi. Arch hỗ trợ rất nhiều DE khác nhau được liệt kê ở <https://wiki.archlinux.org/index.php/Desktop_environment,> các bạn có thể chọn một DE khác thích hợp như Gnome, KDE,... Đặc biệt Arch có hỗ trợ i3, một DE có thể nói là 'dành cho lập trình viên' rất 'cool', nhưng mình không pro như thế nên chưa dùng được :v Vì cinnamon cũng dựa trên gtk nên các bạn có thể cài đặt gnome để có những phần mềm bổ sung thêm khác
|
||||
|
||||
```shell
|
||||
pacman -S lightdm lightdm-gtk-greeter
|
||||
```
|
||||
|
||||
Mình dùng LightDM làm display manager, nếu bạn dùng gnome thì mặc định đã có gdm được cài rồi
|
||||
|
||||
```shell
|
||||
systemctl enable lightdm
|
||||
```
|
||||
|
||||
Để service của LightDM khởi động cùng hệ thống, nếu dùng DM khác thì bạn thay tên vào đó
|
||||
|
||||
```shell
|
||||
systemctl enable NetworkManger
|
||||
```
|
||||
|
||||
(đây là service quản lý mạng (chủ yếu là để kết nối wifi dễ dàng hơn))
|
||||
|
||||
## Thêm người dùng vào hệ thống
|
||||
|
||||
Mặc định bạn mới có user root trong hệ thống thôi, để dùng thì mình nên tạo một user khác để đăng nhập vào:
|
||||
|
||||
```shell
|
||||
useradd -m -G wheel -s /bin/bash tien
|
||||
```
|
||||
|
||||
(-m để hệ thống tạo một thư mục home cho bạn, vd ở đây là /home/tien; -G wheel để thêm bạn vào group wheel, group này dùng để cấp quyền sudo cho bạn sau này; -s /bin/bash, shell của bạn, ở đây mình dùng bash, sau này mình viết bài giới thiệu cho các bạn về zsh, một shell dễ tùy chỉnh hơn; tien là tên người dùng bạn muốn tạo, mình tên Tiến thì tạo tên tien thôi :v)
|
||||
|
||||
### Cấp quyền sudo
|
||||
|
||||
```shell
|
||||
pacman -S sudo
|
||||
```
|
||||
|
||||
(tất nhiên phải có sudo mới cấp quyền chứ :v)
|
||||
|
||||
```shell
|
||||
pacman -S neovim
|
||||
```
|
||||
|
||||
(editor mình sẽ dùng để edit, bạn có thể cài vim, vi hay nano,... tùy bạn, mình thích dùng neovim nên cài thôi :))
|
||||
`EDITOR=nvim visudo` (mặc định visudo dùng vi nên để dùng neovim mình phải cấu hình lại EDITOR)
|
||||
|
||||
Bỏ comment ở dòng `wheel ALL=(ALL) ALL`, vậy là được, lưu lại và thoát thôi :D
|
||||
|
||||
## Cài đặt một terminal
|
||||
|
||||
Nếu bạn chỉ cài cinnamon thì ban đầu bạn sẽ chưa có terminal nào, nếu muốn dùng lệnh thì sẽ phải vào TTY khác (Ctrl + Alt + Fx(x từ 2 đến 6 ấy). Ở đây mình cài Terminator nhé:
|
||||
|
||||
```shell
|
||||
pacman -S terminator
|
||||
```
|
||||
|
||||
Vậy là bạn đã có một hệ thống 'có thể dùng được' rồi đấy, sau này mình sẽ có các bài làm đẹp Arch, tinh chỉnh Arch,.. nữa. Hẹn gặp lại!!
|
||||
@@ -0,0 +1,51 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-13T07:00:00+07:00
|
||||
title = "Cài đặt package trong AUR cho Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "yay", "AUR"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Arch User Repository (AUR) là nơi để người dùng nào cũng có thể tạo các package cho riêng mình và chia sẻ với những người khác cùng sử dụng; một lí do khiến cho Arch trở nên rất tiện lợi với người dùng, một trong những lí do để họ chọn Arch là distro để dùng.
|
||||
|
||||
Có thể nói hầu hết các gói bạn có thể tìm ở các distro khác đều có thể có ở Official Repositories hoặc trong AUR. Và những package "được biết đến" cũng sẽ có bản trong AUR. VD như `ibus-bamboo` - bộ gõ yêu thích của mình cũng có trong đây.
|
||||
|
||||
Hơn nữa, với những phần mềm open source hay cung cấp source code cho người dùng tự build (như trên GitHub chẳng hạn), thì việc cài đặt từ AUR dễ dàng hơn nhiều, và cũng dễ quản lý hơn nữa.
|
||||
|
||||
Ở thời điểm mình viết bài này, mặc dù trong Official repositories có 11278 (một con số cũng rất ấn tượng rồi), nhưng trong AUR có đến tận 59729 packages, một con số rất 'khủng' phải không :D
|
||||
|
||||
Và điểm mạnh trên cũng chính là điểm yếu của nó, vì ai cũng có thể thêm package vào đó, nên vẫn hay bị "mang tiếng" là dễ bị tác giả "tặng kèm" vài con virus hay malware,... vào máy :v. Vì vậy các bạn nên cẩn thận, lựa chọn package có nguồn đáng tin cậy để cài đặt thôi nhé, chẳng hạn như package được đề cập trong Arch Wiki, từ trang chủ của gói đó, vd như ibus-bamboo có ghi rõ gói AUR dành cho Arch và các distro base-on Arch; hoặc các package có votes cao, popularity nhiều,...
|
||||
|
||||
## Hướng dẫn cài đặt package từ AUR (yay)
|
||||
|
||||
Ở đây mình sẽ hướng dẫn cài yay (một AUR helper khá nổi), vì hướng dẫn cơ bản nên các bước config build,... mình sẽ bỏ qua, chỉ hướng dẫn 3 bước chính
|
||||
|
||||
Trước tiên thì bạn nên cài đặt gói base-devel trước, đây là gói chứa nhiều công cụ dùng để build package:
|
||||
|
||||
```shell
|
||||
sudo pacman -S base-devel
|
||||
```
|
||||
|
||||
Sau đó clone package từ link của AUR về, ở đây mình ví dụ là yay (<https://aur.archlinux.org/packages/yay/):>
|
||||
|
||||
```shell
|
||||
git clone https://aur.archlinux.org/yay.git`
|
||||
cd yay
|
||||
makepkg -si
|
||||
```
|
||||
|
||||
Vậy là xong rồi đó :D, quá đơn giản phải không nào, package này sẽ có thể dễ dàng quản lý được bằng pacman như một package thông thường, tuy nhiên pacman sẽ không thể cập nhật những package trong AUR được, nếu muốn bạn phải theo dõi và cập nhật bằng tay bằng cách làm lại các bước trên. Để khắc phục sự bất tiện này, chúng ta cần sự trợ giúp từ các AUR helpers, và ở đây mình sẽ dùng yay.
|
||||
|
||||
## yay (Yet another Yogurt)
|
||||
|
||||
Như đã nói ở trên, việc cài đặt package từ AUR có thể nói là rất đơn giản, qua 3 bước chính; tuy nhiên lại không tự cập nhật,... được. Vì vậy mình giới thiệu đến các bạn yay, với yay, việc cài đặt package từ AUR chỉ cần 1 lệnh y chang pacman thôi :v (vì yay là một trong những Pacman wrappers mà :D), và quá trình cài chỉ khác một chút là có thêm bước build package nên lâu hơn thông thường mà thôi. Hơn nữa yay là 'tinh hoa tổng hợp' từ yaourt, apacman và pacaur (những cái tên khá là 'cộm cán' nếu bạn biết đến chúng :v, dù yaourt đã bị 'chết', bởi vậy yay mới là sự thay thế cho nó).
|
||||
|
||||
Không dài dòng nữa, bên trên đã là cách cài đặt yay rồi nên mình không giới thiệu nữa :v
|
||||
|
||||
Và cách sử dụng... Hmm, vì yay có cú pháp giống pacman nên cũng khỏi giới thiệu luôn :v, muốn cài package X cứ `yay -S X` thôi :v, và các tùy chọn sau thì bạn cứ xem thử nó báo gì rồi chọn, nếu lười thì cứ Enter mãi thôi, 9/10 là bạn sẽ cài được package :v
|
||||
|
||||
À, tip nhỏ, đó là để cập nhật hệ thống bạn chỉ cần dùng lệnh `yay` thôi (nó sẽ thay cho `yay -Syyu`, giống với `sudo pacman -Syyu` luôn đó :v), vì vậy không cần phức tạp, cứ `yay` thôi :D
|
||||
@@ -0,0 +1,79 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-14T07:00:00+07:00
|
||||
title = "Tinh chỉnh Cinnamon trong Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Cinnamon"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Nhìn sơ thì cũng thấy Cinnamon khi bạn cài đặt Linux Mint thì đẹp hơn nhiều so với cái mà bạn vừa cài đặt, ôi thôi, nó 'chuối ơi là chuối' luôn. Vì vậy chúng ta sẽ làm cho nó được như trong Mint nha !😀
|
||||
|
||||
## Slick-greeter
|
||||
|
||||
Đây là greeter của LightDM trong Mint (mặc định khi cài Arch là GTK+ Greeter). Để cài đặt bạn chạy lệnh sau:
|
||||
|
||||
```shell
|
||||
yay -S lightdm-slick-greeter
|
||||
```
|
||||
|
||||
Và cài thêm cái này để tinh chỉnh bằng giao diện (GUI), không thì mình vẫn có thể 'chơi' với mấy file .conf thôi :v
|
||||
|
||||
```shell
|
||||
yay -S lightdm-settings
|
||||
```
|
||||
|
||||
Sửa file /etc/lightdm/lightdm.conf như sau:
|
||||
Ở dưới mục `[Seat:*]` tìm dòng `greeter-session=example-gtk-gnome`, uncomment và sửa thành `greeter-session=lightdm-slick-greeter`
|
||||
|
||||
## Themes và icons
|
||||
|
||||
Ban đầu thì Cinnamon dùng Adwaita của Gnome, nhìn khá là thô sơ, giờ chúng ta cài thêm Theme và Icon của Mint vào:
|
||||
|
||||
```shell
|
||||
yay -S mint-themes mint-x-icons mint-y-icons
|
||||
```
|
||||
|
||||
Sau đó vào Settings để đổi theme với icon trong mục Appearance -> Themes nhé!
|
||||
|
||||
## Âm thanh
|
||||
|
||||
Ban đầu thì chưa có hiệu ứng âm thanh ánh sáng gì hết trơn ấy, mình thêm vào bằng các package như sau:
|
||||
|
||||
```shell
|
||||
yay -S cinnamon-sound-effects mint-sounds
|
||||
```
|
||||
|
||||
Chỉnh lại trong Settings mục Hardware -> Sound tab Sounds để dùng nhé!
|
||||
(Nếu không có tác dụng thì bạn thử restart lại cinnamon nha)
|
||||
|
||||
## Phần mềm cần thiết
|
||||
|
||||
Khi mới cài hầu như Cinnamon không có gì dùng hết :/, nên mình mới khuyên cài group gnome trước đã rồi hãy cài Cinnamon, mấy cái cần thiết thì như là Screenshot, Terminal, Software:
|
||||
|
||||
```shell
|
||||
yay -S gnome-screenshot gnome-terminal gnome-software
|
||||
```
|
||||
|
||||
, cơ mà cái gnome thì ‘tặng kèm’ kha khá phần mềm khác nữa :v, mà tiêu chí của Arch là ‘Keep It Simple’ nên nếu không cài gnome thì cũng chẳng sao cả, cứ cài cái gì cần thiết thôi.
|
||||
|
||||
Đó là điều hơi buồn của cinnamon trên Arch, bởi vì các DE khác thì thường có gói extra đi kèm: `deepin` có `deepin-extra`, `gnome` có `gnome-extra`, `mate` có `mate-extra`,... đến cả thằng em được mệnh danh là 'gọn nhẹ' `xfce4` mà cũng có `xfce4-goodies` nữa.;còn `cinnamon` thì chưa. Nhưng mà nếu cần combo của Cinnamon ư? Thì mình nghĩ cài nhiêu đây là cơ bản rồi:
|
||||
|
||||
```shell
|
||||
yay -S xed xviewer xreader xplayer pix blueberry
|
||||
```
|
||||
|
||||
## Nemo-fileroller
|
||||
|
||||
Đây là package giúp cho bạn có tùy chọn “extract here” trong nemo. Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S nemo-fileroller
|
||||
```
|
||||
|
||||
Sau đó restart nemo: `nemo -q`
|
||||
|
||||
Đây chỉ là cài cho giống Mint thôi, còn để làm Arch Cinnamon độc đáo hơn nữa, màu mè hơn nữa thì mình dành cho bài khác nha. Tạm biệt các bạn, hẹn gặp lại.
|
||||
@@ -0,0 +1,163 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-15T07:00:00+07:00
|
||||
title = "Vài phần mềm thiết thực cho Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bài viết này mình giới thiệu một số phần mềm có thể cần thiết (đối với mình – với vai trò là một sinh viên CNTT sử dụng Arch Linux)
|
||||
|
||||
## Web Browser
|
||||
|
||||
Web browser là một thành phần quan trọng phải không nào, để lướt Facebook hay để xem blog này cũng vậy :v. Mặc dù Edge đã xoắn ngôi Firefox để giành vị trí top 2 browser phổ biến, nhưng Edge chưa có bản cho linux, vì vậy có thể nói Chrome và Firefox vẫn là 2 browser phổ biến trong thế giới của chúng ta, để cài đặt:
|
||||
Chrome: `yay -S google-chrome`
|
||||
Firefox: `yay -S firefox`
|
||||
Ngoài ra còn có các browser khác như: Brave (`brave-bin`), Chromium (`chromium`), Opera (`opera`), Vivaldi (`vivaldi`),...
|
||||
Bạn xem thêm tại: <https://wiki.archlinux.org/index.php/List_of_applications/Internet#Web_browsers> nhé!
|
||||
|
||||
## Bộ gõ tiếng Việt
|
||||
|
||||
Từ lâu, bộ gõ tiếng Việt trên Linux đã là một nỗi đau :v, tuy nhiên gần đây mình tìm được một bộ gõ khá là Ok, đó là [ibus-bamboo](https://github.com/BambooEngine/ibus-bamboo). Chế độ gõ mặc định thì cũng hao hao giống `ibus-unikey` thôi, nhưng bằng việc chuyển chế độ gõ (shortcut là _Shift+~_) thì bạn có thể chuyển sang chế độ gõ khác cho từng phần mềm, có tận 7 chế độ, bạn có thể chuyển cho phù hợp. VD mình chọn chế độ 4. ForwardKeyEvent II để viết blog này đấy. Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S ibus-bamboo
|
||||
```
|
||||
|
||||
Bạn vào Ibus Preference để thêm ibus-bamboo là một bộ gõ nhé, sau đó thêm command này vào Startup Application:
|
||||
|
||||
```shell
|
||||
ibus-daemon -drx
|
||||
```
|
||||
|
||||
để Ibus khởi chạy cùng hệ thống nha!
|
||||
|
||||
## Phần mềm chụp màn hình
|
||||
|
||||
Ngoài `gnome-screenshot` ra thì lúc trước mình có dùng shutter, chẳng may cái này ngừng phát triển rồi, mình cũng tìm được một cái khác thay thế là `flameshot`, cũng khá là tiện, bạn có thể chọn khung để chụp, điều chỉnh lại khung sau khi đã chọn,... Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S flameshot
|
||||
```
|
||||
|
||||
## Office
|
||||
|
||||
Hẳn phải cần đến một bộ Office để còn 'làm ăn' với văn bản, bảng tính hay trình chiếu các kiểu chứ. Mình thì thường dùng Libre Office, cài đặt cũng dễ thôi, Arch có 2 bản fresh và still, mình thì hay dùng fresh:
|
||||
|
||||
```shell
|
||||
yay -S libreoffice-fresh
|
||||
```
|
||||
|
||||
Ngoài Libre ra thì Arch còn có kha khá các bản Office khác cho bạn lựa chọn: Calligra (`calligra`), Only Office (`onlyoffice-bin`), Open Office (`openoffice`), Softmaker Office (`freeoffice`) và WPS Office (`wps-office`) cùng với những phần mềm 'rời', thay thế cho từng phần mềm trong các bộ office. Với LibreOffice thì ibus đã hoạt động khá mượt rồi, tuy nhiên với các bộ khác thì mình thấy phải thêm vào `/etc/profile` các dòng sau:
|
||||
|
||||
```shell
|
||||
export GTK_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
```
|
||||
|
||||
## Terminal
|
||||
|
||||
Mặc định bạn có thể dùng gnome-terminal cũng được, nhưng mình hay dùng 2 terminal là terminator và guake, mình có hướng dẫn cài terminator ở bài hậu cài đặt rồi, nên giờ cài thêm Guake thôi:
|
||||
|
||||
```shell
|
||||
yay -S guake
|
||||
```
|
||||
|
||||
Guake giúp bạn có thể mở nhanh terminal bằng shortcut F12, tinh chỉnh để terminal tự ẩn, tự chạy cùng hệ thống,… rất tiện
|
||||
|
||||
## Nhắn tin tiện lợi hơn
|
||||
|
||||
Việc nhắn tin 'all-in-one' rất dễ với Rambox, Rambox giúp chúng ta có thể nhắn tin Messenger, Skype, Telegram... thậm chí cả quản lý email như Gmail, Outlook,... Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S rambox-bin
|
||||
```
|
||||
|
||||
## Quản lý clipboard
|
||||
|
||||
Khi bạn... copy code :v rất nhiều và paste một lượt? Bạn không muốn chuyển tab copy xong paste từng đợt? Đó là lúc bạn cần đến một phần mềm để quản lý clipboard, ở đây mình dùng CopyQ:
|
||||
|
||||
```shell
|
||||
yay -S copyq
|
||||
```
|
||||
|
||||
## Cloud sync
|
||||
|
||||
Tin buồn là 2 cloud lớn với sinh viên là Google Drive và Onedrive (dùng mail sinh viên thì có Google Drive unlimit, còn Onedrive thì cho 5TB) thì không hỗ trợ linux một cách chính thức, có nhiều cách thay thế nhưng thay thế thì ai đảm bảo đâu, nên mình không dùng. Mình dùng Dropbox:
|
||||
|
||||
```shell
|
||||
yay -S dropbox
|
||||
```
|
||||
|
||||
Ngoài ra thì cũng có nhiều host hỗ trợ linux lắm, như MEGA (`megasync`), Nextcloud (`nextclout-client` nếu bạn dùng host của người ta),...
|
||||
Bạn có thể tham khảo một số host khác được đề cập tại đây:
|
||||
<https://wiki.archlinux.org/index.php/List_of_applications/Internet#Cloud_synchronization_clients>
|
||||
|
||||
## Tools lập trình
|
||||
|
||||
Mình đang thử làm quen với NeoVim:
|
||||
|
||||
```shell
|
||||
yay -S neovim
|
||||
```
|
||||
|
||||
Nhưng trước khi quen được thì VScode vẫn là editor mình đang dùng.
|
||||
VScode: editor mình ưng ý nhất hiện tại:
|
||||
|
||||
```shell
|
||||
yay -S visual-studio-code-bin
|
||||
```
|
||||
|
||||
## Teamviewer
|
||||
|
||||
Teamviewer – kết nối từ xa cho mọi nhà :v
|
||||
|
||||
```shell
|
||||
yay -S teamviewer
|
||||
```
|
||||
|
||||
Các bạn nhớ enable teamviewerd service để kết nối được nha:
|
||||
|
||||
```shell
|
||||
sudo systemctl enable teamviewerd
|
||||
```
|
||||
|
||||
rồi restart mới dùng được
|
||||
|
||||
## Phần mềm compare file
|
||||
|
||||
```shell
|
||||
yay -S meld
|
||||
```
|
||||
|
||||
## Phần mềm ảo hóa để chạy máy ảo
|
||||
|
||||
Khi cài nhóm gnome thì bạn đã có sẵn gnome-boxes rồi, tuy nhiên thì mình vẫn thấy VirtualBox là nhất trên Linux :v Lưu ý là bạn cần cài thêm linux-headers (nếu bạn dùng kernel mặc định của Arch) để mà cài dkms nhé!
|
||||
|
||||
```shell
|
||||
yay -S linux-headers
|
||||
yay -S virtualbox
|
||||
```
|
||||
|
||||
## Phần mềm dọn dẹp rác
|
||||
|
||||
Từ lâu BleachBit đã nổi danh sánh vai với Ccleaner trên Windows :). Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S bleachbit
|
||||
```
|
||||
|
||||
## Phần mềm quản lý download
|
||||
|
||||
Uget không bằng được Internet Download Manager (IDM) thần thánh trên Windows, nên dùng đỡ nhé, sẵn cài thêm plugin `aria2` luôn:
|
||||
|
||||
```shell
|
||||
yay -S uget aria2
|
||||
```
|
||||
|
||||
Nếu có phần mềm gì hay mình sẽ cập nhật thêm cũng tại bài viết này luôn nhé! Hẹn gặp lại.
|
||||
@@ -0,0 +1,122 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-16T07:00:00+07:00
|
||||
title = "Zsh và Antibody"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Zsh", "Antibody"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bài viết này mình giới thiệu về zsh, một shell khác với bash, với khả năng tùy biến rất cao, hỗ trợ rất nhiều, nhất là với những bạn hay dùng lệnh.
|
||||
|
||||
## Cài đặt zsh và đặt làm shell mặc định
|
||||
|
||||
Cài đặt zsh:
|
||||
|
||||
```shell
|
||||
yay -S zsh
|
||||
```
|
||||
|
||||
Đặt zsh là shell mặc định:
|
||||
|
||||
```shell
|
||||
chsh -s /bin/bash/zsh
|
||||
```
|
||||
|
||||
## Tùy biến zsh
|
||||
|
||||
Mặc định thì zsh cũng chỉ là shell bình thường như bash thôi, nhưng tùy biến rồi thì nó thành 'siêu shell' :v
|
||||
|
||||
Là dân pro thì bạn có thể tự tùy chỉnh bằng tay, bằng code để tùy biến zsh theo ý thích. Nhưng mình thì không được như vậy, nên mình sẽ giới thiệu đến các bạn framework oh-my-zsh khá nổi tiếng và plugin manager antibody. Ngày trước thì có antigen, nhưng mình thấy antigen đã không còn được phát triển nữa, thay vào đó là antibody, được so sánh với hiệu năng tốt hơn (mặc dù mình thấy việc tích hợp ohmyzsh vào antibody có phần khập khiễng hơn so với antigen). Các bạn có thể xem thông tin thêm tại trang chủ của mấy cái trên nha:
|
||||
|
||||
- <https://github.com/robbyrussell/oh-my-zsh>
|
||||
- <https://github.com/getantibody/antibody>
|
||||
- <https://github.com/zsh-users/antigen>
|
||||
|
||||
Để cài antibody cho Arch:
|
||||
|
||||
```shell
|
||||
yay -S antibody
|
||||
```
|
||||
|
||||
(cái này có ghi trong trang chủ luôn rồi^^, đảm bảo nguồn)
|
||||
|
||||
Tùy biến antibody: Ở đây mình hướng dẫn cơ bản thôi, zsh thì có file `~/.zshrc` là file source cũng như `~/.bashrc` của bash vậy đó. Nhưng antibody thì khuyến khích viết các plugin ở một file khác, vd như `~./.zsh_plugins.txt`, sau đó thì load antibody bằng 2 cách: tĩnh hoặc động.
|
||||
Sau đây là ví dụ về file `~./.zsh_plugins.txt` của mình:
|
||||
|
||||
```shell
|
||||
robbyrussell/oh-my-zsh
|
||||
|
||||
robbyrussell/oh-my-zsh path:plugins/archlinux
|
||||
robbyrussell/oh-my-zsh path:plugins/colored-man-pages
|
||||
robbyrussell/oh-my-zsh path:plugins/colorize
|
||||
robbyrussell/oh-my-zsh path:plugins/command-not-found
|
||||
robbyrussell/oh-my-zsh path:plugins/common-aliases
|
||||
robbyrussell/oh-my-zsh path:plugins/extract
|
||||
robbyrussell/oh-my-zsh path:plugins/git
|
||||
robbyrussell/oh-my-zsh path:plugins/git-extras
|
||||
robbyrussell/oh-my-zsh path:plugins/github
|
||||
robbyrussell/oh-my-zsh path:plugins/golang
|
||||
robbyrussell/oh-my-zsh path:plugins/heroku
|
||||
robbyrussell/oh-my-zsh path:plugins/history
|
||||
robbyrussell/oh-my-zsh path:plugins/node
|
||||
robbyrussell/oh-my-zsh path:plugins/npm
|
||||
robbyrussell/oh-my-zsh path:plugins/pip
|
||||
robbyrussell/oh-my-zsh path:plugins/python
|
||||
robbyrussell/oh-my-zsh path:plugins/screen
|
||||
robbyrussell/oh-my-zsh path:plugins/sudo
|
||||
robbyrussell/oh-my-zsh path:plugins/systemd
|
||||
robbyrussell/oh-my-zsh path:plugins/thefuck
|
||||
robbyrussell/oh-my-zsh path:plugins/vscode
|
||||
robbyrussell/oh-my-zsh path:plugins/web-search
|
||||
robbyrussell/oh-my-zsh path:plugins/yarn
|
||||
robbyrussell/oh-my-zsh path:plugins/z
|
||||
|
||||
desyncr/auto-ls
|
||||
djui/alias-tips
|
||||
mafredri/zsh-async
|
||||
srijanshetty/node.plugin.zsh
|
||||
srijanshetty/zsh-pip-completion
|
||||
voronkovich/mysql.plugin.zsh
|
||||
wuotr/zsh-plugin-vscode
|
||||
zlsun/solarized-man
|
||||
zpm-zsh/ls
|
||||
zpm-zsh/ssh
|
||||
zsh-users/zsh-completions
|
||||
zsh-users/zsh-autosuggestions
|
||||
zsh-users/zsh-syntax-highlighting
|
||||
zsh-users/zsh-history-substring-search
|
||||
|
||||
robbyrussell/oh-my-zsh path:themes/candy.zsh-theme
|
||||
```
|
||||
|
||||
Này chỉ là ví dụ thôi, một vài plugin bạn phải cài thêm tool mới dùng được nha. Rồi, tới phần load. Nôm na thì load tĩnh là bạn chạy antibody thành một file `config.sh`.
|
||||
|
||||
VD: `antibody bundle < ~/.zsh_plugins.txt > ~/.zsh_plugins.sh`
|
||||
|
||||
Sau đó trong file `~/.zshrc` bạn chỉ cần thêm dòng: `source ~/.zsh_plugins.sh` là được.
|
||||
|
||||
Cách này nhanh hơn load động, tuy nhiên load tĩnh không tự cập nhật plugin khi có bản cập nhật. Vì vậy mình dùng load động, mình thấy chậm hơn chẳng bao nhiêu (mà vẫn nhanh hơn antigen), nhưng được cập nhật thường xuyên (mỗi lần chạy là mỗi lần check cập nhật đó). Chỉ cần load trong file `~/.zshrc` như sau là được:
|
||||
|
||||
```shell
|
||||
export ZSH="$(antibody home)/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh"
|
||||
|
||||
source <(antibody init)
|
||||
antibody bundle < ~/.zsh_plugins.txt
|
||||
```
|
||||
|
||||
Do mình dùng Oh-My-Zsh mà antibody không hiểu được nên mới cần dòng đâu tiên, antigen thì chỉ cần dùng `antigen use oh-my-zsh` thôi, với lại load plugin của oh-my-zsh trong antibody cũng phiền phức hơn nhiều :/ vì ghi quá trời dòng (này mình không biết cách khác, tại lười thử, với dùng multi edit của vscode sửa cũng nhanh, nên khỏi tốn chất xám mắc công :v)
|
||||
|
||||
Nếu bạn không rành, và cũng chẳng muốn tùy biến thì có thể dùng package grml-zsh-config của Arch:
|
||||
|
||||
```shell
|
||||
yay -S grml-zsh-config
|
||||
```
|
||||
|
||||
Package này sẽ tùy biến zsh của bạn như y chang trong bộ cài bạn dùng để cài Arch vậy.
|
||||
Tuy nhiên nếu bạn muốn tùy biến thì nên gỡ nó ra, vì nó conflict với vụ dùng theme đấy, có thể chỉnh được mà phiền, nên gỡ quách nó ra cho xong :v
|
||||
|
||||
Tạm biệt các bạn, hẹn gặp lại ở bài viết sau nhé!^^
|
||||
@@ -0,0 +1,31 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-17T07:00:00+07:00
|
||||
title = "Một số vấn đề gặp phải"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Trouble"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Đây là bài viết tổng hợp một số vấn đề mình gặp phải và cách giải quyết, đây là những cách mà mình làm thì nó hoạt động nên ở mức độ "just work", mình không đảm bảo là nếu bạn gặp tình huống như mình thì sẽ được. Bài viết sẽ được cập nhật lại trong quá trình sử dụng của mình nhé!
|
||||
|
||||
#### Arch Cinnamon không tắt màn hình sau thời gian đã định
|
||||
|
||||
Bạn thử cài đặt gói `light-locker` xem:
|
||||
|
||||
```shell
|
||||
yay -S light-locker
|
||||
```
|
||||
|
||||
#### Không play được file .mp4 trong Totem và các player khác base-on Totem
|
||||
|
||||
Thường thì lỗi này do các bạn thiếu codec cho file này, để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S gst-libav
|
||||
```
|
||||
|
||||
Hẹn gặp lại các bạn trong các bài viết khác nha!
|
||||
@@ -0,0 +1,50 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-18T07:00:00+07:00
|
||||
title = "Tweaks nho nhỏ cho Firefox"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Firefox"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
## Cache on RAM
|
||||
|
||||
Mặc định thì Firefox sẽ lưu cache trong cả RAM và đĩa, khi lưu trên RAM sẽ giúp cho truy xuất cache nhanh hơn, đồng thời giảm số lần ghi đĩa (đặc biệt tốt cho SSD nhé) thì làm như sau:
|
||||
Gõ vào đường dẫn url của firefox: `about:config`
|
||||
Đặt `browser.cache.disk.enable` thành `false`
|
||||
Đảm bảo `browser.cache.memory.enable` là `true`
|
||||
Bạn cũng có thể chỉnh lượng RAM mà Firefox sẽ dùng để lưu cache trong mục `browser.cache.memory.capacity`, để mặc định là -1 Firefox sẽ tự động lựa chọn dung lượng.
|
||||
|
||||
## Tắt Pocket
|
||||
|
||||
Pocket mặc định đi kèm Firefox nhưng mình chả mấy sử dụng, nên tắt thôi :D, cũng trong `about:config` ở trên, tìm `extensions.pocket.enabled` và đặt thành false thôi !😀
|
||||
|
||||
## Cache toàn bộ profile vào RAM qua tmpfs
|
||||
|
||||
**Bạn cần đảm bảo có đủ cache để mount profile nhé, không thì sẽ gặp lỗi hết bộ nhớ đó!**
|
||||
|
||||
Mặc định thì tmpfs (service `tmp.mount`) khởi chạy mặc định rồi, để tận dụng hơn việc mount /tmp qua ram, thì ta có thể cache toàn bộ profile của Firefox vào RAM qua tmpfs luôn. Đầu tiên, cài đặt Profile-sync-daemon:
|
||||
|
||||
```shell
|
||||
yay -S profile-sync-daemon
|
||||
```
|
||||
|
||||
Sau đó sửa file `~/.config/psd/psd.conf` lại, thêm firefox vào list BROWSERS, VD:
|
||||
|
||||
```shell
|
||||
BROWSERS=”firefox”
|
||||
```
|
||||
|
||||
Profile-sync-daemon còn hỗ trợ google-chrome, bạn có thể xem thêm ngay trong file ấy, vì vậy có thể thêm browsers bạn dùng vào list trên
|
||||
Khởi chạy Profile-sync-daemon cùng hệ thống:
|
||||
|
||||
```shell
|
||||
systemctl --user enable psd.service
|
||||
```
|
||||
|
||||
Vậy là xong rồi, các bạn có thể tham khảo thêm nhiều tweaks khác tại: <https://wiki.archlinux.org/index.php/Firefox/Tweaks>
|
||||
|
||||
Hẹn gặp lại trong các bài viết khác nhé!
|
||||
@@ -0,0 +1,21 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-19T07:00:00+07:00
|
||||
title = "Dùng audio output làm input"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Tips"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Khi bạn... gọi cho gấu qua mạng, và muốn có một bản nhạc tình làm nền (cho lãng mạn :v)... Đây là một tips khá hữu ích !😀
|
||||
|
||||
Cài đặt pavucontrol:
|
||||
|
||||
```shell
|
||||
yay -S pavucontrol
|
||||
```
|
||||
|
||||
Sau đó bạn gọi cho gấu :v, mở `pavucontrol` lên, bằng menu hoặc command như trên, chọn qua tab Recording, tại input của phần mềm bạn chọn để gọi và chuyển thành 'Monitor of Built-in Audio Analog Stereo'. Vậy là xong rồi :D, hẹn gặp lại các bạn trong các bài viết khác.
|
||||
@@ -0,0 +1,21 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-20T07:00:00+07:00
|
||||
title = "Auto TRIM SSD"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "SSD"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Package `util-linux` cung cấp `fstrim.service` và `fstrim.timer` trong `systemd` rồi, nên để sử dụng bạn chỉ cần chạy `fstrim.timer` là đủ. Thực hiện như sau:
|
||||
|
||||
```shell
|
||||
sudo systemctl enable fstrim.timer
|
||||
```
|
||||
|
||||
Thời gian mặc định là 1 tuần
|
||||
|
||||
Hẹn gặp lại!
|
||||
@@ -0,0 +1,31 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-29T07:00:00+07:00
|
||||
title = "Youtube Downloader cho Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Youtube"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Như tiêu đề thì mình sẽ giới thiệu với các bạn 2 công cụ mình thường dùng để tải video từ Youtube.
|
||||
|
||||
## Youtube-dl
|
||||
|
||||
Khá phổ biến đối với nhiều distro, với nhiều tùy biến câu lệnh, rất là 'professional', tuy nhiên mình thấy tốc độ tải khá là chậm do phần xử lý nó có phần rườm rà sao ấy. Nên thường mình chỉ dùng để download playlist thôi (kiểu paste một lần rồi mình đi code, đi xem phim gì đấy tí nó tự tải xong, mặc kệ nó :v). Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S youtube-dl
|
||||
```
|
||||
|
||||
## Clipgrab
|
||||
|
||||
Cái tên này nghe mới lạ hơn nên mình giới thiệu luôn. Phần mềm này thì có giao diện, tốc độ tải thì mình đánh giá là cao hơn youtube-dl (chắc đối với mình nó như thế). Để cài đặt:
|
||||
|
||||
```shell
|
||||
yay -S clipgrab
|
||||
```
|
||||
|
||||
Hẹn gặp lại các bạn trong bài viết khác.
|
||||
@@ -0,0 +1,17 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-04-30T07:00:00+07:00
|
||||
title = "Làm con trỏ chuột trên màn hình đăng nhập đẹp hơn"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Cursor"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Như tiêu đề, để thay đổi con trỏ chuột trong màn hình đăng nhập, bạn sửa giá trị **Inherits** ở file `/usr/share/icons/default/index.theme`.
|
||||
|
||||
Thông thường, nếu bạn muốn đặt con trỏ chuột giống với con trỏ bạn đang dùng, có thể tham khảo ở file `~/.icons/default/index.theme` nhé!
|
||||
|
||||
Chúc các bạn thành công!
|
||||
@@ -0,0 +1,33 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-01T07:00:00+07:00
|
||||
title = "Theme cho GRUB"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "GRUB"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bạn muốn có giao diện GRUB đẹp hơn? Hôm nay mình sẽ chia sẻ cách để tạo giao diện GRUB đẹp hơn một tí. Ở đây mình ví dụ là theme litarvan có sẵn trong repo của Arch:
|
||||
|
||||
```shell
|
||||
yay -S grub-theme-vimix
|
||||
```
|
||||
|
||||
Sau đó thêm dòng sau vào file `/etc/default/grub`:
|
||||
|
||||
```shell
|
||||
GRUB_THEME=”/usr/share/grub/themes/Vimix/theme.txt”
|
||||
```
|
||||
|
||||
Cập nhật grub và khởi động lại tận hưởng nào! 😀
|
||||
|
||||
```shell
|
||||
grub-mkconfig -o /boot/grub/grub.cfg
|
||||
```
|
||||
|
||||
Nếu bạn không thích theme này thì có thể tự tải theme hoặc tự tạo theme mình thích. Lưu ý là nên để ở thư mục nào đó mà hệ thống có thể truy cập được không cần quỵền người dùng nhé. VD `/usr/share` như trên.
|
||||
|
||||
Chúc các bạn có được một GRUB thật đẹp nhé! Hẹn gặp lại.
|
||||
@@ -0,0 +1,26 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-02T07:00:00+07:00
|
||||
title = "Kích hoạt Numlock khi khởi động với LightDM"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Cài đặt numlockx:
|
||||
|
||||
```shell
|
||||
yay -S numlockx
|
||||
```
|
||||
|
||||
Mở file `/etc/lightdm/lightdm.conf`, thêm dòng như sau:
|
||||
|
||||
```shell
|
||||
[Seat:*]
|
||||
greeter-setup-script=/usr/bin/numlockx on
|
||||
```
|
||||
|
||||
Vậy là xong!!
|
||||
@@ -0,0 +1,71 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-03T07:00:00+07:00
|
||||
title = "Splash screen cho Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Plymouth"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bài này mình sẽ hướng dẫn các bạn cài Plymouth làm Splash screen trên Arch Linux. Giống kiểu mấy chấm xoay xoay trên Windows, 5 chấm trắng trắng cam cam trên Ubuntu (mà nay bản 20.04 đổi rồi) hay vòng tròn quay quay trên Fedora vậy.
|
||||
|
||||
**Note**: Mình chỉ hướng dẫn thôi chứ mình không còn dùng nữa. Vì mình cảm giác nó làm quá trình khởi động của mình chậm đi.
|
||||
|
||||
## Đầu tiên cần cài đặt Plymouth
|
||||
|
||||
```shell
|
||||
yay -S plymouth
|
||||
```
|
||||
|
||||
Chỉnh sửa file `/etc/mkinitcpio.conf`: Thêm plymouth vào sau base và udev trong dòng HOOKS. VD như sau:
|
||||
|
||||
```shell
|
||||
HOOKS=(base udev plymouth ...)
|
||||
```
|
||||
|
||||
Trong file /etc/default/grub, sửa lại kernel parameters lại như sau:
|
||||
|
||||
```shell
|
||||
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0″
|
||||
```
|
||||
|
||||
Sau đó cập nhật lại grub nhé!
|
||||
|
||||
Trên đó chỉ là ví dụ thôi, bạn có thể xem thêm về Silent Boot tại đây: <https://wiki.archlinux.org/index.php/Silent_boot>
|
||||
|
||||
Khởi tạo lại initramfs:
|
||||
|
||||
```shell
|
||||
sudo mkinitcpio -P
|
||||
```
|
||||
|
||||
## Sau đó cài đặt theme
|
||||
|
||||
Trong AUR cũng có nhiều theme lắm rồi, bạn cũng có thể tự tìm thêm nguồn ngoài như trên GitHub... Sau đó copy vào folder `/usr/share/plymouth/themes`.
|
||||
|
||||
Liệt kê theme có trong máy:
|
||||
|
||||
```shell
|
||||
plymouth-set-default-theme -l
|
||||
```
|
||||
|
||||
Mặc định khi cài plymouth sẽ có các theme sau:
|
||||
|
||||
```shell
|
||||
details glow solar spinner tribar fade-in script spinfinity text
|
||||
```
|
||||
|
||||
Đổi theme, ví dụ là script:
|
||||
|
||||
```shell
|
||||
plymouth-set-default-theme -R script
|
||||
```
|
||||
|
||||
Để làm cho Plymouth xuất hiện sớm hơn, sửa file `/etc/plymouth/plymouthd.conf`, đổi `ShowDelay=5` thừ 5 thành 0 nhé!
|
||||
|
||||
Để transition mượt hơn, đổi display manager của bạn lại, Vd thay vì dùng `lightdm` thì dùng `lightdm-plymouth` nhé!
|
||||
|
||||
Có một vài tinh chỉnh dành cho các bạn dùng encrypt, nhưng mình nghĩ ở đây cũng không mấy bạn dùng nên không giới thiệu nhé. Nếu bạn cần, có thể inbox fanpage của mình nha! Hẹn gặp lại.
|
||||
@@ -0,0 +1,66 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-04T10:55:15+07:00
|
||||
title = "Chơi game với Steam trên Archlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Game", "Steam"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Có thể nói Steam là một nền tảng hiếm hoi ưu ái cho Linux, trong khi hầu hết các nền tảng khác không hỗ trợ Linux thì Steam có hẳn một OS riêng dựa trên Linux cho gamer, đó là SteamOS; ngoài ra còn hỗ trợ chính thức cho Ubuntu. Hơn nữa, nhiều tựa game đã làm nên tên tuổi Steam như Dota 2, CS:GO,... Mới đây thì có tựa game khá hay mình cũng có thử (và nghiện) đó là Dota Underlords (nhưng mà quyết tâm cai rồi nha^^). Hiện tại thì mình chỉ chơi game nông trại vui vui là Farm Together cùng với gấu yêu thôi :v. Nói tóm lại là nếu không nói đến các game native (mà đa phần khá là 'chuối', thiếu cuốn hút) thì Steam là nền tảng chơi game tốt nhất hiện nay cho Linux.
|
||||
|
||||
## Kích hoạt multi-lib
|
||||
|
||||
Để cài đặt Steam thì trước hết ta cần kích hoạt repo `multi-lib` cho Arch, repo này chứa các thư viện 32bit, nhằm để phục vụ cho các nền tảng như Steam hay Wine. Để kích hoạt repo này, ta mở file `/etc/pacman.conf`, và uncomment 2 dòng sau:
|
||||
|
||||
```shell
|
||||
[multilib]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
```
|
||||
|
||||
Sau đó cập nhật lại hệ thống:
|
||||
|
||||
```shell
|
||||
yay (hoặc sudo pacman -Syyu)
|
||||
```
|
||||
|
||||
## Cài Steam
|
||||
|
||||
Và thế là có thể cài steam được rồi:
|
||||
|
||||
```shell
|
||||
yay -S steam
|
||||
```
|
||||
|
||||
## Chọn card màn hình rời để chơi game
|
||||
|
||||
Thông thường thì dùng Linux cho laptop thì chắc chẳng ai quan tâm card màn hình rời nữa (cơ mà cài Linux mà chơi game là thấy cũng 'lạ' rồi :v). Tuy nhiên bạn vẫn có thể setting để chơi game sử dụng card màn hình rời trên Steam bằng cách đặt Lauch Option cho game như sau:
|
||||
|
||||
```shell
|
||||
DRI_PRIME=1 %command%
|
||||
```
|
||||
|
||||
## Tip nhỏ để cải thiện hiệu năng khi chơi game
|
||||
|
||||
Bạn có thể cài thêm gamemode để tool tinh chỉnh cấu hình hệ thống của bạn khi chơi game:
|
||||
|
||||
```shell
|
||||
yay -S gamemode
|
||||
```
|
||||
|
||||
Sau đó khởi chạy service gamemoded:
|
||||
|
||||
```shell
|
||||
systemctl start gamemoded --user
|
||||
```
|
||||
|
||||
Để sử dụng, thì bạn đặt Lauch Option cho game như sau:
|
||||
|
||||
```shell
|
||||
gamemoderun %command%
|
||||
```
|
||||
|
||||
Vậy là cuối cùng ta có thể mở game và chiến thôi!!!
|
||||
@@ -0,0 +1,40 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-05T07:00:00+07:00
|
||||
title = "Tăng tốc độ makepkg"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "AUR"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bài viết mình sẽ giới thiệu cách tinh chỉnh để quá trình build file từ AUR được nhanh hơn. Tuy nhiên cái lợi cũng có cái nguy cơ đi kèm, có khả năng là bạn sẽ gặp phải một lỗi gì đó, ở đâu đấy trong vài trường hợp :v
|
||||
|
||||
Để nhanh gọn, tránh dài dòng, mình sẽ hướng dẫn các bạn kiểu 'mì ăn liền' luôn nha!
|
||||
|
||||
Cài đặt một số package cần thiết:
|
||||
|
||||
```shell
|
||||
yay -S ccache lzop xz pigz pbzip2 zstd
|
||||
```
|
||||
|
||||
Sau đó mở file `/etc/makepkg.conf`, tìm kiếm các chữ IN HOA, và sửa lại giống với dưới đây:
|
||||
|
||||
```shell
|
||||
CFLAGS="-march=native -O2 -pipe -fstack-protector-strong -fno-plt"
|
||||
CXXFLAGS="${CFLAGS}"
|
||||
BUILDDIR=/tmp/makepkg
|
||||
PKGEXT='.pkg.tar.lzo'
|
||||
COMPRESSXZ=(xz -c -z - --threads=0)
|
||||
COMPRESSGZ=(pigz -c -f -n)
|
||||
COMPRESSBZ2=(pbzip2 -c -f)
|
||||
COMPRESSZST=(zstd -c -z -q - --threads=0)
|
||||
BUILDENV=(!distcc color ccache check !sign)
|
||||
MAKEFLAGS="-j$(nproc)"
|
||||
```
|
||||
|
||||
Tham khảo tại : <https://wiki.archlinux.org/index.php/Makepkg>
|
||||
|
||||
Chúc các bạn thành công!
|
||||
@@ -0,0 +1,41 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-07T07:00:00+07:00
|
||||
title = "Giúp pin 'sống' lâu hơn"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
#### Cài đặt TLP
|
||||
|
||||
```shell
|
||||
yay -S tlp tlp-rdw
|
||||
```
|
||||
|
||||
Vì mình sử dụng laptop ThinkPad, hơn nữa là dòng mới, nên mình cài thêm 2 package sau:
|
||||
|
||||
```shell
|
||||
yay -S acpi_call-dkms tpacpi-bat
|
||||
```
|
||||
|
||||
Khởi chạy tlp khi khởi động:
|
||||
|
||||
```shell
|
||||
systemctl enable tlp-sleep.service
|
||||
```
|
||||
|
||||
Vài cài đặt được khuyên dùng khác:
|
||||
|
||||
```shell
|
||||
systemctl enable NetworkManager-dispatcher.service
|
||||
systemctl mask systemd-rfkill.service
|
||||
systemctl mask systemd-rfkill.socket
|
||||
```
|
||||
|
||||
Vài tool khác cũng thiết thực không kém, bạn nên tìm hiểu thêm như `cpupower` và `thermald`.
|
||||
|
||||
Vậy là xong. Hẹn gặp lại!
|
||||
@@ -0,0 +1,31 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-08T07:00:00+07:00
|
||||
title = "systemd-swap"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Arch", "Linux", "Systemd"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Đây là một service nhằm tạo ra swap động theo thời gian. Khởi tạo ban đầu chỉ có 512MiB thôi, nhưng sẽ tăng lên một cách **tự động** khi bạn sử dụng. Cài đặt như sau:
|
||||
|
||||
```shell
|
||||
yay -S systemd-swap
|
||||
```
|
||||
|
||||
Trong file `/etc/systemd/swap.conf` cài đặt như sau:
|
||||
|
||||
```shell
|
||||
swapfc_enabled=1
|
||||
```
|
||||
|
||||
Sau đó enable service systemd-swap:
|
||||
|
||||
```shell
|
||||
sudo systemctl enable systemd-swap
|
||||
```
|
||||
|
||||
Vậy là xong!!!
|
||||
@@ -0,0 +1,29 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-09T07:00:00+07:00
|
||||
title = "Chạy các app cần GUI trong Docker"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Linux", "Docker"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Trường hợp của mình là mình lập trình app Python có sử dụng thư viện `matplotlib`. Để mình có thể sử dụng được giao diện thì mình cài đặt xhost trong host Arch trước:
|
||||
|
||||
```shell
|
||||
yay -S xorg-xhost
|
||||
```
|
||||
|
||||
`xhost local:root` hoặc `xhost +` (cái này mình không rõ, nó cho phép hết tất cả truy cập vào màn hình luôn, còn phân chia cho từng app cụ thế thì mình không biết)
|
||||
|
||||
Sau đó chạy Docker với tham số bổ sung là `–env="DISPLAY"`. VD:
|
||||
|
||||
```shell
|
||||
docker run -it –rm –net=host –env="DISPLAY" –workdir=/workspace –volume="$HOME/Dropbox/PP:/workspace:rw" ubuntu bash
|
||||
```
|
||||
|
||||
Sau đó trong Docker, mình cài thêm gói `python3-pip` nữa.
|
||||
|
||||
Chúc các bạn thành công!!
|
||||
@@ -0,0 +1,24 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-13T07:00:00+07:00
|
||||
title = "Không vào được trang đăng nhập của router (VD: Inet Center)"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Hiện tại mình đang ở KTX khu A của ĐHQG TpHCM, mình sử dụng mạng của Inet Center, sau khi xuống KTX thì mình mua thẻ nhưng không vào được trang đăng nhập nữa, nên không dùng internet được. Nó bị lỗi `ERR_CONNECTION_REFUSED`. Mình sẽ chỉ bạn cách giải quyết trong trường hợp của mình.
|
||||
|
||||
Mình bị là do Docker chiếm IP của trang router . Để khắc phục chạy các lệnh sau:
|
||||
|
||||
```shell
|
||||
sudo ip link set dev docker0 down
|
||||
sudo systemctl disable docker
|
||||
```
|
||||
|
||||
Sau đó khởi động lại là được.
|
||||
|
||||
Nói chung thì bạn đừng để service docker tự chạy, hãy chạy khi nào cần chạy docker thôi. Đó cũng là các để giảm thiểu các service không cần thiết chạy chiếm tài nguyên máy (như Windows :v)
|
||||
@@ -0,0 +1,31 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-14T07:00:00+07:00
|
||||
title = "Kết nối với wifi HCMUT01 của trường ĐH Bách Khoa trên Linux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Linux", "Wifi"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Trong Windows thì khi kết nối bạn đã có chỗ để đăng nhập username và password sẵn, giờ mình sẽ hướng dẫn trên linux.
|
||||
|
||||
Bạn chọn các mục như sau:
|
||||
|
||||
```shell
|
||||
Security: WPA & WPA Enterprise
|
||||
Authentication: Tunneled TLS
|
||||
Anonymous identity: (tên người dùng của bạn, tên này là tên bạn đăng nhập vào myBK ấy)
|
||||
Domain: hcmut.edu.vn
|
||||
CA cerificate: (None)
|
||||
CA certificate password: (Để trống)
|
||||
Show passwords: (không chọn)
|
||||
No CA certificate is required: (chọn)
|
||||
Inner authentication: PAP
|
||||
Username: (tên người dùng của bạn, giống với identity ở trên)
|
||||
Password: mật khẩu
|
||||
```
|
||||
|
||||
Vậy là xong, sau đó thì bạn connect thôi. Chúc các bạn thành công.
|
||||
@@ -0,0 +1,55 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-05-20T07:00:00+07:00
|
||||
title = "Pin không sạc đầy"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Linux", "Battery"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Ở đây các bạn cần phân biệt với chai pin nhé!
|
||||
|
||||
Chai pin là khi sạc đạt 100% nhưng nó không đạt được như thiết kế của nhà sản xuất, các bạn có thể chạy thử lệnh sau để kiểm tra nhé:
|
||||
|
||||
```shell
|
||||
sudo tlp-stat -b
|
||||
```
|
||||
|
||||
Ví dụ output hiện tại của mình như sau:
|
||||
|
||||
```shell
|
||||
--- TLP 1.3.1 --------------------------------------------
|
||||
+++ Battery Features: Charge Thresholds and Recalibrate
|
||||
natacpi = active (data, thresholds)
|
||||
tpacpi-bat = active (recalibrate)
|
||||
tp-smapi = inactive (ThinkPad not supported)
|
||||
+++ ThinkPad Battery Status: BAT0 (Main / Internal)
|
||||
/sys/class/power_supply/BAT0/manufacturer = LGC
|
||||
/sys/class/power_supply/BAT0/model_name = 01AV463
|
||||
/sys/class/power_supply/BAT0/cycle_count = 90
|
||||
/sys/class/power_supply/BAT0/energy_full_design = 45000 [mWh]
|
||||
/sys/class/power_supply/BAT0/energy_full = 38280 [mWh]
|
||||
/sys/class/power_supply/BAT0/energy_now = 38280 [mWh]
|
||||
/sys/class/power_supply/BAT0/power_now = 0 [mW]
|
||||
/sys/class/power_supply/BAT0/status = Full
|
||||
/sys/class/power_supply/BAT0/charge_start_threshold = 96 [%]
|
||||
/sys/class/power_supply/BAT0/charge_stop_threshold = 96 [%]
|
||||
tpacpi-bat.BAT0.forceDischarge = 0
|
||||
Charge = 100.0 [%]
|
||||
Capacity = 85.1 [%]
|
||||
```
|
||||
|
||||
Ở đây theo thiết kế thì pin của mình đạt 45000 mWh nhưng hiện tại khi sạc đến 100% thì chỉ được 38280 mWh thôi, ở phần dưới cùng tlp-stat có tổng kết lại cho mình là pin của mình đã chai đi khoảng 14.9% so với ban đầu rồi (mình thấy cũng bình thường thôi, tại mình dùng được 1 năm rồi, và thời gian cũng có chơi game nhiều, khá là nóng máy).
|
||||
|
||||
Đó là chai pin, trường hợp của mình thì thấy vẫn ổn, nhưng nếu chai đến tận 90% rồi chẳng hạn thì chỉ có cách là thay pin mới khắc phục được thôi. Mà pin thiết kế ra là... cũng để chai thôi mà :v
|
||||
|
||||
Sau đây là trường hợp mình muốn nói với các bạn: Pin chỉ sạc đến một khoảng nào đó rồi ngừng, không sạc tiếp. Trường hợp này nếu tầm 90-95% là bình thường, vì một số máy thiết kế chỉ đạt đến mức đó thôi là ngừng rồi. Tuy nhiên nếu chỉ tầm 60% hay 80% (trường hợp mình gặp là 79%) thì là "bất thường" rồi. Mình không biết nguyên nhân nhưng khắc phục như sau:
|
||||
|
||||
```shell
|
||||
sudo tlp fullcharge
|
||||
```
|
||||
|
||||
Chúc các bạn thành công và có một viên pin đi cùng chiếc máy :)))
|
||||
@@ -0,0 +1,19 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-06-06T07:00:00+07:00
|
||||
title = "Chuyển đổi website"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Notice"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
**Note:** _(Dạo gần đây mình đã đi học lại, và cũng sấp mặt với deadline trên trường, nên hầu như chẳng viết lấy bài nào nữa, nhưng mà sau đợt này có lẽ mình sẽ có thêm "kha khá" kinh nghiệm để chia sẻ cùng các bạn :))))_
|
||||
|
||||
Trước đây mình viết bài trên [trang Wordpress của mình](https://miti99.code.blog) nhưng dạo này mình vọc vạch để xây dựng trang web cho nhóm [BKFC-THPT Đức Hòa](https://www.facebook.com/bkfcduchoalongan/) của chúng mình thì mình thấy [Hugo](https://gohugo.io/) khá là hay, nên quyết định chuyển sang làm web trên Gitlab Pages, là trang này.
|
||||
|
||||
Mong nhận được sự đồng hành từ các bạn. Thân ái!
|
||||
|
||||
P.S: _Web của nhóm mình tại <https://bkfc-thptduchoa.netlify.app/>, mong các bạn ủng hộ ^^_
|
||||
@@ -0,0 +1,18 @@
|
||||
+++
|
||||
draft = true
|
||||
date = 2020-06-10T07:00:00+07:00
|
||||
title = "Chuyển sang Voidlinux"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Void", "Linux"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Sau một thời gian sử dụng [Archlinux](https://www.archlinux.org/) cũng khá tâm huyết mình đang chuyển sang dùng thử [Voidlinux](https://voidlinux.org/) *(Người ta dùng thử trên máy ảo, còn mình máy thật :v)*. Tuy vậy, với vốn kiến thức thu được sau khoảng thời gian sử dụng Archlinux thì mình thấy khá thoải mái khi sử dụng Voidlinux.
|
||||
|
||||
Mà bây giờ mình thấy sử dụng distro nào cũng không ảnh hưởng gì quá lớn đến các công cụ, miễn cài được là ok rồi :))) Vì vậy trong tương lai mình vẫn sẽ viết bài tiếp nhé (mặc dù sẽ thưa thớt, vì trường mình đã vào "mùa" bài tập lớn rồi :v)
|
||||
|
||||
## Cập nhật 13/06/2020:
|
||||
Mình sẽ trở về với Archlinux vì... nhớ pacman và AUR :v
|
||||
@@ -0,0 +1,55 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-06-23T07:00:00+07:00
|
||||
title = "Viết blog với hugo"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["hugo", "blog"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Như các bạn cũng biết, blog này của mình sử dụng hugo để tạo ra. Bài viết này mình sẽ hướng dẫn các bạn dùng hugo để tạo ra một static website tương tự.
|
||||
|
||||
1. Đầu tiên cần cài đặt hugo:
|
||||
|
||||
```shell
|
||||
yay -S hugo
|
||||
```
|
||||
|
||||
2. Vào thư mục làm việc (working directory) của bạn, sử dụng hugo tạo thư mục chứa website mới. Ví dụ ở đây mình tạo thư mục `miti99`:
|
||||
|
||||
```shell
|
||||
hugo new site miti99
|
||||
```
|
||||
|
||||
Nếu bạn đã tạo một git và clone về và muốn tạo website trong thư mục đó, thì thêm đuôi `--force` vào nhé. Ví dụ:
|
||||
|
||||
```shell
|
||||
hugo new site miti99 --force
|
||||
```
|
||||
|
||||
3. Vào thư mục vừa tạo, tải theme cho trang web của bạn, các theme này bạn tìm tại website theme của hugo (<https://themes.gohugo.io/>). Ví dụ ở đây mình chọn theme [`Beautiful Hugo`](https://themes.gohugo.io/beautifulhugo/):
|
||||
|
||||
```shell
|
||||
cd miti99
|
||||
git init # Nếu bạn dùng git clone website thì bỏ qua bước này
|
||||
git submodule add https://github.com/halogenica/beautifulhugo.git themes/beautifulhugo
|
||||
```
|
||||
|
||||
Copy exampleSite để xem thử:
|
||||
|
||||
```shell
|
||||
\cp -rf themes/beautifulhugo/exampleSite/* .
|
||||
```
|
||||
|
||||
4. Chạy lệnh sau để xem thử website của bạn:
|
||||
|
||||
```shell
|
||||
hugo server
|
||||
```
|
||||
|
||||
5. Chỉnh sửa các file như `config.toml` và các file trong `content` (cùng các file các nếu bạn muốn tùy chỉnh) để có được website cho riêng mình. Nhớ tham khảo các file mẫu có sẵn để tận dụng tối đa các tính năng của theme bạn đã chọn nhé!
|
||||
|
||||
Mình sẽ giới thiệu cách build và deploy website lên Gitlab Pages, Github Pages hoặc Firebase Hosting... trong một bài viết khác. Hẹn gặp các bạn sau!
|
||||
@@ -0,0 +1,15 @@
|
||||
+++
|
||||
draft = true
|
||||
date = 2020-06-26T07:00:00+07:00
|
||||
title = "Trở lại với Ubuntu"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Sau một khoảng thời gian học hỏi được khá nhiều điều về Linux khi sử dụng Archlinux, mình nghĩ đã đến lúc mình nên trở về với Ubuntu. Bớt vọc vạch để máy tính mình bớt căng... CPU vì mình :)))
|
||||
|
||||
Với người dùng Linux thì việc chuyển đổi hệ điều hành chắc không cần giải thích chi nhiều đâu nhỉ :)))
|
||||
@@ -0,0 +1,130 @@
|
||||
+++
|
||||
draft = true
|
||||
date = 2020-06-27T07:00:00+07:00
|
||||
title = "Những việc cần làm sau khi cài đặt Ubuntu 20.04"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Ubuntu", "Linux"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
**Đây là bài viết tổng hợp những điều cơ bản mình đã làm sau khi cài lại Ubuntu 20.04**
|
||||
|
||||
1. Cập nhật hệ thống
|
||||
|
||||
```shell
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
```
|
||||
|
||||
2. Cài đặt một số phần mềm cần thiết
|
||||
|
||||
```shell
|
||||
sudo apt install gdebi
|
||||
```
|
||||
|
||||
Các phần mềm mình đã cài với `gdebi` là:
|
||||
- [Google Chrome](https://www.google.com/chrome/)
|
||||
- [Visual Studio Code](https://code.visualstudio.com/)
|
||||
- [Dropbox](https://www.dropbox.com/install)
|
||||
|
||||
Một số phần mềm hay ho khác:
|
||||
|
||||
- Spotify:
|
||||
```shell
|
||||
curl -sS https://download.spotify.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list
|
||||
sudo apt-get update && sudo apt-get install spotify-client
|
||||
```
|
||||
|
||||
3. Cài đặt `zsh`
|
||||
|
||||
```shell
|
||||
sudo apt install zsh
|
||||
chsh -s /usr/bin/zsh
|
||||
```
|
||||
|
||||
Cài đặt công cụ quản lý zsh plugins: `zgen`. Mặc dù `zgen` đã cũ nhưng mà mình thấy trong những công cụ khác trong repository của Ubuntu là `zplug` và `zsh-antigen` thì `zgen` đơn giản và nhẹ hơn nhiều.
|
||||
|
||||
```shell
|
||||
sudo apt install zgen
|
||||
```
|
||||
|
||||
Chỉnh sửa file `.zshrc` của bạn lại cho phù hợp, ví dụ của mình như sau:
|
||||
|
||||
```shell
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
|
||||
export GTK_IM_MODULE=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT4_IM_MODULE=ibus
|
||||
export CLUTTER_IM_MODULE=ibus
|
||||
|
||||
eval $(thefuck --alias)
|
||||
|
||||
source "/usr/share/zgen/zgen.zsh"
|
||||
|
||||
if ! zgen saved; then
|
||||
|
||||
zgen oh-my-zsh
|
||||
|
||||
zgen oh-my-zsh plugins/alias-finder
|
||||
zgen oh-my-zsh plugins/colored-man-pages
|
||||
zgen oh-my-zsh plugins/colorize
|
||||
zgen oh-my-zsh plugins/command-not-found
|
||||
zgen oh-my-zsh plugins/common-aliases
|
||||
zgen oh-my-zsh plugins/extract
|
||||
zgen oh-my-zsh plugins/git
|
||||
zgen oh-my-zsh plugins/git-auto-fetch
|
||||
zgen oh-my-zsh plugins/gitignore
|
||||
zgen oh-my-zsh plugins/golang
|
||||
zgen oh-my-zsh plugins/gpg-agent
|
||||
zgen oh-my-zsh plugins/history
|
||||
zgen oh-my-zsh plugins/node
|
||||
zgen oh-my-zsh plugins/npm
|
||||
zgen oh-my-zsh plugins/python
|
||||
zgen oh-my-zsh plugins/sudo
|
||||
zgen oh-my-zsh plugins/systemd
|
||||
zgen oh-my-zsh plugins/thefuck
|
||||
zgen oh-my-zsh plugins/ubuntu
|
||||
zgen oh-my-zsh plugins/vscode
|
||||
zgen oh-my-zsh plugins/wd
|
||||
zgen oh-my-zsh plugins/z
|
||||
|
||||
zgen loadall <<EOPLUGINS
|
||||
desyncr/auto-ls
|
||||
djui/alias-tips
|
||||
srijanshetty/node.plugin.zsh
|
||||
voronkovich/mysql.plugin.zsh
|
||||
zlsun/solarized-man
|
||||
zpm-zsh/ls
|
||||
zpm-zsh/ssh
|
||||
zsh-users/zsh-autosuggestions
|
||||
zsh-users/zsh-syntax-highlighting
|
||||
zsh-users/zsh-history-substring-search
|
||||
EOPLUGINS
|
||||
|
||||
zgen load zsh-users/zsh-completions src
|
||||
|
||||
zgen load romkatv/powerlevel10k powerlevel10k
|
||||
|
||||
zgen save
|
||||
|
||||
fi
|
||||
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#120299,bg=cyan"
|
||||
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||
```
|
||||
|
||||
4. Cài đặt `tlp`
|
||||
|
||||
```shell
|
||||
sudo apt install tlp
|
||||
sudo tlp start
|
||||
```
|
||||
@@ -0,0 +1,19 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-06-28T07:00:00+07:00
|
||||
title = "Vấn đề về compositor với Plank trong Xfce"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = ["Linux", "Xfce"]
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Bạn dùng Plank trong Xfce và gặp trường hợp có sọc ngang như bên dưới?
|
||||
|
||||

|
||||
|
||||
Hãy vào tab `Compositor` trong `Windows Manager Tweaks` và bỏ tick trong mục `Show shadows under dock windows`:
|
||||
|
||||

|
||||
@@ -0,0 +1,15 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2020-06-29T07:00:00+07:00
|
||||
title = "Vấn đề với Xfce"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Arch của bạn chỉ cài mỗi Xfce và bị "dứng" khi khởi động? Hay khi khởi động LightDM thì bị giật giật?
|
||||
|
||||
Hãy cài package `xf86-video-intel`.
|
||||
@@ -0,0 +1,25 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2021-10-04T07:00:00+07:00
|
||||
title = "Trở lại"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Vào tầm tháng 7/2020, như đa phần sinh viên năm 3 khác, mình đi thực tập tốt nghiệp. Với một may mắn nhỏ, mình trúng tuyển chương trình VNG Tech Fresher (VTF) 2020 của [VNG](https://www.vng.com.vn/).
|
||||
|
||||
Được làm việc tại một mảng hoàn toàn mình chưa từng tìm hiểu trước đó là mảng lập trình game. Sau đó may mắn một lần nữa mình được trở thành nhân viên chính thức cho đến hiện tại. Có lẽ sẽ có bài viết chi tiết hơn để chia sẻ điều này.
|
||||
|
||||
Mà cũng từ đó mình tìm hiểu nhiều thứ mới lạ hơn, chưa từng được biết, học Java, JavaScript nghiêm túc hơn. Có lần tìm hiểu được vài cái hay ho nhưng viết blog mình cập nhật theme Coder lên bản mới nhất thì bị lỗi. Mà cũng lười, nên mình bỏ viết blog từ đấy.
|
||||
|
||||
Sau hơn 1 năm bỏ bê blog, bạn thấy bài viết này tức là mình đã 'comeback' rồi đó ^^.
|
||||
|
||||
Mình quyết định chuyển blog sang GitHub Pages với địa chỉ mới là https://tiennm99.github.io
|
||||
|
||||
Bên cạnh đó cũng cập nhật theme Coder lên bản mới nhất hiện tại. Thời gian tới sẽ cố gắng viết blog thường xuyên hơn.
|
||||
|
||||
Cảm ơn các bạn.
|
||||
@@ -0,0 +1,103 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2021-11-17T07:00:00+07:00
|
||||
title = "Lần đầu build một bộ PC"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
__Hiện MiTi cũng mới nhận được máy hôm nay thôi, nên còn bận cài máy, mà háo hức quá nên tối nay viết tạm bợ một bài, trong vài ngày tới sẽ chỉnh sửa lại cho hoàn thiện hơn__
|
||||
|
||||
Đã lâu rồi, gần 1 năm rưỡi từ blog cũ và 1 tháng rưỡi kể từ bài chuyển blog mà chẳng có thêm bài viết nào. Sẵn tiện MiTi vừa build 1 con PC xong, MiTi sẽ kể các bạn nghe chuyện "Lần đầu mình build một bộ PC"
|
||||
|
||||
__Bài viết do một Amateur vừa nhập môn build PC nên có không vừa ý điểm nào xin gạch đá nhẹ tay__
|
||||
|
||||
__Tác giả cũng là một người học văn rất dở, nên câu cú lủng củng, dàn ý không lôi cuốn, xin gạch đá nhẹ tay__
|
||||
|
||||
__(Nói thế chứ nếu chán thì hẳn đã tắt tab trình duyệt luôn cho rồi :))))__
|
||||
|
||||
__Bài viết khá dài, hài và xàm (do phần bình luận trong ngoặc như này), nên rất cảm ơn nếu bạn chịu khó đọc đến cuối__
|
||||
|
||||
# Khởi nguồn
|
||||
Là một thằng học IT, thì ghiền PC với mình như một lẽ thường tình. Đã thích lâu rồi, nhưng không có điều kiện thui. Sẵn mấy tháng dịch chi tiêu dè sẻn có dành dụm được tí tiền, nên muốn làm 1 con PC để thoả mãn đam mê. (Mê tới nỗi từ ngày lên đơn hàng đến lúc được giao PC ngày nào cũng mở lên viết bài này, thành ra nó mới dài như vầy đó :v Này phải làm Vlog hẳn hoi chắc sẽ xịn hơn, nhưng MiTi lại là người thích chơi với chữ hơn là hình ảnh (khó khăn lắm mới chịu khó bỏ ảnh vào bài viết đó nha :v)) Sau gần 1 tháng tìm hiểu về lĩnh vực này, thì cũng biết chút đỉnh về linh kiện này nọ.
|
||||
|
||||
# Định hình cấu hình
|
||||
Với tình hình VGA còn đang trong thời bão giá, nên cũng không định mua vì cũng không cần thiết lắm, mua về kẻo lại "cài game vào để test card màn hình" :))) (mà lí do thật ra là khá ngán tiền :v) Sẵn hóng hớt thấy AMD có ra dòng APU Ryzen 5 5600G với Ryzen 7 5700G không card màn hình, mà hiệu năng cũng ngang ngửa GTX 1030, thấy cũng khoái. Chấm ngay con Ryzen 7 5700G làm yếu tố tiên quyết (chơi thì chơi lớn tí, mốt có muốn nâng cấp gì thêm lại đỡ phải đổi con CPU). Thế là đỡ được phần tiền VGA, khỏi phải lo nghĩ cân nhắc mua VGA cùi rồi nâng cấp sau hay chơi lớn mua cái thiệt xịn gì đó rồi lại trả góp hay đổ nợ :'(. Nhưng rồi lại phải chắm thêm cặp RAM 2x16GB 3200Mhz cho cân xứng, để tối ưu được hiệu năng (hồi Work Frome Home con Macbook 16GB RAM vừa chạy IDE vừa chạy giả lập bị hụt RAM luôn @@ nên sẵn chơi lớn cho đã :D), sắp build lại thấy Kingston có quà tặng kèm khi mua RAM, thế là chấm ngay cặp RAM Kingston Fury Beast (không dám lên Renegade tại cũng ngán tiền). Mainboard thì cắm dòng B550 support AM4 mà giá tầm trung là được rồi, chứ dòng Z tầm cao quá lại với không tới :| Còn ổ cứng thì SSD là tiên quyết rồi, mà sẵn chơi thì cũng tính chơi luôn một con SSD M2 cho nó... nhanh :))) Samsung EVO khá là hot, top tốc độ nhưng nhìn tầm giá Kingston vừa túi hơn, lại đang khuyến mãi quà, nên lao theo Kingston luôn (kẻ bị quà dụ :'()
|
||||
|
||||
# Dự định các phần cứng
|
||||
Sau một thời gian thì thấy người ta chơi ITX phê quá, cũng muốn đầu tư, đi dạo trên mạng, tổng hợp thông tin, thì thích mê con Cooler Master MasterBox NR200P (bản MAX thích hơn do có kèm tản nhiệt với nguồn, mà thấy tại VN chẳng có bán) với con NZXT H210. Định là cửa hàng có bán case nào thì sẽ chơi full combo nguồn với tản nhiệt hãng đó luôn, vì CM lẫn NZXT đều nổi tiếng cả. Mà tản nhiệt thì phải là tản nhiệt nước AIO, để tận hưởng cái đẹp :D. Hi sinh vì cái đẹp là xứng đáng UwU
|
||||
- CM MB NR200P thì mua nguồn SFX (loại size nhỏ cho ITX), giá khá chát; tản nhiệt
|
||||
- NZXT H210 thì mua nguồn full modular của NZXT, giá cũng chát luôn, cơ mà case thì được cái chịu được nguồn của ATX, nhưng giá nguồn vẫn mắc -_-
|
||||
|
||||
Rồi nhìn lại nếu vậy thì Mainboard cũng phải size ITX, chứ size ATX với m-ATX thì sẽ không vừa, giá mấy mainboard ITX này thì cũng khá là chua so với main thông thường, mà, vì cái đẹp nên hi sinh tí cũng được :v
|
||||
|
||||
## Tổng kết thì hình dung hòm hòm cấu hình nó như sau
|
||||
- CPU: AMD Ryzen 7 5700G
|
||||
- RAM: Kingston Fury Beast 2x16G
|
||||
- Mainboad: 1 trong 3:
|
||||
+ ASROCK B550M-ITX/ac
|
||||
+ ASUS ROG STRIX B550-I GAMING
|
||||
+ GIGABYTE B550I AORUS PRO AX
|
||||
- Ổ cứng: SSD SSD Kingston NV1 500GB M.2 PCIe NVMe
|
||||
- Case: NZXT H210 (i cũng được) hoặc Cooler Master MasterBox NR200P
|
||||
- PSU: Tuỳ case mà sẽ của CM dòng SFX hoặc NZXT, từ 650-750W
|
||||
- Tản nhiệt nước AIO: Tuỳ case mà sẽ là Cooler Master MASTERLIQUID ML240L V2 ARGB hoặc Tản nhiệt nước NZXT AIO Kraken X53
|
||||
|
||||
# Lựa chọn cửa hàng để mua
|
||||
Đây cũng là một vấn đề nan giải, vì chưa có kinh nghiệm mua lần nào nên không có định hướng lắm. Cũng cân nhắc nhiều nơi nổi tiếng đã biết từ trước:
|
||||
- Phong Vũ: xưa giờ mua đồ ở đây khá nhiều, lần bảo hành laptop cũng ok phết
|
||||
- GearVN: có kênh Youtube khá là xịn xò, mình học hỏi từ kênh này cũng rất nhiều, đã từng mua chuột và bàn phím hồi mới đi làm, xài khá tốt
|
||||
- Hà Nội Computer
|
||||
- An Phát PC
|
||||
-...
|
||||
Cả mấy chỗ vừa mới biết đến khi đang tìm hiểu qua diễn đàn, Youtube,... nữa:
|
||||
- Tin học ngôi sao (lên diễn đàn nghe nói chỗ này bán rẻ lắm, mà khâu bảo hành phốt lại nhiều :'()
|
||||
- Nguyễn Công PC (biết qua kênh Youtube AMTech)
|
||||
- TNC Store (cũng Youtube)
|
||||
- Tân Doanh
|
||||
- Tân Thành Danh
|
||||
-...
|
||||
Trong đó có mấy chỗ tìm hiểu xong mới biết nó chỉ có cửa hàng ở Hà Nội nữa @@
|
||||
|
||||
Rốt cuộc mình chốt là GearVN, vì các lý do:
|
||||
- Khá nổi tiếng, phần marketing làm quá tốt luôn (và nổi tiếng thật, bữa đi mua ở đây chờ hàng dài luôn, do GVN có cơ chế làm là vào mua hàng sẽ có 1 nhân viên phụ trách tư vấn, lên đơn, bán hàng,... chứ không như nhiều chỗ khác, rồi còn dịch nữa, nên khá hạn chế mặt này, may bữa đi buổi chiều chứ không chịu nắng chảy mỡ luôn @@)
|
||||
- Uy tín, hàng mới, chính hãng, không fake (cái này chắc là trùng lặp dòng trên rồi :D)
|
||||
- Các linh kiện mình liệt kê bên trên đều còn hàng (ít nhất là trên website để như vậy, còn sự thật thì... chờ đọc phần đi mua hàng nhé :))))
|
||||
- Phần chăm sóc khách hàng được đánh giá khá tốt (và bữa gọi điện cũng thấy tốt thật, tí nữa kể sau), như một cái bảo hiểm vậy, đầu tư để đó chứ không cần dùng đến vẫn hơn (như mua BHYT hay BHTN mấy ai mong mình bệnh tật hay tai nạn để được hoàn tiền đâu nào :|, chỉ là có việc cần đến bệnh viện thì lấy ra dùng sẽ đỡ được một phần tiền thôi)
|
||||
- Showroom đẹp mắt, đi vào mua sẵn xem ké cho lác con mắt (đợt mua chuột với bàn phím hơi bị ghiền đó)
|
||||
|
||||
# Đến cửa hàng
|
||||
Hôm mình ghé showroom GearVN trên đường Hoàng Hoa Thám thì là tầm hơn 4h chiều, từ quê chạy lên trọ sẵn ghé qua luôn (đi đường Cộng Hoà ghé vào xíu là tới ấy mà), do dịch nên GearVN dùng đoạn ở trước showroom làm chỗ xếp hàng (y như sắp hàng trong mấy khu vui chơi vậy :v), không cho đậu xe ở trước nữa mà phải chạy vào con hẻm đối diện gửi xe (cũng khá xa đó, chạy gần tới cuối hẻm mới thấy, bữa tưởng đi lộn hay gì rồi). Gửi xe này thì miễn phí, hơi khổ nỗi đi bộ xa, tới rồi thì xếp hàng, quét mã QR khai báo y tế (mấy thủ tục này dạo này đi đâu cũng thế thôi), hết hàng chờ bên ngoài rồi còn vào cửa hàng, rửa tay sát khuẩn rồi mới ngồi trên hàng ghế gaming đợi bạn tư vấn tới dắt đi nữa (y như cho ngồi thử ghế êm không vậy, mà công nhận là êm thật :v, êm hơn hẳn mấy ghế văn phòng, cơ mà chẳng có tiền đâu mà mua :v). Xong được anh tư vấn viên đẹp trai (nói thế thôi chứ ai cũng đeo khẩu trang mà, biết ảnh đẹp trai thế quái nào được) dắt đến chỗ bàn máy tính để check qua linh kiện còn hàng tại HCM.
|
||||
|
||||
Vào đề mình nói thẳng luôn về nhu cầu và yêu cầu của mình: cấu hình phần "ruột" thì không đổi được, còn phần "hình thức" thì tuỳ biến. May mà phần ruột thì khá ok, trừ cái phần RAM không có ram Kingston, nên đổi qua cặp ram Corsair Vengeance RS RGB. Cũng 2x16GB 3200Mhz nên mình cũng không ý kiến gì mấy Mọi thứ cũng tương đối suôn sẻ cho đến khi tới phần mainboard, chẳng còn cái main ITX nào tại HCM cả :'( Thế là mọi thứ đổ bể, có 2 phương án nhưng toàn ITX, hoàn toàn không nghĩ đến trường hợp này. Thế là mình nói anh ấy chuyển qua mục tiêu build một PC sao cho đẹp một cách tinh tế, không cần hầm hố, và cũng bảo là nếu được thì full combo NZXT luôn đi. Sau một hồi lựa chọn và khóc thầm (vì mấy cái mình thích đều hết, còn mấy cái cũng ngon nghẻ mà giá chát quá :'() thế là được bộ cấu hình như sau:
|
||||
|
||||
|
||||
Đến đây thì hẳn bạn sẽ thắc mắc thế phần dự định bên trên để làm gì? Thật tiếc nếu bạn đọc phần đó, như bạn cũng thấy _"người tính không bằng trời tính"_ thực tế khác với dự định. Đừng cáu nếu lỡ đọc rồi nhé, tại mình mê mà không build được nên thuốc cho bạn mua đấy :)))
|
||||
|
||||
# Sau khi mua
|
||||
Ngay sau khi đặt mua, mình về nhà rồi mới lên trang chủ của GearVN xem lại, thì đúng là cái Corsair C750W được giảm giá 200k lận. Mà quá giờ làm việc rồi, thế là ngay hôm sau gọi điện lên cho CSKH, sau đó được anh tư vấn gọi lại ngay, bảo là cái đó shop mới sửa giá lại trong ngày, mong mình thông cảm, và sẽ hoàn lại tiền cho mình, mình cũng ậm ừ (dù biết tỏng vì đã điều tra kĩ rằng giá này đã tồn tại từ trước đó rồi :))). Chờ mãi sang hôm sau cũng không thấy động tĩnh gì, cũng hơi quan ngại, tại hôm qua gọi chỉ là anh đó nói suông thôi, lời nói gió bay ai mà tin được, chẳng có chứng từ cụ thể gì cả. Ai dè hôm sau nữa (tức 2 ngày sau khi đặt hàng), có một chị CSKH gọi lại báo là có mail cho mình mà không để ý (mà không biết GearVN trước nay có spam gì không mà bị bộ lọc mail của Outlook cho vào Junk luôn :v). Xong mail lại
|
||||
|
||||
3 ngày sau khi mình đặt mua, mình lên lại web và lại phát hiện phần ram mình mua đã được giảm xuống 500k. Thật sự cay cú, cứ như là GearVN đợi mình mua xong rồi giảm giá thì phải :))) Nhưng không được như lần trước, lần này mình chỉ được bảo là giá đó là do lô hàng mới giá RAM giảm rồi, hồi chốt giá thì không thay đổi được nữa :| Thui thì cũng... đành chịu, cơ mà ít ra gọi còn được bắt máy là vui rồi :))) Đánh giá rất cao mảng CSKH của GearVN nhé.
|
||||
|
||||
Rồi cũng tới ngày nhận được máy... :D Cùng xem qua một số đánh giá nho nhỏ của mình ở phần dưới nhé!
|
||||
|
||||
# Đánh giá
|
||||
Do thay đổi quyết định ngay trong lúc mua chủ yếu là 3 yếu tố mainboard, case với ram là chính nên sẽ chỉ đi sâu vào phân tích 3 cái này thôi. Cái tản nhiệt NZXT X63 thì lớn hơn X53 (và giá cũng lớn hơn :v) chứ không khác nhau nhiều.
|
||||
|
||||
## Mainboard NZXT N7 B550
|
||||
So với các mainboard B550 khác của ASUS, GIGABYTE hay MSI thì mình thấy NZXT thật sự hợp gu thẩm mỹ của mình, vì cảm giác nó sang trọng nhưng không hầm hố, lại đồng bộ style với nhiều thành phần của case (do cùng hãng sản xuất thôi mà). Một số điểm mạnh thì Số cổng kết nối thì nhiều vãi... Còn nhược điểm thì nghe dân tình bảo NZXT mới dấn thân vào mảng mainboard nói chung và cho chip AMD nói riêng nên chắc còn khá "non tay", BIOS không được đánh giá cao, cảm giác phần giao diện web chỗ dùng để tải driver còn để kèm với manual khá là lộn xộn.
|
||||
|
||||
## Case NZXT H510 Elite
|
||||
Mình khẳng định luôn, nếu không phải lúc đó case NZXT H510 hết hàng thì chẳng đời nào mình chọn case này, vốn mình quan tâm hiệu suất hơn chứ không quan trọng về hình thức, nếu là case ITX thì còn định bỏ lên mặt bàn, chứ case tầm mid-tower như này thì còn tính bỏ gầm bàn nữa là. Đem về dùng mình cũng dùng phần mềm CAM tắt hết led RGB đi thôi. Nên có thể nói: phần tiền dành cho đèn đóm có sẵn, quạt led RGB, mặt kính phía trước để show led đều phế cả rồi :'( Điểm cộng của nó chắc là để chụp hình khoe hàng vài lần như này thôi.
|
||||
|
||||
## Ram Corsair
|
||||
Như đã nói ở trên, mình chú trọng phần hiệu năng, nên led có sẵn của mấy thanh ram cũng không dùng đến là mấy, còn 32GB 3200Mhz trong tầm 4-5 triệu thì cũng rẻ hơn cặp ram Kingston ban đầu mình định chọn, còn hiệu năng như nào thì chắc sử dụng mới biết (mà chắc cũng chẳng cảm nhận được, vì có cái gì đâu mà so với chả sánh :v)
|
||||
|
||||
# Tổng kết
|
||||
Đánh giá trên thang điểm 10 thì lần đi mua hàng này của mình nằm đâu đó khoảng 8đ, gọi là tốt nhưng vẫn cứ tiếc mãi case ITX mà không có, lại dồn tiền vào một cái case khá là mắc với những tính năng không dùng tới nữa :|, mà hi sinh vì cái đẹp cũng đáng, hehe. Dù sao thì chuyện cũng đã qua, mọi thứ còn lại là kinh nghiệm và trải nghiệm. Mình vẫn sẽ trân quý bộ PC lần đầu tiên mình build này, nhưng hẳn là sau này (chắc là còn lâu hoặc sẽ chẳng bao giờ tới luôn) mình sẽ đổi, nâng cấp lên một bộ PC khác; có lẽ là khi dư dả (không dư dả ai lại mang tiền đi build PC hoài @@). Cũng đã trải nghiệm qua thực tế thì thấy CSKH của GearVN khá là tốt, nên tương lai có nâng cấp hay mua mới gì thì mình cũng sẽ ủng hộ GearVN tiếp!^^
|
||||
|
||||
_Do đang cài máy và còn phải "test hiệu năng" bằng vài ván game :))) nên sẽ cập nhật lại bài viết trong thời gian tới. Nếu bạn đọc được tới dòng này thì thật sự cảm ơn nhé!^^_
|
||||
@@ -0,0 +1,19 @@
|
||||
+++
|
||||
draft = false
|
||||
date = 2021-11-17T07:00:00+07:00
|
||||
title = "PC của tôi và OS của nó"
|
||||
description = ""
|
||||
slug = ""
|
||||
tags = []
|
||||
categories = []
|
||||
externalLink = ""
|
||||
series = []
|
||||
+++
|
||||
|
||||
Đọc blog đã lâu thì hẳn bạn cũng biết mình là fan của Linux (gọi là fan cho ngầu chứ a dua học đòi thôi, còn hiểu biết chẳng bao nhiêu hic). Chỉ là từ hồi đi làm tới nay thì cần một hệ thồng "stable" nên ít nghịch ngợm Linux hơn xưa, do bận việc, nghịch bậy lại mắc công cài đi cài lại tốn thời gian.
|
||||
|
||||
Như blog trước thì bạn cũng biết, mình mới build 1 con PC. Thì hôm nay mình sẽ kể bạn nghe câu chuyện về hệ điều hành của nó.
|
||||
|
||||
Bữa đầu mua về mình quyết định cài Windows 11 cho nó. Thật ra thì mấy thành phần để support Windows 10 là chủ yếu, mà mình thấy cũng không khác gì nhau. Cài vào mới thấy Windows 11 về mặt trải nghiệm người dùng chán quá, dùng mới 2-3 hôm không biết nhiều nhưng thấy chán cái Windows Explorer ghê, phải nói là lần nào chuột phải cũng phải chọn cái "more options" rất là bất tiện. Nhưng mà Windows được cái hỗ trợ game rất là ngon, muốn chơi Liên Minh Huyền Thoại bản Garena của VN thì linux phải chịu thôi. Tranh thủ 2 ngày cuối tuầnữa test hiệu năng (bằng game :D) đã đời thì thấy rất là ổn áp. Chơi game bật max đồ họa mà FPS trên 100 là ngon rồi, dù màn hình 2k nhưng chỉ 60Hz :'(. Chơi chán thế là lại nổi máu "tình yêu Linux", ngồi cài Archlinux cho nó, cũng setup theme bla bla bla khá là đẹp rồi, xong boot Windows 11 không lên @@ Quá là hoảng hốt, mình thử vài cách, tạo boot Windows, chạy repare,... mà không ăn thua gì cả :'( Thế là "nhân cơ hội", mình định cài lại Windows 10 và combo Ubuntu (mình có kinh nghiệm trong xài Arch và Ubuntu là chủ yếu, hoặc mấy OS loại xài package deb cũng tàm tạm, chứ bên rpm hay tự custom thì không rành lắm, nhỡ bị gì thì cũng hơi hiu), tại cũng cần thứ gì đó "ổn định", ngại vọc lắm rồi. Mà xui sao cài Ubuntu 20.04 nó không nhận wifi trên cái mainboard N7 B550 của mình. Đi search thử thì có ông bảo xài bản 21.04 mới được, check lại thì thấy bản mới xài kernel 5.13, còn bản 20.04 xài kernel cũ hơn, chắc kernel mới mới có, vậy thì xài Arch cho rồi. Thế rồi cũng nghịch thử vài OS base on Ubuntu khác như Mint, Elementary,... tất nhiên là cũng không thành, lỗi có vẻ tại kernel outdate mà. Chợt nhớ ra hồi xưa có xem qua distro PopOS, thằng này hay cập nhật driver mới nhất lắm, xưa mấy ông xài VGA NVDIA rất chuộng OS này. Thế rồi nghịch thử và được thật, thì ra PopOS có 1 cái repo riêng, cài hẳn cho mình kernel 5.13 luôn, thế là chạy ngon ơ. Nhưng xài được vài tiếng thì cái Gnome Activities (cái góc trên bên trái bấm vào show hết app đang chạy ấy, hoặc bấm nút Windows cũng được) không hoạt động nữa. Tốn hết buổi sáng để setup Arch Linux, tốn cả buổi chiều để thử PopOS, rồi tốn buổi tối để cài lại Windows hic hic. Thôi thì số phận đưa đẩy ta về với "sự ổn định" của Windows. Mà dù sao ban đầu mình cùng định dual boot 2 thằng thôi. Windows để chơi game giải trí + cài đặt mấy cái RGB của con PC :v (linux cũng có tool, mà do "dân chơi" ghiền tự viết source thì làm sao đọ với official được :v nên không xịn bằng). Với mình cũng đang có subscription của Office 365, "tài liệu" :))) cũng để trên OneDrive là chính, giờ cũng khó dứt Windows lắm.
|
||||
|
||||
Chốt lại là dân chơi hệ ghiền Linux đã thất bại trong việc theo đuổi đam mê, fanboy... cùi :'( Giờ sống trong sự "ổn định" của Windows 10 mà thôi (Windows 11 hình như CAM nó sao sao ấy, chỉnh led không hiện ngay, có khi không detect được mainboard nữa, phải bấm fix mới được). Chắc lại thỏa mãn cơn ghiền Linux bằng WSL hay cài máy ảo thui hic hic
|
||||
-297
@@ -1,297 +0,0 @@
|
||||
body.colorscheme-dark {
|
||||
color: #dadada;
|
||||
background-color: #212121; }
|
||||
body.colorscheme-dark a {
|
||||
color: #42a5f5; }
|
||||
body.colorscheme-dark h1,
|
||||
body.colorscheme-dark h2,
|
||||
body.colorscheme-dark h3,
|
||||
body.colorscheme-dark h4,
|
||||
body.colorscheme-dark h5,
|
||||
body.colorscheme-dark h6 {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark h1:hover .heading-link,
|
||||
body.colorscheme-dark h2:hover .heading-link,
|
||||
body.colorscheme-dark h3:hover .heading-link,
|
||||
body.colorscheme-dark h4:hover .heading-link,
|
||||
body.colorscheme-dark h5:hover .heading-link,
|
||||
body.colorscheme-dark h6:hover .heading-link {
|
||||
visibility: visible; }
|
||||
body.colorscheme-dark h1 .heading-link,
|
||||
body.colorscheme-dark h2 .heading-link,
|
||||
body.colorscheme-dark h3 .heading-link,
|
||||
body.colorscheme-dark h4 .heading-link,
|
||||
body.colorscheme-dark h5 .heading-link,
|
||||
body.colorscheme-dark h6 .heading-link {
|
||||
color: #42a5f5;
|
||||
font-weight: inherit;
|
||||
text-decoration: none;
|
||||
font-size: 80%;
|
||||
visibility: hidden; }
|
||||
body.colorscheme-dark h1 .title-link,
|
||||
body.colorscheme-dark h2 .title-link,
|
||||
body.colorscheme-dark h3 .title-link,
|
||||
body.colorscheme-dark h4 .title-link,
|
||||
body.colorscheme-dark h5 .title-link,
|
||||
body.colorscheme-dark h6 .title-link {
|
||||
color: inherit;
|
||||
font-weight: inherit;
|
||||
text-decoration: none; }
|
||||
body.colorscheme-dark code {
|
||||
background-color: #424242;
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .highlight pre {
|
||||
color: #212121; }
|
||||
body.colorscheme-dark pre code {
|
||||
background-color: inherit;
|
||||
color: inherit; }
|
||||
body.colorscheme-dark blockquote {
|
||||
border-left: 2px solid #424242; }
|
||||
body.colorscheme-dark th,
|
||||
body.colorscheme-dark td {
|
||||
padding: 1.6rem; }
|
||||
body.colorscheme-dark table {
|
||||
border-collapse: collapse; }
|
||||
body.colorscheme-dark table td,
|
||||
body.colorscheme-dark table th {
|
||||
border: 2px solid #dadada; }
|
||||
body.colorscheme-dark table tr:first-child th {
|
||||
border-top: 0; }
|
||||
body.colorscheme-dark table tr:last-child td {
|
||||
border-bottom: 0; }
|
||||
body.colorscheme-dark table tr td:first-child,
|
||||
body.colorscheme-dark table tr th:first-child {
|
||||
border-left: 0; }
|
||||
body.colorscheme-dark table tr td:last-child,
|
||||
body.colorscheme-dark table tr th:last-child {
|
||||
border-right: 0; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto {
|
||||
color: #dadada;
|
||||
background-color: #212121; }
|
||||
body.colorscheme-auto a {
|
||||
color: #42a5f5; }
|
||||
body.colorscheme-auto h1,
|
||||
body.colorscheme-auto h2,
|
||||
body.colorscheme-auto h3,
|
||||
body.colorscheme-auto h4,
|
||||
body.colorscheme-auto h5,
|
||||
body.colorscheme-auto h6 {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto h1:hover .heading-link,
|
||||
body.colorscheme-auto h2:hover .heading-link,
|
||||
body.colorscheme-auto h3:hover .heading-link,
|
||||
body.colorscheme-auto h4:hover .heading-link,
|
||||
body.colorscheme-auto h5:hover .heading-link,
|
||||
body.colorscheme-auto h6:hover .heading-link {
|
||||
visibility: visible; }
|
||||
body.colorscheme-auto h1 .heading-link,
|
||||
body.colorscheme-auto h2 .heading-link,
|
||||
body.colorscheme-auto h3 .heading-link,
|
||||
body.colorscheme-auto h4 .heading-link,
|
||||
body.colorscheme-auto h5 .heading-link,
|
||||
body.colorscheme-auto h6 .heading-link {
|
||||
color: #42a5f5;
|
||||
font-weight: inherit;
|
||||
text-decoration: none;
|
||||
font-size: 80%;
|
||||
visibility: hidden; }
|
||||
body.colorscheme-auto h1 .title-link,
|
||||
body.colorscheme-auto h2 .title-link,
|
||||
body.colorscheme-auto h3 .title-link,
|
||||
body.colorscheme-auto h4 .title-link,
|
||||
body.colorscheme-auto h5 .title-link,
|
||||
body.colorscheme-auto h6 .title-link {
|
||||
color: inherit;
|
||||
font-weight: inherit;
|
||||
text-decoration: none; }
|
||||
body.colorscheme-auto code {
|
||||
background-color: #424242;
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .highlight pre {
|
||||
color: #212121; }
|
||||
body.colorscheme-auto pre code {
|
||||
background-color: inherit;
|
||||
color: inherit; }
|
||||
body.colorscheme-auto blockquote {
|
||||
border-left: 2px solid #424242; }
|
||||
body.colorscheme-auto th,
|
||||
body.colorscheme-auto td {
|
||||
padding: 1.6rem; }
|
||||
body.colorscheme-auto table {
|
||||
border-collapse: collapse; }
|
||||
body.colorscheme-auto table td,
|
||||
body.colorscheme-auto table th {
|
||||
border: 2px solid #dadada; }
|
||||
body.colorscheme-auto table tr:first-child th {
|
||||
border-top: 0; }
|
||||
body.colorscheme-auto table tr:last-child td {
|
||||
border-bottom: 0; }
|
||||
body.colorscheme-auto table tr td:first-child,
|
||||
body.colorscheme-auto table tr th:first-child {
|
||||
border-left: 0; }
|
||||
body.colorscheme-auto table tr td:last-child,
|
||||
body.colorscheme-auto table tr th:last-child {
|
||||
border-right: 0; } }
|
||||
|
||||
body.colorscheme-dark .content .post .tags .tag {
|
||||
background-color: #424242; }
|
||||
body.colorscheme-dark .content .post .tags .tag a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .content .post .tags .tag a:active {
|
||||
color: #dadada; }
|
||||
|
||||
body.colorscheme-dark .content .list ul li .title {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .content .list ul li .title:hover, body.colorscheme-dark .content .list ul li .title:focus {
|
||||
color: #42a5f5; }
|
||||
|
||||
body.colorscheme-dark .content .centered .about ul li a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .content .centered .about ul li a:hover, body.colorscheme-dark .content .centered .about ul li a:focus {
|
||||
color: #42a5f5; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .content .post .tags .tag {
|
||||
background-color: #424242; }
|
||||
body.colorscheme-auto .content .post .tags .tag a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .content .post .tags .tag a:active {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .content .list ul li .title {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .content .list ul li .title:hover, body.colorscheme-auto .content .list ul li .title:focus {
|
||||
color: #42a5f5; }
|
||||
body.colorscheme-auto .content .centered .about ul li a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .content .centered .about ul li a:hover, body.colorscheme-auto .content .centered .about ul li a:focus {
|
||||
color: #42a5f5; } }
|
||||
|
||||
body.colorscheme-dark .notice .notice-title {
|
||||
border-bottom: 1px solid #212121; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .notice .notice-title {
|
||||
border-bottom: 1px solid #212121; } }
|
||||
|
||||
body.colorscheme-dark .navigation a,
|
||||
body.colorscheme-dark .navigation span {
|
||||
color: #dadada; }
|
||||
|
||||
body.colorscheme-dark .navigation a:hover, body.colorscheme-dark .navigation a:focus {
|
||||
color: #42a5f5; }
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
body.colorscheme-dark .navigation .navigation-list {
|
||||
background-color: #212121;
|
||||
border-top: solid 2px #424242;
|
||||
border-bottom: solid 2px #424242; } }
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
body.colorscheme-dark .navigation .navigation-list .menu-separator {
|
||||
border-top: 2px solid #dadada; } }
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
body.colorscheme-dark .navigation #menu-toggle:checked + label > i {
|
||||
color: #424242; } }
|
||||
|
||||
body.colorscheme-dark .navigation i {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .navigation i:hover, body.colorscheme-dark .navigation i:focus {
|
||||
color: #42a5f5; }
|
||||
|
||||
body.colorscheme-dark .navigation .menu-button i:hover, body.colorscheme-dark .navigation .menu-button i:focus {
|
||||
color: #dadada; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .navigation a,
|
||||
body.colorscheme-auto .navigation span {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .navigation a:hover, body.colorscheme-auto .navigation a:focus {
|
||||
color: #42a5f5; } }
|
||||
|
||||
@media only screen and (prefers-color-scheme: dark) and (max-width: 768px) {
|
||||
body.colorscheme-auto .navigation .navigation-list {
|
||||
background-color: #212121;
|
||||
border-top: solid 2px #424242;
|
||||
border-bottom: solid 2px #424242; } }
|
||||
|
||||
@media only screen and (prefers-color-scheme: dark) and (max-width: 768px) {
|
||||
body.colorscheme-auto .navigation .navigation-list .menu-separator {
|
||||
border-top: 2px solid #dadada; } }
|
||||
|
||||
@media only screen and (prefers-color-scheme: dark) and (max-width: 768px) {
|
||||
body.colorscheme-auto .navigation #menu-toggle:checked + label > i {
|
||||
color: #424242; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .navigation i {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .navigation i:hover, body.colorscheme-auto .navigation i:focus {
|
||||
color: #42a5f5; }
|
||||
body.colorscheme-auto .navigation .menu-button i:hover, body.colorscheme-auto .navigation .menu-button i:focus {
|
||||
color: #dadada; } }
|
||||
|
||||
body.colorscheme-dark .tabs label.tab-label {
|
||||
background-color: #424242;
|
||||
border-color: #4f4f4f; }
|
||||
|
||||
body.colorscheme-dark .tabs input.tab-input:checked + label.tab-label {
|
||||
background-color: #212121; }
|
||||
|
||||
body.colorscheme-dark .tabs .tab-content {
|
||||
background-color: #212121;
|
||||
border-color: #4f4f4f; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .tabs label.tab-label {
|
||||
background-color: #424242;
|
||||
border-color: #4f4f4f; }
|
||||
body.colorscheme-auto .tabs input.tab-input:checked + label.tab-label {
|
||||
background-color: #212121; }
|
||||
body.colorscheme-auto .tabs .tab-content {
|
||||
background-color: #212121;
|
||||
border-color: #4f4f4f; } }
|
||||
|
||||
body.colorscheme-dark .taxonomy-element {
|
||||
background-color: #424242; }
|
||||
body.colorscheme-dark .taxonomy-element a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-dark .taxonomy-element a:active {
|
||||
color: #dadada; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .taxonomy-element {
|
||||
background-color: #424242; }
|
||||
body.colorscheme-auto .taxonomy-element a {
|
||||
color: #dadada; }
|
||||
body.colorscheme-auto .taxonomy-element a:active {
|
||||
color: #dadada; } }
|
||||
|
||||
body.colorscheme-dark .footer a {
|
||||
color: #42a5f5; }
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .footer a {
|
||||
color: #42a5f5; } }
|
||||
|
||||
body.colorscheme-dark .float-container a {
|
||||
color: #dadada;
|
||||
background-color: #424242; }
|
||||
body.colorscheme-dark .float-container a:hover, body.colorscheme-dark .float-container a:focus {
|
||||
color: #42a5f5; }
|
||||
@media only screen and (max-width: 768px) {
|
||||
body.colorscheme-dark .float-container a:hover, body.colorscheme-dark .float-container a:focus {
|
||||
color: #dadada; } }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body.colorscheme-auto .float-container a {
|
||||
color: #dadada;
|
||||
background-color: #424242; }
|
||||
body.colorscheme-auto .float-container a:hover, body.colorscheme-auto .float-container a:focus {
|
||||
color: #42a5f5; } }
|
||||
@media only screen and (prefers-color-scheme: dark) and (max-width: 768px) {
|
||||
body.colorscheme-auto .float-container a:hover, body.colorscheme-auto .float-container a:focus {
|
||||
color: #dadada; } }
|
||||
|
||||
/*# sourceMappingURL=coder-dark.css.map */
|
||||
@@ -1 +0,0 @@
|
||||
{"Target":"css/coder-dark.css","MediaType":"text/css","Data":{}}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
{"Target":"css/coder.css","MediaType":"text/css","Data":{}}
|
||||
Reference in New Issue
Block a user