Bối cảnh
Gần đây tôi đã cài đặt RHEL 8 mà không nhận ra rằng nó không còn hỗ trợ BTRFS.
Thật không may, tôi có 4 đĩa trong BTRFS RAID10. Tôi không có đủ dung lượng trên các đĩa khác của mình để chứa dữ liệu có trên các đĩa BTRFS, vì vậy việc sao chép tất cả dữ liệu đó ở nơi khác trong khi khởi động từ ổ USB là điều không cần thiết.
Tôi có câu hỏi ban đầu của mình, sau đó là một số câu hỏi tiếp theo liên quan đến các phương pháp mà tôi đã thực hiện nhưng không thành công. Vui lòng chỉ tập trung vào phần "làm thế nào để BTRFS hoạt động" của vấn đề này, mặc dù tôi tò mò muốn tìm hiểu về các vấn đề khác nếu bạn có câu trả lời cho bất kỳ phần nào của vấn đề này.
Câu hỏi 1
- Có cách nào (tương đối) dễ dàng để BTRFS hoạt động trên RHEL8 không?
Không gian người dùng btrfs-progs
Nỗ lực đầu tiên của tôi để thực hiện công việc này là biên dịch và cài đặt btrfs-progs
với những điều sau đây:
# Cài deps
sudo dnf cài đặt libuuid-devel libblkid-devel lzo-devel zlib-devel libzstd-devel e2fsprogs-devel e2fsprogs-libs e2fsprogs libgcrypt-devel libsodium-devel libattr-devel
# Cài deps cho doc gen
Sudo dnf cài đặt asciidoc xmlto source-highlight
# Bản phát hành mới nhất của Shallow-clone
git clone --depth 1 --branch v5.14.1 https://github.com/kdave/btrfs-progs.git
cd btrfs-progs
công tắc git -c v5.14.1
# Xây dựng
# --disable-zoned vì tính năng đó cần kernel >=5.10
xuất CFLAGS="-O3 -pipe -frecord-gcc-switches -mtune=native -march=native"
xuất CPPFLAGS=$CFLAGS
xuất SODIUM_CFLAGS=$CFLAGS
xuất ZSTD_CFLAGS=$CFLAGS
xuất ZLIB_CFLAGS=$CFLAGS
xuất UUID_CFLAGS=$CFLAGS
xuất PYTHON_CFLAGS=$CFLAGS
./autogen.sh
./configure --with-crypto=libsodium --disable-zoned
tạo -j12
sudo thực hiện cài đặt
Có vẻ như nó được cài đặt chính xác và người dùng của tôi có thể truy cập được:
$ mà btrfs
/usr/local/bin/btrfs
$ ls -1 /usr/local/bin/ | grep btrfs
btrfs
btrfsck
btrfs-chuyển đổi
btrfs-tìm-root
hình ảnh btrfs
btrfs-map-logic
btrfs-chọn-siêu
btrfstune
fsck.btrfs
mkfs.btrfs
phiên bản $ btrfs
btrfs-progs v5.14.1
Tuy nhiên, root dường như không có /usr/local/bin
trong đường dẫn của nó theo mặc định. Tôi đã thêm xuất PATH+=":/usr/local/bin" sang
/etc/hồ sơvà
/root/.bash_profile, nhưng dường như cả hai đều không tự động lấy nguồn khi sử dụng
sudohoặc khi thả vào một vỏ gốc với
sudo su`.
Khi chỉ định đường dẫn đầy đủ đến tệp nhị phân, nó phàn nàn rằng nó không thể mở /dev/btrfs-kiểm soát
. Truy vấn công cụ tìm kiếm cục bộ của tôi, một số đề xuất cần udev, nhưng công cụ đó đã được cài đặt (có thể bị định cấu hình sai?)
$ phiên bản btrfs sudo
sudo: btrfs: không tìm thấy lệnh
$ sudo /usr/local/bin/btrfs quét thiết bị
Quét hệ thống tập tin Btrfs
CẢNH BÁO: không mở được/dev/btrfs-control, bỏ qua đăng ký thiết bị: Không có tệp hoặc thư mục như vậy
CẢNH BÁO: không mở được/dev/btrfs-control, bỏ qua đăng ký thiết bị: Không có tệp hoặc thư mục như vậy
CẢNH BÁO: không mở được/dev/btrfs-control, bỏ qua đăng ký thiết bị: Không có tệp hoặc thư mục như vậy
CẢNH BÁO: không mở được/dev/btrfs-control, bỏ qua đăng ký thiết bị: Không có tệp hoặc thư mục như vậy
LỖI: có 4 lỗi khi đăng ký thiết bị
Các lệnh BTRFS khác dường như hoạt động:
$ Sudo /usr/local/bin/btrfs hiển thị hệ thống tập tin /dev/sda
Nhãn: 'wdred' uuid: aaaa-bbbb-cccc-dddd-eeee
Tổng số thiết bị sử dụng 4 byte FS 2,13TiB
devid 1 kích thước 5,46TiB đã sử dụng đường dẫn 1,07TiB /dev/sda
devid 2 kích thước 5,46TiB đã sử dụng đường dẫn 1,07TiB /dev/sdc
devid 3 kích thước 5,46TiB đã sử dụng đường dẫn 1,07TiB /dev/sdb
devid 4 kích thước 5,46TiB đã sử dụng đường dẫn 1,07TiB /dev/sdd
Tuy nhiên, tôi đã ngại gắn kết các phân vùng hoặc thực hiện bất kỳ thao tác nào trên chúng do lỗi trên, vì sợ rằng các thành phần bị thiếu của nó sẽ khiến dữ liệu của tôi bị xáo trộn.
Câu hỏi 2, 3, 4
- Có an toàn không khi thử sử dụng btrfs để gắn các đĩa do các lỗi trên?
- Có chuyện gì với
/dev/btrfs-kiểm soát
lỗi trên quét thiết bị btrfs
?
- Làm thế nào tôi có thể nhận được
sudo
và sudo su
có /usr/local/bin
trong đường dẫn của nó theo mặc định?
Mô-đun hạt nhân BTRFS
Tôi tự hỏi liệu có thể tốt hơn nếu biên dịch một mô-đun hạt nhân hay không, nhưng hầu như không có kinh nghiệm hack hạt nhân, mọi thứ trở nên tồi tệ.
Có vẻ như tôi cần phải thiết lập CONFIG_BTRFS_FS=m
trong cấu hình hạt nhân của tôi để bắt đầu. Nó hiện không có ở đó và tôi dường như nhớ mình có thể làm điều này trong menuconfig
.
$ grep "BTRFS" /boot/config-4.18.0-305.19.1.el8_4.x86_64
# CONFIG_BTRFS_FS chưa được đặt
Tài liệu RHEL đề cập đến cách tải các mô-đun hạt nhân, v.v., nhưng không đề cập đến cách xây dựng chúng. Tôi đã tham khảo archwiki và cố tải xuống hạt nhân RHEL8 từ trang Red Hat. Trang tải xuống cho RHEL8 có tab "Nguồn" với tệp .iso 20G. Tôi đã tải xuống, cài đặt nó và thấy nó chứa đầy các tệp .rpm và trông không giống bất kỳ thứ gì giống như kho lưu trữ nguồn nhân linux. Tôi hơi lạc lõng.
sau đó tôi đã đi đến /usr/src/nhân/
, đã khởi tạo một git repo vì sợ rằng tôi sẽ ghi đè một thứ gì đó quan trọng, và tiếp tục cố gắng tìm ra cách xây dựng mô-đun hạt nhân hoặc thay đổi mọi thứ trong menuconfig.
$ cd /usr/src/kernels/4.18.0-305.19.1.el8_4.x86_64
$ sudo su
# git init
# git thêm -A
# git commit -m "Hạt nhân chưa sửa đổi"
# làm ông chủ
Tập lệnh HOSTCC/cơ bản/bin2c
tập lệnh/kconfig/conf --syncconfig Kconfig
arch/x86/Makefile:184: *** Trình biên dịch thiếu hỗ trợ asm-goto.. Dừng lại.
thực hiện: *** [Tệp tạo tệp: 1361: _clean_arch/x86] Lỗi 2
Thiếu hỗ trợ asm-goto, internet gợi ý rằng tôi có thể cần elfutils-libelf-devel
nhưng tôi dường như đã có điều đó.
Đối với funzies, tôi đã thử xây dựng nó với kêu vang
và với gcc-toolset-10
, nhưng cả hai đều có cùng một lỗi.
câu hỏi 5
- Bất kỳ ý tưởng tại sao
Trình biên dịch thiếu hỗ trợ asm-goto
?
- Tài nguyên tốt về cách xây dựng mô-đun hạt nhân/hạt nhân vá/sửa đổi hạt nhân hệ thống của bạn là gì?
Thông tin hệ thống
$ uname -a
Linux rhel 4.18.0-305.19.1.el8_4.x86_64 #1 SMP Thứ ba ngày 7 tháng 9 07:07:31 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (GCC) 8.4.1 20200928 (Mũ đỏ 8.4.1-1)
$ scl chạy gcc-toolset-10 'gcc --version'
gcc (GCC) 10.2.1 20201112 (Mũ đỏ 10.2.1-8)
$ clang --version
clang phiên bản 11.0.0 (Mũ đỏ 11.0.0-1.module+el8.4.0+8598+a071fcd5)
Cảm ơn đã đọc đến đây! Bất kỳ trợ giúp được đánh giá cao.